
私は、LAN に有線接続されたホスト上で仮想マシンを実行しています。ホストはローカル ネットワーク上に表示されますが (Wi-Fi で接続された他のホストも同様)、VM ゲストは表示されません。これは、VM ゲストがホストから NAT されたためでした。VM ゲストはインターネットや LAN 上の他のサーバーにはアクセスできますが、他のサーバーは VM ゲストにアクセスできませんでした。これは理にかなっています。私が実現したいのは、ゲスト VM がホストのように直接有線接続されているかのようにネットワーク上に表示されることです。何が足りないのか、どうしてもわかりません。
基本的なホーム ネットワークをセットアップしました。次の図のようになります。
- Netgear Nighthawk wifi/ルーター
- ルーターに有線接続された Intel NUC ホスト
- Ubuntu サーバー OS
- KVM/QEMU 仮想化
最初に、次のように NAT 構成で VM をセットアップしました (デフォルトのネットワークは NAT ブリッジ ネットワークです)。
上記はうまく機能しましたが、やはり LAN 上の他のデバイスから VM にアクセスできませんでした (VM が NAT されていたため)。
次に、各 VM が独自の IP を取得し、次のことができるように、ルーティング構成を設定しようとしました。
- インターネットにアクセスする
- LAN上の他のホストからアクセス可能であること
ただし、上記の設定では、VM はインターネットにアクセスできず、ネットワーク上の他のホストからもアクセスできません。これは、ホストの背後にある DMZ に何らかの方法で設定した場合とほぼ同じです。
私が読んだ限りでは、ルーティング構成 (上の画像のように virbr3 経由) を設定すると、ホスト上に「ルーティング」タイプの仮想ネットワークが作成され、ホストが通過するようになります。ホストの ARP テーブルを見ると、ホストが VM ゲストを認識していることがわかります。
Netgear ルーターにログインすると、VM ゲストが有線接続としてリストされるはずですが、リストされていません。ルーターにアクセスして、VM ゲストの IP (および VM ゲストの MAC アドレス) の予約済み IP アドレスを手動で追加し、その IP のネットワーク要求が適切にルーティングされると考えましたが、そうではありません。ホストは VM を認識しているものの、ルートを正しくアドバタイズしておらず、ルーターはゲスト VM を認識していないため、LAN 上の別のホストからゲストの IP に ping を実行しようとしても、ルーターは送信先がわからないかのようです。この問題を解決する方法について何か提案はありますか?
編集
1 つ足りないステップは、NetGear ルーターに静的ルートを追加して、VM に関連付けられた IP アドレス (eth0 ゲートウェイ経由) へのリクエストをどこに転送するかをルーターが認識できるようにすることでした。これで、ネットワーク上の他のホストから VM に ping を実行できるようになりました。これは大きな前進です。残る問題は、VM がインターネット (google.com など) にアクセスできないことです。
編集2
traceroute google.com
ゲスト VM から の出力は次のようになります。
192.168.100.1 はローカル ゲートウェイです。192.168.1.1 は
私のワイヤレス ゲートウェイだと思います。この呼び出しを行うのは、ホストと、LAN に接続されている Mac 上でこれがデフォルト ゲートウェイとして表示されるためです。