virsh를 위한 virbr0 생성

virsh를 위한 virbr0 생성

로컬 서버에 KVM 기반 가상 머신을 설정하려고 하며 다음 설명서를 따릅니다.https://wiki.debian.org/KVM

이 문서에는 브리지 연결이 가능하다고 명시되어 있지만 virbr0안타깝게도 자동으로 생성되지는 않습니다. 문서에서는 이 문제를 해결하기 위해 virt-manager를 사용할 것을 제안하지만 GUI는 없고 표준 데비안 서버만 설치되어 있습니다. 그렇다면 명령줄에서 어떻게 생성합니까?

br0을 만들었고 모든 것이 괜찮아 보입니다.

$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 00:1f:c6:9c:0f:0d brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:1f:c6:9c:0f:0d brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.200/24 brd 192.168.1.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::21f:c6ff:fe9c:f0d/64 scope link
       valid_lft forever preferred_lft forever

$ sudo ip route
default via 192.168.1.1 dev br0


$ brctl show
bridge name bridge id           STP enabled interfaces
br0         8000.001fc69c0f0d   no          eth0

참고로, 아니 virbr0.

ifage-bridge를 생성하려고 하면 오류가 발생합니다.

$ virsh iface-bridge eth0 br0
error: failed to get interface 'eth0'
error: internal error: couldn't find interface named 'eth0': required entry missing

또한 qemu용 브리지를 구성했는데, 이 작업을 수동으로 수행하여 qemu 자동 시작에 추가했습니다.

$ cat /etc/libvirt/qemu/networks/bridge.xml
<network>
  <name>bridge</name>
  <bridge name="br0"/>
  <forward mode="bridge"/>
</network>

브리징으로 인해 가상 머신을 생성/시작할 수 없습니다.

$ virt-install --virt-type kvm --name testvm --network bridge
Starting install...
Retrieving file MANIFEST...                  | 3.3 kB     00:00 ...
Retrieving file linux...                     | 6.0 MB     00:08 ...
Retrieving file initrd.gz...                 |  29 MB     00:56 ...
Allocating 'testvm.qcow2'                    | 8.0 GB     00:00
ERROR    failed to retrieve file descriptor for interface: Transport endpoint is not connected

--network구성을 생략하면 작동합니다. 이 가상 머신에는 네트워크가 없으므로 기본적으로 쓸모가 없습니다. 다음을 통해 브리지 구성을 추가하는 경우 virsh edit testvm:

<interface type='bridge'>
  <source bridge='br0'/>
  <model type='virtio'/>
</interface>

실행하면 어쨌든 실패합니다.

$ virsh start testvm
error: Failed to start domain testvm
error: failed to retrieve file descriptor for interface: Transport endpoint is not connected

내가 뭘 잘못했나요? 가상 머신에 대한 네트워킹을 어떻게 virbr0추가하고 핫셋업해야 합니까?

핵심 구성 요소인 ssh와 kvm/qemu/libvirt를 제외하고는 아무것도 설치되지 않은 새로운 Debian Jessie 설치가 있습니다.

답변1

그 이유는 루트가 아닌 사용자에게는 브릿지를 사용할 수 있는 충분한 권한이 없기 때문입니다.

문서지적했다:

루트가 아닌 경우 libvirt의 기본값은 qemu:///session입니다. 따라서 <youruser>에서 다음을 수행해야 합니다.

$ virsh --connect qemu:///system list --all

설치 시 지정해야 하는지, 언제 지정해야 하는지는 확실하지 않습니다. 이는 다음과 같은 것으로 밝혀졌습니다.필수의루트가 아닌 사용자를 위한 명령줄 옵션입니다.

네트워크 기능이 있는 새 가상 머신을 설치하기 위한 올바른 명령에는 다음이 포함되어야 합니다.

virt-install --connect qemu:///system .......

아니면 root사용자가 직접 설치할 수도 있습니다.

답변2

작동 방식은 다음과 같습니다.

# cat /tmp/virt-net-example.xml
<network connections='9'>
  <name>some-virt-net</name>
  <uuid>530f11c4-617b-447c-bdba-704f34374277</uuid>
  <bridge name='virbr42' stp='on' delay='0'/>
  <mac address='42:13:37:23:21:87'/>
  <ip address='172.20.42.254' netmask='255.255.255.0'>
    <dhcp>
      <range start='172.20.42.1' end='172.20.42.42'/>
    </dhcp>
  </ip>
</network>
# virsh net-define /tmp/virt-net-example.xml
# virsh net-start some-virt-net
Network some-virt-net started

# brctl show virbr42
bridge name     bridge id               STP enabled     interfaces
virbr42         8000.421337232187       yes             virbr42-nic

# link show virbr42-nic
99: virbr42-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr42 state DOWN mode DEFAULT group default qlen 1000
    link/ether 42:13:37:23:21:87 brd ff:ff:ff:ff:ff:ff

방금 libvirt 1.2.13에 대해 FC22에서 테스트했습니다.

답변3

이미 br0을 구성했으므로 그것으로 충분합니다. 올바른 가상 설치 옵션은 다음과 같습니다.--network bridge=br0

편집: 그리고 코멘트에서 약속한 대로 브리지에 대한 인터페이스의 예는 다음과 같습니다.

</interface>
  <mac address='00:1a:4a:01:00:04'/>
  <source bridge='br0'/>
  <target dev='vnet2'/>
  <model type='virtio'/>
  <link state='up'/>
  <alias name='net0'/>
</interface>

target devalias name내가 아는 한 선택사항입니다 .

관련 정보