仮想ブリッジインターフェイス(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
マシンは物理ネットワークにアクセスできます。
したがって、virbr0
RHEL 8 スタイルのデフォルト値が設定されました。つまり、ネットワークセグメントにVMを置き、192.168.122.0/24
NATモードから出るネットワーク接続のみを許可します。明らかに、これはあなたが望むものではありません。したがって、最初のステップは新しいブリッジを作成して物理ネットワークインターフェイスを制御することです。
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
あります。とも表示する必要があり、何も表示してはいけません。enp3s0
vnet0
bridge0
ip link show master bridge0
enp3s0
vnet0
ip link show master virbr0
(vnet0
仮想マシンのホストに「バックエンド」と表示されますかenp1s0
?)
これで、仮想マシンは着信および発信接続に対して完全な接続を持つようになります。