Linux

路由到其他子網會導致錯誤的 ARP 請求

  • July 30, 2012

我想通過 IP 手動設置到子網 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 和 SNAT 配置路由。我啟用了 ip-forwarding 並嘗試了不同的瘋狂的東西,比如:

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

這些都沒有改變路由。誰能給我任何建議如何在不發送備用/錯誤 ARP 數據包的情況下更改到該子網的路由?

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 是網關

據我了解您的問題,94.23.94.161是您希望將數據包路由到的 LAN 上某些機器的 IP 地址95.168.0.0/16。如果這是正確的,那麼您的兩個路由語句中的任何一個都可以完成這項工作。只需擺脫別名eth0:0介面即可。這是分配給這台機器的**本地IP 地址。

引用自:https://serverfault.com/questions/412253