kvm을 사용하여 네트워크 브리지

kvm을 사용하여 네트워크 브리지

브리징을 사용하여 게스트 가상 머신을 내 네트워크에 연결하려고 합니다. 온라인에서 일부 리소스를 찾았지만 오래된 것 같거나, xen 또는 Ubuntu를 참조하거나, 불완전한 것 같습니다. 호스트 컴퓨터는 CentOS 5.5를 실행하고 있으며 libvirt를 사용하여 가상 컴퓨터를 관리하므로 이를 사용하여 가상 컴퓨터를 만들고 시작하고 중지합니다. 브리지(br0)를 만들고 eth0을 여기에 연결했습니다. 가상 머신이 IP 주소를 얻지 못하는 것 같습니다. DHCP를 사용하여 주소를 얻고 가상 머신에 대한 고정 임대를 설정하겠습니다.

호스트의 ifconfig:

br0   Link encap:Ethernet  HWaddr 00:1A:4D:53:C3:A6  
      inet addr:192.168.1.121  Bcast:192.168.1.255  Mask:255.255.255.0
      inet6 addr: fe80::21a:4dff:fe53:c3a6/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:5222 errors:0 dropped:0 overruns:0 frame:0
      TX packets:470 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:753743 (736.0 KiB)  TX bytes:47868 (46.7 KiB)

eth0  Link encap:Ethernet  HWaddr 00:1A:4D:53:C3:A6  
      inet6 addr: fe80::21a:4dff:fe53:c3a6/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:103200 errors:0 dropped:0 overruns:0 frame:0
      TX packets:116575 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:13605883 (12.9 MiB)  TX bytes:63269448 (60.3 MiB)
      Interrupt:217 Base address:0xc000 

 eth1 Link encap:Ethernet  HWaddr 00:1B:21:0A:25:AA  
      inet addr:192.168.1.91  Bcast:192.168.1.255  Mask:255.255.255.0
      inet6 addr: fe80::21b:21ff:fe0a:25aa/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:3124648 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1693433 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:100 
      RX bytes:4531121842 (4.2 GiB)  TX bytes:119907573 (114.3 MiB)

 lo   Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:27294 errors:0 dropped:0 overruns:0 frame:0
      TX packets:27294 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:34266420 (32.6 MiB)  TX bytes:34266420 (32.6 MiB)

virbr0 Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
       inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
       inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
       RX packets:51332 errors:0 dropped:0 overruns:0 frame:0
       TX packets:89020 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:0 
       RX bytes:2916963 (2.7 MiB)  TX bytes:132997389 (126.8 MiB)

vnet0  Link encap:Ethernet  HWaddr FE:52:00:1A:C8:4F  
       inet6 addr: fe80::fc52:ff:fe1a:c84f/64 Scope:Link
       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
       RX packets:25 errors:0 dropped:0 overruns:0 frame:0
       TX packets:518 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:500 
       RX bytes:4226 (4.1 KiB)  TX bytes:51190 (49.9 KiB)

산출brctl show

bridge name bridge id       STP enabled interfaces
br0         8000.001a4d53c3a6       no              vnet0
                                                    eth0
virbr0      8000.000000000000       yes

출력 route:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth1
192.168.1.0     *               255.255.255.0   U     0      0        0 br0
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0
169.254.0.0     *               255.255.0.0     U     0      0        0 br0
default         DD-WRT          0.0.0.0         UG    0      0        0 br0

마지막으로 구성하려는 VM의 네트워킹 부분은 다음과 같습니다.

<interface type='bridge'>
  <mac address='54:52:00:1a:c8:4f'/>
  <source bridge='br0'/>
</interface>

답변1

이미 발견하셨듯이 모든 일이 제대로 이루어지고 있습니다. 방화벽 문제입니다. 이전처럼 트래픽을 허용하는 규칙을 추가하거나 방화벽을 완전히 끄거나 최신 버전의 Fedora 및 RHEL에서와 같이 /etc/sysctl.conf에 다음을 추가하여 이 문제를 해결할 수 있습니다.

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

그런 다음 실행 sysctl -p하여 이러한 변경 사항을 적용합니다.

답변2

KVM은 자체 네트워크 브리지를 구축합니다. 이것은 다리입니다 virbr0. 인터넷에 연결하는 방법을 구성할 수 있어야 합니다.

eth0가상 머신에서는 브리지 대신 인터페이스가 표시되어야 합니다 . 이것은 장치의 다른 쪽이 될 것입니다 vnet0.

저는 KVM이 DHCP 주소를 배포하기 위해 브리지 네트워크용 DNSMasq 서버를 시작하는 Ubuntu에서 작업하고 있습니다. KVM은 iptables가상 머신에 대한 네트워크 액세스를 구성하는 데에도 사용됩니다 .

생성한 브리지를 삭제하고 가상 머신을 다시 시작해 보세요. 내가 본 구성에 따르면 192.168.122.0 범위의 주소를 얻을 것으로 예상됩니다.

KVM이 내 방화벽과 상호 작용하는 방식이 마음에 들지 않으며 내 방화벽도 마찬가지입니다.KVM 수동 네트워킹. 내 구성은 이더넷 인터페이스에 연결되지 않은 가상 브리지를 사용합니다. 이것KVM 네트워크 페이지Ubuntu 커뮤니티의 콘텐츠는 현재 KVM이 네트워킹을 수행하는 방식을 이해하는 데 도움이 될 수 있습니다.

편집: 브리지 네트워킹을 다시 살펴보았습니다. 왜 당신의 주소가 192.168.1.x인지 잘 모르겠습니다 eth1. 귀하의 구성은 제가 기대했던 것과 거의 같습니다. 가상 머신에 고정 주소를 설정해 보고 통신이 가능한지 확인해 보세요.

DHCP에 무슨 일이 일어나고 있는지 테스트하기 위해 DHCP 트래픽이나 mac 주소에서 들어오는 모든 트래픽을 실행 tcpdump하거나 br0모니터링 해 보겠습니다 . 그런 다음 DHCP 주소를 얻으십시오. 브리지에서 SPT를 활성화해야 할 수도 있습니다.eth054:52:00:1a:c8:4f

제가 자체 네트워크를 구축한 이유는 외부에서 가상머신에 접속할 수 있기 위해서입니다. 저는 두 개의 브리지를 운영하고 있으며 그 중 하나는 DMZ를 호스팅합니다.

관련 정보