web-dev-qa-db-ja.com

ゲストネットワークがDebian Jessieホストサーバーで機能しないKVM with br0ブリッジネットワーク

GUESTSネットワークがまったく機能していません。つまり、ゲストはホストまたはLANゲートウェイにpingを実行できません。

  • 私はすでにbr0ブリッジを作成しています。また、brctlは、vnet0がKVMによってゲストの起動時にbr0に適切に追加されたことを示します
  • Ip_forwardを1に設定しました
  • Iptablesがオフになっていて、インストールされていなくても、ゲストはブリッジドbr0を介してルーター/ LANに直接アクセスする必要があるだけなので、必要ありません。

Centos Hostを備えた他のシステムでこの設定を使用していますが、debianを初めて使用するので、忘れていたことがわからない場合があります。

ホストネットワークは正常に機能しているようです。eth0にはIPがなく、br0にはeth0が以前使用していたIPがあります。 brctl showコマンドは、ゲストがオフの場合はeth0をスレーブ化してbr0を表示し、ゲストがオンの場合はeth0とvnet0の両方を表示します


VIRTIOからRTLネットワークインターフェイスに変更するだけで機能します。これは、「ハイパーバイザーのデフォルト」を選択するのと同じことです。また、lsmod | grep virtioの出力

virtio_pci             17389  0
virtio_net             26553  0
virtio_blk             17341  0
virtio_ring            17469  3 virtio_blk,virtio_net,virtio_pci
virtio                 13058  3 virtio_blk,virtio_net,virtio_pci

Modprobe virtioを使用してvirtioを手動で追加する必要がありましたが、それでも問題は解決しませんでした。 modprobe virtioなどでカーネルモジュールを追加した後、再起動しませんでしたが、libvirtdとvirt-managerを再起動しました

正常に動作していますが、virtioでは動作しません。カーネルに潜在的な問題はありますか?カーネル構成を確認するにはどうすればよいですか、これはuname -a出力のあるDebian Jessieです

Linux vmserver 3.14-2-AMD64#1 SMP Debian 3.14.15-2(2014-08-09)x86_64 GNU/Linux

間瀬さん、ありがとうございます。最初の投稿を片付けました。/sys/devices/virtioフォルダーはゲストに存在しないが、/ sys/devices/virtual/net/loは存在するが、/ sys/devices/virtual/net/eth0は存在しないことに気づきました

centos 6.4 "guest"のifconfigは、eth0はRXが0バイト、TXが14kBであることを示しているので、通信を受信して​​いないと思います。私は簡単には諦めませんが、ゲストとホストの両方でカーネルを最初から再構築することを楽しみにしていませんでした。

2
htfree

まあ私は問題を理解したようです。診断するために、WindowsゲストとWindows virtioドライバーをインストールしました。 Windowsでvirtioネットワーキングを使用できたため、Linuxゲストカーネルまたはカーネルドライバーに問題があります。Linuxゲストにはvirtio pci/blockなどのカーネルモジュールがロードされているため、カーネルの再コンパイルが必要になる可能性があります。したがって、「ホスト」側に問題はありませんでした。

また、私の研究では、ゲストまたはホストのどちらを参照しているかを指定せずに仮想化について常にアドバイスをしている人を見つけるのは面倒でした。実際、このため、ロードしている人には混乱がたくさんあります。ゲストなどの代わりにホスト上のvirtioカーネルモジュール...(私はそれらを両方にロードしましたが、不必要にホストにロードしました...しかしどちらにしても関係ありません、私の問題を修正しません、私はCentOS LinuxゲストでLinuxカーネルを再コンパイルします。)

1
htfree

Iptablesでマスカレードを有効にしましたか?

確認する

iptables -L -t nat

次のようなものが表示されます。

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  10.0.0.0/24          !10.0.0.0/24       

IptablesにMASQUERADEが表示されない場合は、次のコマンドを使用して許可できます。

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE

もちろん、IP範囲を使用しているIP範囲に置き換えます。

1
feitingen