配置:
# 注意:如果iptables开着,需要清空规则,否则默认规则会阻挡
# 先清空规则(慎重)
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
# 在服务端开启端口转发nat功能,表示开启 IP 数据包的转发功能,61
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
# 在服务端添加允许SNAT(源地址转换)规则,172转换为10.0.0.7出去上网,61
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.61
iptables-save
# 在其他客户端网关指向61,并配置DNS
[root@web01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=none
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=172.16.1.7
PREFIX=24
GATEWAY=172.16.1.61
DNS1=8.8.8.8
[root@web01 ~]# cat /etc/resolv.conf
nameserver 223.5.5.5
# 重启网卡后,ping外网测试
[root@web01 ~]# ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=127 time=8.90 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=127 time=7.52 ms
注意:
# 注意,如果公网ip是不固定的,第二步SNAT(源地址转换)换成以下设置
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
检查:
# 检查服务端,有没有开启NAT端口转发,有没有规则
sysctl -p
iptables-save
# 检查客户端端,有没有网关,有没有路由
[root@web02 ~]# ip r
default via 172.16.1.7 dev ens36 proto static metric 101
172.16.1.0/24 dev ens36 proto kernel scope link src 172.16.1.8 metric 101
[root@web02 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.1.7 0.0.0.0 UG 101 0 0 ens36
172.16.1.0 0.0.0.0 255.255.255.0 U 101 0 0 ens36