首页 > 代码库 > 老男孩教育每日一题-第68天-实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网
老男孩教育每日一题-第68天-实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网
题目
实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网
解答:
echo 1 > /proc/sys/net/ipv4/ip_forward 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
注释说明:
一、参数说明:
-t:指定对应的iptables表
-A:新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则
-s:用来比对封包的来源 IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,例如:-s 192.168.0.0/24,比对 IP 时可以使用 ! 运算子进行反向比对,例如:-s ! 192.168.0.0/244.
-j:参数用来指定要进行的处理动作
SNAT:源地址转换,目标地址不变,重新改写源地址,并在本机建立NAT表项,当数据返回时,根据NAT表将目的地址数据改写为数据发送出去时候的源地址,并发送给主机
--to-souce:意思就是将-s后面的地址,转换成--to后面的地址,这个就是地址转发的作用(NAT)
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中增加如下内容net.ipv4.ip_forward = 1,然后执行:sysctl -p
三、防火墙规则命令说明
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
注释:
在解释这条规则之前,首先提出一个问题,如果不是固定的124.32.54.26怎么办?
解答:我们都知道当我们使用联通或者电信上网的时候,一般它都会在每次你开机的时候随机生成一个外网的IP,意思就是外网地址是动态变换的。这时我们就要将外网地址换成 MASQUERADE(动态伪装):它可以实现自动寻找到外网地址,而自动将其改为正确的外网地址。
注意:地址伪装并不适用于所有的地方 相信大家看了上面这个问题之后,就明天这条规则的意思了!
备注
今天是每日一题陪伴大家的__第68天__,期待你的进步。
对于题目和答案的任何疑问,请在博客评论区留言。
往期题目索引
http://lidao.blog.51cto.com/3388056/1914205
本文出自 “李导的博客” 博客,请务必保留此出处http://lidao.blog.51cto.com/3388056/1936550
老男孩教育每日一题-第68天-实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网