IP_FORWARD转发
ip地址分公有地址和私有地址,
public address是由INIC(internet network information center)负责,这些ip地址分配给注册并向INIC提出申请的组织机构。通过它访问internet.private address是属于非注册地址,专门为组织内部使用,
private ip address是不可能直接用来跟WAN通信的,要么利用帧来通信(FRE帧中继,HDLC,PPP),要么需要路由的NAT功能把私有地址转换为一个公有ip!
选择一台电脑(有两个网卡或者用单网卡然后用软件虚拟多一个网卡)充当网关,一个网卡(eth0)连接外网ISP,另一网卡(eth1)连接内网(即局域网)。局域网内的ip地址都是私用地址,只能在内部使用,在公网上是不可见的,所以局域网电脑要上网必须修改ip,这就是网关的工作。
工作原理:
内网主机向公网发送数据包时,由于目的主机跟源主机不在同一网段,所以数据包暂时发往内网默认网关处理,而本网段的主机对此数据包不做任何回应。由于源主机ip是私有的,禁止在公网使用,所以必须将数据包的源发送地址修改成公网上的可用ip,这就是网关收到数据包之后首先要做的工作--ip转换。
然后网关再把数据包发往目的主机。目的主机收到数据包之后,只认为这是网关发送的请求,并不知道内网主机的存在,也没必要知道,目的主机处理完请求,把回应信息发还给网关。
网关收到后,将目的主机发还的数据包的目的ip地址修改为发出请求的内网主机的ip地址,并将其发给内网主机。这就是网关的第二个工作--数据包的路由转发。内网的主机只要查看数据包的目的ip与发送请求的源主机ip地址相同,就会回应,这就完成了一次请求。
出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包。这通常就是路由器所要实现的功能。
配置Linux系统的ip转发功能,首先保证硬件连通,然后打开系统的转发功能
less /proc/sys/net/ipv4/ip_forward,该文件内容为0,表示禁止数据包转发,1表示允许,将其修改为1。可使用命令
echo "1" > /proc/sys/net/ipv4/ip_forward 修改文件内容,重启网络服务或主机后效果不再。若要其自动执行,可将命令
echo "1" > /proc/sys/net/ipv4/ip_forward 写入脚本/etc/rc.d/rc.local 或者
在/etc/sysconfig/network脚本中添加 FORWARD_IPV4="YES"
要想永久修改IP转发,需要修改/etc/sysctl.conf文件,修 改下面一行的值:
net.ipv4.ip_forward = 1 修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效:
sysctl -p /etc/sysctl.conf 进行了上面的配置后,IP转发功能就永久使能了。
转载于:https://blog.51cto.com/6226001001/1557355
IP_FORWARD转发相关推荐
- linux设置mysql防火墙端口映射_Linux防火墙默认是关闭3306端口,iptables实现端口转发、端口映射及双向通路...
iptables实现端口转发.端口映射及双向通路其实不难配置,看下文: 允许数据包转发: #echo 1 > /proc/sys/net/ipv4/ip_forward 转发TCP 8081到x ...
- linux 防火墙 443端口映射,linux防火墙实现端口转发、端口映射及双向通路
iptables实现端口转发.端口映射及双向通路其实不难配置,看下文: 允许数据包转发: #echo 1 > /proc/sys/net/ipv4/ip_forward 转发TCP 8081到x ...
- Docker(十四):Docker:网络模式详解
Docker作为目前最火的轻量级容器技术,牛逼的功能,如Docker的镜像管理,不足的地方网络方面. Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创建三个网络 ...
- Docker网络详解——原理篇
前言 当你开始大规模使用Docker时,你会发现需要了解很多关于网络的知识.Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理.然而,Docker同样有着很多不完 ...
- openstack学习笔记五 多节点部署之 rabbitmq信息中枢与元数据
元数据 rabbitmq信息中枢 rabbitmq信息中枢 所有组件通信的时候 实用 AMQP 高级消息队列 qpid rabbitmq 端口5672 sll加密 5671 1 2 ...
- Docker的4种网络模式
我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定. container模式,使 ...
- linux内核网络协议栈--接收流程及函数(九)
本章来看下,数据是如何从网络中接收并最后到达应用程序的. 网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息. 1.链路层 包到达机器的物理网卡时候触发一个中断,并将通过 ...
- linux 内核网络协议栈--IP层开始直到包被处理(三)
先看看ip头结构: struct iphdr struct iphdr {#if defined(__LITTLE_ENDIAN_BITFIELD) // 小端__u8 ihl:4, // 首部长度( ...
- Tomcat原理详解和各种集群的实现
注意:本篇博文涉及的知识内容如下,实验中所用的系统环境为RHEL6.4. 1.Java基础知识讲解 2.Tomcat的安装和实现 3.通过apache的mod_proxy模块代理并实现Tomcat负载 ...
最新文章
- Openstack的主要组件
- 如何将adb shell里面查到的文件复制到本地电脑
- 基于Continuous Conditional Neural Fields for Structured Regression的人脸特征点检测和头部姿态估计
- 老赖凭本事骗钱,你有本事不被骗吗?
- 建立新冠病毒群体免疫屏障——数学建模
- Python正则表达式之元字符详解(1)
- 遇到的Ajax相关问题
- Django的APP,视图,url和模板
- count 数字计数(bzoj 1833)
- ruoyi 多模块部署_大数据时代,独立部署的商城系统具有哪些优势?
- 【Alpha 冲刺】 1/12
- 639 页《深度学习:Deep Learning》硬核课程 PPT 下载
- python 对一个函数执行速度控制的演示
- 什么是领域模型(domain model)?贫血模型(anaemic domain model) 和充血模型(rich domain model)有什么区别...
- UCOS操作系统——任务管理(二)
- 一层神经网络实现鸢尾花数据集分类
- java手机振动软件_Android实现手机震动效果
- Introduction to SPM statistics
- 教程:建立自己的私有云存储
- Vue导入TradingView(无charting_library.min.js文件的包导入方法)