複数のインターフェースを備えた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

構成セットアップ図

問題: macOS からはできませんping6 2001::1。ただし、 はできますping6 2002::2。VMware の「Mac と共有」、「自動検出」、および「Mac 専用」設定を試しました。

答え1

2001::/64をvmnet1経由でルーティングするだけでは不十分です。どのゲートウェイこの場合、vmnet1 ではパケットは 2002::2 に送信される必要があります。

ゲートウェイの指定がない場合、送信元は ARP (IPv4 の場合) または NDP (ICMPv6 近隣探索) を使用して宛先を直接解決しようとします。ただし、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 を受け入れて認識します。

関連情報