💻

[備忘]VirtualBox からホストマシンに ping が届かなくなったのでその対策

2024/10/12に公開

[備忘]VirtualBox からホストマシンに ping が届かなくなったのでその対策

ネットワーク初心者なので間違っていることがあれば教えてください!

起きたこと

NIC に NAT を設定しているにも関わらず、VirtualBox で作成した仮想マシン(CentOS7)から、ホスト PC(Windows)のイーサネットアダプタへの ping が通らない

原因

デフォルトゲートウェイの優先度が、ホストオンリー> NAT となっていた

結論

デフォルトゲートウェイの優先度を、NAT >ホストオンリーとすれば OK

調査したこと

ネットワークアダプターの状況

  • アダプター 1...ホストオンリーアダプター / アダプター 2...NAT
  • アダプターをそれぞれオンオフした際の実験結果
    • アダプター 1(ホストオンリーアダプター)だけ ON
      • 仮想マシン → ホスト PC への ping...Destination host unreachable
      • 仮想マシン → ホスト OS(イーサネット アダプター VirtualBox Host-Only Network)への ping...Destination host unreachable
      • ホスト PC の TeraTerm → ゲスト OS への接続...OK
      • ホスト PC の Chrome → ゲスト OS への接続...OK
    • アダプター 2(NAT)だけ ON
      • 仮想マシン → ホスト PC への ping...OK
      • 仮想マシン → ホスト OS(イーサネット アダプター VirtualBox Host-Only Network)への ping...OK
      • ホスト PC の TeraTerm → ゲスト OS への接続...NG
      • ホスト PC の Chrome → ゲスト OS への接続...NG
    • 両方とも(ホストオンリーアダプター, NAT)ON
      • 仮想マシン → ホスト PC への ping...Destination host unreachable
      • 仮想マシン → ホスト OS(イーサネット アダプター VirtualBox Host-Only NetwSDsork)への ping...Destination host unreachable
      • ホスト PC の TeraTerm → ゲスト OS への接続...OK
      • ホスト PC の Chrome → ゲスト OS への接続...OK
    • これらから NAT を通しての通信であれば ping 通る ことがわかった。

ルーティングテーブル

ダメだった時

最優先がenp0s3(アダプター 1/ホストオンリー)になっている(metric 100)。
その次がenp0s8になっている(metric 101)。

[root@testserver ~]# ip route
default via XXX.XXX.XXX.XXX dev enp0s3 proto static metric 100
default via YYY.YYY.YYY.YYY dev enp0s8 proto dhcp metric 101
(省略)

上手くいったとき

最優先がenp0s8(アダプター 2/NAT)になっている(metric 101)。  
その次がenp0s3になっている(metric 102)。

[root@testserver ~]# ip route
default via YYY.YYY.YYY.YYY dev enp0s8 proto dhcp metric 101
default via XXX.XXX.XXX.XXX dev enp0s3 proto static metric 102
(省略)

修正方法

以下のコマンドで metric 値を NAT が優先されるように変更しておけばよい。

sudo ip route add default via YYY.YYY.YYY.YYY dev enp0s8 metric 101
sudo ip route add default via XXX.XXX.XXX.XXX dev enp0s3 metric 102

疑問

ホストオンリーが最優先であった場合に、ホスト OS(イーサネット アダプター VirtualBox Host-Only Network)への pingがDestination host unreachableになっていたのはなぜなのか。。わかったら追記します。

Discussion