《运维案例:实现网段之间的主机通过指定外网IP共享上网》要点:
本文介绍了运维案例:实现网段之间的主机通过指定外网IP共享上网,希望对您有用。如果有疑问,可以联系我们。
172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT –to-source 124.32.54.26
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
一、参数说明:
1.-t:指定对应的iptables表
2.-A:新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则
3.-s:用来比对封包的来源 IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,例如:-s 192.168.0.0/24,比对 IP 时可以使用 ! 运算子进行反向比对,例如:-s ! 192.168.0.0/24
4.-j:参数用来指定要进行的处理动作
5.SNAT:源地址转换,目标地址不变,重新改写源地址,并在本机建立NAT表项,当数据返回时,根据NAT表将目的地址数据改写为数据发送出去时候的源地址,并发送给主机
6.–to-souce:意思就是将-s后面的地址,转换成–to后面的地址,这个就是地址转发的作用(NAT)
7.POSTROUTING:路由之后指定相应的iptables链,意思为在NAT TABLE的路由后改做什么处理
二、规则说明
echo 1 > /proc/sys/net/ipv4/ip_forward
注释:
1.完成nat的实现,数据要经过prerouting—forword–postrouting这3个链,要想实现ip转发,需要将内核参数ip_forward的值改为1,这样允许iptalbes FORWARD.
2.设置ip转发许可
方法一:echo 1 > /proc/sys/net/ipv4/ip_forward
方法二:在内核参数文件/etc/sysctl.conf中增加如下内容,然后执行:sysctl -p
net.ipv4.ip_forward = 1
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT –to-source 124.32.54.26
注释:
1.当172.16.1.0/24网段的IP想访问外网的时候,iptables会将源地址进行转换成124.32.54.26,实现上外网
2.SNAT,目前大多都是解决内网用户用同一个公网地址上网的情况(具体请看上面参数说明)
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
注释:
1.在解释这条规则之前,首先提出一个问题,如果不是固定的124.32.54.26怎么办?
解答:我们都知道当我们使用联通或者电信上网的时候,一般它都会在每次你开机的时候随机生成一个外网的IP,意思就是外网地址是动态变换的.这时我们就要将外网地址换成 MASQUERADE(动态伪装):它可以实现自动寻找到外网地址,而自动将其改为正确的外网地址.
注意:地址伪装并不适用于所有的地方哦!
相信大家看了上面这个问题之后,就明白这条规则了!
该案例来自老男孩教育
转载请注明本页网址:
http://www.vephp.com/jiaocheng/2728.html