私は VirtualBox 5.0.20 を使用しています。ホスト マシンは OS X 10.11.5 (El Capitan) を実行している MacBook です。ゲスト OS は 64 ビット Arch Linux です。ISO から Arch をインストールしたとき、ゲストのインターネット接続は正常でした。しかし、インストールしたシステムを起動すると、インターネットに接続できなくなりました (たとえば、8.8.8.8 に ping すると、いつまでもハングします)。
仮想マシンには、ブリッジとホスト専用の 2 つのネットワーク アダプタがあります。ブリッジを NAT アダプタに変更したり、ブリッジをホストのワイヤレス インターフェイスに接続したり、別のブリッジをホストの有線インターフェイスに接続したりしてみました。いずれの設定でも、ゲストはインターネットにアクセスできません。
ゲスト OS では、systemd-networkd.service と systemd-resolved.service が有効になっています。私が知る限り、他のネットワーク サービスは有効になっていません。可能であれば、別のサービスに切り替えるのではなく、これらのサービスを使い続けたいのですが、これらのサービスに問題の根本原因となる固有の欠陥がある場合は切り替えます。
ゲスト OS 内では、ブリッジ アダプタのネットワーク ファイルの内容は次のようになります。
[root@arch64 ~]# cat /etc/systemd/network/bridged.network
[Match]
Name=enp0s3
[Network]
DHCP=ipv4
ホストオンリーアダプタのネットワークファイルの内容は次のとおりです。
[root@arch64 ~]# cat /etc/systemd/network/host-only.network
[Match]
Name=enp0s8
[Network]
Address=192.168.56.2/24
Gateway=192.168.56.1
ブリッジ アダプターは DHCP リースを正常に取得し、さらに LAN 上のホストに ping を実行できますが、LAN のルーターを超えて ping を実行することはできません。ホストのインターネット接続は正常です。
答え1
その答えは私が受け取ったヒントから来ていますUnix & Linux StackExchangeで同じ質問がされました。
私の設定では、2 つの systemd ネットワーク ユニット ファイルがありました。1 つはブリッジ アダプタ用、もう 1 つはホスト専用アダプタ用です。仮想マシンはネットワーク間を移動するラップトップ上にあるため、ブリッジ アダプタには動的アドレスを割り当て、ホスト専用アダプタには静的アドレスを割り当てて、手動でアドレスを決定することなく ssh などでアクセスできるようにしたかったのです。
しかし、ネットワーク ユニット ファイルを作成する際に、Wiki チュートリアルで見つけたものを盲目的にコピーしました。1 つのセクションでは動的アドレスをすばやく設定する方法が説明され、もう 1 つのセクションでは静的アドレスをすばやく設定する方法が説明されていました。明らかに、チュートリアルでは、どちらか一方のシンプルな設定を使用することが想定されており、両方を並行して使用することは想定されていませんでした。これはより複雑なシナリオです。
ホストオンリー アダプタのネットワーク ファイルには Gateway オプションが指定されていましたが、ブリッジ アダプタのファイルには指定されていませんでした。そのため、ホストオンリー アダプタのゲートウェイが仮想マシンからのトラフィックの優先ルートになったようです。このオプションをネットワーク ファイルから削除すると、問題は解決しました。
修正後のホストオンリー アダプター ネットワーク ファイル (ゲートウェイ オプションを削除):
[root@arch64 ~]# cat /etc/systemd/network/host-only.network
[Match]
Name=enp0s8
[Network]
Address=192.168.56.2/24