具有多個介面的 Ping 系統

具有多個介面的 Ping 系統

設定:

  • 主機:macOS,IPv6 位址 - 2002::3/64 (vmnet1)
  • 訪客電腦:在 vmware 內執行 Ubuntu,IPv6 位址 - 2002::2/64 (eth0) 和 2001::1/64 (tun0)

配置:

  • 在 Ubuntu 上啟用 IPv4 和 IPv6 轉送
  • 在 macOS 上新增了路線:sudo route add -inet6 2001::/64 -interface vmnet1

配置設定圖

問題:我無法ping6 2001::1從 macOS 存取。不過,我有能力ping6 2002::2。我嘗試過 VMware 的“與我的 Mac 共享”、“自動檢測”以及“專用於 Mac”設定。

答案1

透過 vmnet1 路由 2001::/64 是不夠的;你還必須指定哪個網關在本例中,在 vmnet1 上,封包應發送至 – 2002::2。

如果沒有網關規範,來源將嘗試使用 ARP(對於 IPv4)或 NDP(ICMPv6 鄰居發現)直接解析目標。然而,IPv6 通常將位址視為屬於各個介面或連結,而不是整個主機 - 因此,如果 IPv6 主機透過未分配該位址的介面到達,則 IPv6 主機通常會忽略鄰居發現請求。(這類似於 IPv4 的 Linux arp_ignore=1。)

因此,Ubuntu 系統不會回應透過 eth0 到達的 2001::1 的 NDP 查詢,因為 eth0 上沒有這樣的位址 - 它僅在 tun0 上分配。但是,它將回應 2002::2 的 NDP 查詢,因此您的路線應如下所示:

route add -inet6 2001::/64 2002::2

(也就是說,一旦封包透過 L2 成功路由到正確的 MAC 位址,Ubuntu 系統將要接受並識別 IP 標頭(L3)中的 2001::1,因為該位址在其路由表中被標記為本地。

相關內容