指定某IP无法上网

环境及症状描述:

局域网内某机器重装后,不能访问外网。

IP被手动设定为192.168.1.2,内网一切畅通,网关也能正常访问。ping不通路由器的公网地址。设置为其它IP地址或DHCP后则一切正常。内外网均无问题。

环境:使用iptables做防火墙来给内部所有机器做NAT访问公网。

排除了所有问题后,最终还是定位到Iptables上来,执行"#iptables -t nat -L -n"后,发现有下面这么一条记录

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       0    --  192.168.1.2          0.0.0.0/0           to:116.*.*.*

这个就很诡异了,俺对iptables不是很熟悉,当时这条命令的用途应该是将所有针对公网IP 116.*.*.*的访问转向到192.168.1.2上,同时由于俺在debian上的网络设置为临时设置,重启后116.*.*.9这个地址丢失了。然后192.168.1.2就没有办法访问公网了。找到可能后执行:

#ifconfig eth0:123 116.*.*.* netmask 255.255.255.248,再测试192.168.1.2机器。一切正常

经查证,应该是下面这这条命令作祟:

iptables -t nat -I POSTROUTING -s 192.168.1.2 -j SNAT --to 116.*.*.*iptables

果然很好很强大。