运维案例:实现网段之间的主机通过指定外网IP共享上网

社区广播:运维派(Yunweipai.com)是国内最早成立的IT运维社区,欢迎大家投稿,让运维人不再孤寂的成长!

运维需求:

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(动态伪装):它可以实现自动寻找到外网地址,而自动将其改为正确的外网地址。

注意:地址伪装并不适用于所有的地方哦!

相信大家看了上面这个问题之后,就明白这条规则了!

该案例来自老男孩教育

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2017 YUNWEIPAI.COM - 运维派 - 粤ICP备14090526号-3
扫二维码
扫二维码
返回顶部