利用iptables的SNAT功能实现局域网共享上网
Posted On 2018年10月9日
情景介绍:局域网内的5台机器的IP地址分别是
192.168.180.121-node1
192.168.180.122-node2
192.168.180.123-node3
192.168.180.124-node4
192.168.180.125-node5
每台机器都有2块网卡(eth0和eth1),我们上面给出的5个内网IP都是配置在每一台机器的eth0这块网卡上面。
另外,我们将node1这个机器上的eth1网卡配置一个外网IP(119.75.218.76)。
开启node1这台机器的ipv4转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
(就是因为这个忘记了,折腾了好久!)
还有,这个修改在机器重启的时候仍然会失效。要想永久有效,还要把/etc/sysctl.conf文件里边的net.ipv4.ip_forward的值改为1。
修改其他机器的默认网关:
因为要让 node1 这台机器帮我们转发流量,所以,将其他机器的默认网关设置成 node1 的内网IP(也就是192.168.180.121)
在node1 机器上使用iptables 命令进行设置,将其他机器的流量通过这个可以访问外网的机器转发出去:
iptables -F
iptables -X
iptables -Z
这三条命令将防火墙规则清空。
之后,使用下面的命令进行流量转发:
iptables -t nat -A POSTROUTING -s 192.168.180.0/24 -o eth1 -j SNAT –to-source 119.75.218.76
———————
再加 node2,3,4,5的DNS服务器设定。
设定为公共DNS服务器即可。