KVM:仮想ゲストにネットワーク接続がありません。

KVM:仮想ゲストにネットワーク接続がありません。

仮想ブリッジインターフェイス(virbro)を使用するように仮想ゲストを設定しましたが、ネットワーク接続がありません。ホストコンピュータはAlma 8.6を実行します。

以下は、ホストシステムの現在のネットワーク接続のリストです。

# nmcli con show
NAME    UUID                                  TYPE      DEVICE
enp3s0  e41b3cfe-222d-49c1-8636-6457b0b71ade  ethernet  enp3s0
virbr0  970bbdf5-05de-4906-98c8-11d867dcf143  bridge    virbr0
vnet0   6aa2549a-8770-40d4-8545-60387c365436  tun       vnet0

現在のシステムで構成されているデバイスは次のとおりです。

# nmcli device show
GENERAL.DEVICE:                         enp3s0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         B8:AE:ED:D9:02:10
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     enp3s0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         172.29.225.10/24
IP4.GATEWAY:                            172.29.225.254
IP4.ROUTE[1]:                           dst = 172.29.225.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 172.29.225.254, mt = 100
IP4.DNS[1]:                             172.29.240.3
IP4.DNS[2]:                             172.29.240.1
IP4.DNS[3]:                             172.29.240.2
IP6.ADDRESS[1]:                         fe80::baae:edff:fed9:210/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 1024

GENERAL.DEVICE:                         virbr0
GENERAL.TYPE:                           bridge
GENERAL.HWADDR:                         FE:54:00:42:C4:1B
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     virbr0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:                         192.168.122.1/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.122.0/24, nh = 0.0.0.0, mt = 425
IP6.ADDRESS[1]:                         fe80::fc54:ff:fe42:c41b/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 256

GENERAL.DEVICE:                         vnet0
GENERAL.TYPE:                           tun
GENERAL.HWADDR:                         FE:54:00:42:C4:1B
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected (externally))
GENERAL.CONNECTION:                     vnet0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/3
IP4.GATEWAY:                            --
IP6.ADDRESS[1]:                         fe80::fc54:ff:fe42:c41b/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 256

GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          10 (unmanaged)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --
IP6.ADDRESS[1]:                         ::1/128
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = ::1/128, nh = ::, mt = 256

brctlはブリッジを示しています

# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.fe540042c41b       yes             vnet0

仮想ネットワークを一覧表示すると、デフォルトで無効になっています。

# virsh net-list --all
 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes

ゲストの IP 構成です。

$ ifconfig
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.29.225.11  netmask 255.255.255.0  broadcast 172.29.225.255
        inet6 fe80::5054:ff:fe42:c41b  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:42:c4:1b  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 117  bytes 8644 (8.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ホストまたはゲートウェイをpingできません。

答え1

あなたが訪問者のために選択したIPアドレスによると、あなたが探しているようです。ブリッジ仮想マシンのためのネットワーク接続ソリューションです。

これは、物理ネットワークインターフェイスがブリッジに接続されておらず、システムが次のように構成されていないためです。路線enp3s0間のトラフィックが増加するvirbr0と、仮想マシンは外部世界と通信できなくなります。

ルーティングを有効にするには、VMとは異なるIPアドレス範囲を使用するか、VMホストでNAT /マスカレーディングを使用する必要があり、VM用に選択したIPアドレスはおそらくそれをしたくないことを意味します。

(VMware仮想化に精通している場合は、ブリッジを仮想スイッチとして考えてください。)

ホストに新しいブリッジインターフェイスを作成し、ホストenp3s0システムの物理インターフェイスをブリッジに割り当て、ホストのIP設定をインターフェイスからブリッジインターフェイスenp3s0に移動する必要があります。その後、KVMに代わりに仮想マシンの仮想ネットワークインターフェイスをそのブリッジに接続するように指示できますvirbr0

物理インターフェイスではなくブリッジにホストのIPアドレスを設定すると、ホストが外部物理ネットワークとホスト内部の仮想マシンと通信するときに同じIPアドレスを使用できます。ホストのIPアドレスがインターフェイスに直接設定されている場合、enp3s0そのIPアドレスは外部の物理ネットワークでのみ使用でき、インターフェイスがenp3s0ブリッジに接続すると動作が停止する可能性があります。

ブリッジされたトラフィックをブロックするルールがないと仮定すると、仮想ebtablesマシンは物理ネットワークにアクセスできます。


したがって、virbr0RHEL 8 スタイルのデフォルト値が設定されました。つまり、ネットワークセグメントにVMを置き、192.168.122.0/24NATモードから出るネットワーク接続のみを許可します。明らかに、これはあなたが望むものではありません。したがって、最初のステップは新しいブリッジを作成して物理ネットワークインターフェイスを制御することです。

nmcli c add type bridge con-name bridge0 ifname bridge0
nmcli c modify enp3s0 master bridge0  # this will break host's network connectivity!

次に、ホスト IP 構成をブリッジに再適用します。固定IPを使用しているとします。 DHCPを使用している場合は、それを修正する必要があります。

nmcli c mod bridge0 ipv4.addresses 172.29.225.10/24
nmcli c mod bridge0 ipv4.gateway 172.29.225.254
nmcli c mod bridge0 ipv4.dns 172.29.240.3,172.29.240.1,172.29.240.2
nmcli c mod bridge0 ipv4.dns-search domain.example
nmcli c mod bridge0 ipv4.method manual
nmcli c up bridge0        # this should restore host's network connectivity

これで、ホストの物理ネットワーク接続が以前のように機能し(ファイアウォールルールを更新する必要があるかもしれません)、仮想bridge0マシンの接続ポイントとして機能し、着信および発信接続を許可する必要があります。

次に、次のbridge0コマンドを使用するように仮想マシンを変更しますvirbr0

virt-xml your-VM --edit --network bridge=bridge0
virsh start your-VM

これで、物理と仮想の両方のメンバーとしてマークする必要がbrctlあります。とも表示する必要があり、何も表示してはいけません。enp3s0vnet0bridge0ip link show master bridge0enp3s0vnet0ip link show master virbr0

vnet0仮想マシンのホストに「バックエンド」と表示されますかenp1s0?)

これで、仮想マシンは着信および発信接続に対して完全な接続を持つようになります。

関連情報