Linux的内核参数 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,这就是网关的工做。ide

工做原理spa

内网主机向公网发送数据包时,因为目的主机跟源主机不在同一网段,因此数据包暂时发往内网默认网关处理,而本网段的主机对此数据包不作任何回应。因为源主机ip是私有的,禁止在公网使用,因此必须将数据包的源发送地址修改为公网上的可用ip,这就是网关收到数据包以后首先要作的工做--ip转换。而后网关再把数据包发往目的主机。目的主机收到数据包以后,只认为这是网关发送的请求,并不知道内网主机的存在,也不必知道,目的主机处理完请求,把回应信息发还给网关。网关收到后,将目的主机发还的数据包的目的ip地址修改成发出请求的内网主机的ip地址,并将其发给内网主机。这就是网关的第二个工做--数据包的路由转发。内网的主机只要查看数据包的目的ip与发送请求的源主机ip地址相同,就会回应,这就完成了一次请求。orm


出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另外一网卡,该网卡根据路由表继续发送数据包。这一般就是路由器所要实现的功能。ip


修改参数路由

Linux系统缺省并无打开IP转发功能,要确认IP转发功能的状态,能够查看/proc文件系统,使用下面命令: cat /proc/sys/net/ipv4/ip_forward
若是上述文件中的值为0,说明禁止进行IP转发;若是是1,则说明IP转发功能已经打开。
要想打开IP转发功能,能够直接修改上述文件: echo 1 > /proc/sys/net/ipv4/ip_forward
把文件的内容由0修改成1。禁用IP转发则把1改成0。
上面的命令并无保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,须要修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1 修改后能够重启系统来使修改生效,也能够执行下面的命令来使修改生效: sysctl -p /etc/sysctl.conf 进行了上面的配置后,IP转发功能就永久使能了。
it

相关文章
相关标签/搜索