我正在運行兩個 Ubuntu 12.04 實例,它們都無法相互存取。
機器1:
eth0 - 10.0.0.20
eth1 - 10.0.0.30
netstat -nr:
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
機器2:
eth0 - 10.0.0.100
eth1 - 10.0.0.40
netstat -nr:
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
兩台機器只能透過 Internet 相互訪問,而不能透過 VPC(即 LAN)存取。禁用防火牆沒有幫助。機器 1 只能 ping 通 10.0.0.100。機器 2 只能 ping 通 10.0.0.30。我無法透過 LAN 使用 TCP/UDP 協定連接到任何機器。沒有 ACL,機器上的守護程式正在偵聽所有 IP、所有介面。可能是什麼問題呢?
編輯1:
看來問題出在路由表。在刪除機器 2 上的 1 個網路卡並執行一些隨機操作後,我已經解決了機器 1 上的問題。這導致 DHCP 獲得以下規則:
~$ ip rule
0: from all lookup local
32765: from 10.0.0.30 lookup 2
32766: from all lookup main
32767: from all lookup default
~$
我無法在機器 2 上重現此情況,但我可以使用以下命令手動新增規則和路由表:
ip route add default via 10.0.0.1 dev eth0
ip route add default via 10.0.0.1 dev eth1 table 2
ip rule add from 10.0.0.167 lookup 2 prio 1000
我怎樣才能避免手動操作?
答案1
嘗試更具體地添加路線。路由將優先選擇按特異性、度量、然後新增順序排序的第一個符合路由。
例如,在機器1上新增以下路由:
ip route add 10.0.0.40/32 dev eth1 src 10.0.0.30
在機器 2 上:
ip route add 10.0.0.30/32 dev eth1 src 10.0.0.40
您可能想要刪除兩台機器上 eth1 的更通用路由:
ip route del 10.0.0.0/24 dev eth1
由於它們位於 /24 中,因此您應該嘗試將它們置於不同的子網路中,例如,如果兩個 eth1 都位於 10.0.1.0/24 中,則根本不會出現此問題。