题目

实现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

注释说明:

一、参数说明:

  1. -t:指定对应的iptables表

  2. -A:新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则

  3. -s:用来比对封包的来源 IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,例如:-s 192.168.0.0/24,比对 IP 时可以使用 ! 运算子进行反向比对,例如:-s ! 192.168.0.0/244.

  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中增加如下内容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