我想手动设置路由到子网95.168.0.0/16通过IP是一个别名:94.23.94.161。 IP别名是这样设置的:
/sbin/ifconfig eth0:0 94.23.94.161 netmask 255.255.255.255 broadcast 94.23.94.161
起初我尝试过这样的事情:
route add -net 95.168.0.0 netmask 255.255.0.0 gw 94.23.94.161 dev eth0
一切正常,直到我从我的数据中心收到一封电子邮件,发现IP地址发送了错误的ARP数据包:
Wed Jun 6 08:07:15 2012 : arp who-has 95.168.204.130 tell 94.23.94.161 Wed Jun 6 08:37:13 2012 : arp who-has 95.168.204.130 tell 94.23.94.161 Wed Jun 6 09:07:19 2012 : arp who-has 95.168.204.130 tell 94.23.94.161
与他们的支持对话没有任何,现在我仍然试图解决这个问题。 另一个工作的设置(但仍然是发送这些错误的ARP数据包)是:
ip route add 95.168.0.0/16 via 94.23.94.161
我认为这个内部工作是一样的。
接下来我尝试通过iptables和SNATconfiguration路由。 我启用了IP转发,并尝试不同的疯狂的东西,如:
iptables -t nat -A POSTROUTING -s 94.23.94.161 -o eth0 -j SNAT --to-source 95.168.0.0-95.168.255.255 iptables -t nat -A POSTROUTING -s 94.23.94.161 -o eth0 -j SNAT --to-source 95.168.0.0-95.168.255.254 iptables -t nat -A POSTROUTING -s 95.168.0.0/16 -o eth0 -j SNAT --to 94.23.94.161 iptables -t nat -A PREROUTING -p tcp -d 94.23.94.161 -j DNAT --to-destination 95.168.0.0-95.168.255.254
这些都没有改变路由。 任何人都可以给我任何build议如何改变路由到这个子网,而不发送备用/错误的ARP数据包?
据我了解你的问题, 94.23.94.161是你的局域网上的某些机器的IP地址,你想要路由数据包绑定到95.168.0.0/16到。 如果这是正确的,你的两条路线声明中的任何一条都可以完成这项工作。 只要摆脱别名的eth0:0接口即可。 这是分配给本机的本地 IP地址。
ip addr add 94.23.94.161/32 brd 94.23.94.161 dev eth0 ip route add 95.168.0.0/16 src 94.23.94.161 via 176.31.243.253 ip neigth flush
176.31.243.253是网关