其实在Linux下配置网关服务器很简单,如果配置好之后出现无法访问外网的情况,那么可以排查以下情况:
1、防火墙和iptables的服务关掉(firewalld、iptables)
2、清空iptables的规则(iptables -F、iptables -X、iptables -F -t nat、iptables -X -t nat)
3、转发开启(/etc/sysctl.conf-> net.ipv4.ip_forward=1)
通过以上的配置一般可以配置成功。
下面是实验环境:
说明一下,网关可以两个网卡,同样也不一定需要两个网卡,一张网卡也是可以的。
PC1:
eth0:192.168.104.12/255.255.255.0/192.168.104.1,DNS:8.8.8.8
PC2:
eth0:192.168.104.13/255.255.255.0/192.168.104.12,DNS:8.8.8.8
下面是实际配置:
PC1:
# 开启转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# 生效
sysctl -p
# 配置iptables做SNAT,下面有两种方式,推荐用第二种,比较清晰
# 1、使用MASQUERADE
iptables -t nat -I POSTROUTING -j MASQUERADE
# (不需要设置)可以指定哪个网卡
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
# (不需要设置)也可以指定具体的网段做SNAT
iptables -t nat -I POSTROUTING -s 192.168.104.0/24 -j MASQUERADE # 2、(推荐这种)指明SNAT的具体IP
iptables -t nat -I POSTROUTING -j SNAT --to-source 192.168.104.12
# (不需要设置)可以指定哪个网卡
iptables -t nat -I POSTROUTING -o eth0 -j SNAT --to-source 192.168.104.12
# (不需要设置)也可以指定具体的网段做SNAT
iptables -t nat -I POSTROUTING -s 192.168.104.0/24 -j SNAT --to-source 192.168.104.12
PC2:
此时只需要在/etc/sysconfig/network-script/ifcfg-eth0修改GATEWAY=192.168.104.12,也就是修改网关地址。
总结:
1、其实如果你时间过一张网卡的情况时,那么你会发现只要开启了内核转发功能之后不需要配置iptables也是可以行的。
2、当两张网卡是情况,实体机,一张连接外网,一张内网连接交换机,再连接多个子PC,此时iptables就是必须的,且SNAT也必须为外网网卡IP。