가상 브리지 인터페이스(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
?)
이제 가상 머신은 들어오고 나가는 연결에 대해 완전한 연결을 갖게 됩니다.