Назад | Перейти на главную страницу

KVM, настройка мостовой сети

У меня неизвестная проблема с созданием сетевого моста для KVM. Что я сделал: Моя ОС: Ubuntu 18.04

  1. Я установил мост-утилиты
sudo apt-get install bridge-utils
  1. Я изменил файл /etc/netplan/50-cloud-init.yaml. Это содержание:
network:
    version: 2
    ethernets:
        eno1:
            addresses: []
            dhcp4: true
        eno2:
            addresses: [192.168.0.101/24]
            gateway4: 192.168.0.1
            dhcp4: false
        enp4s0f0:
            addresses: []
            dhcp4: true
            optional: true
        enp4s0f1:
            addresses: []
            dhcp4: true
            optional: true
        enp5s0f0:
            addresses: []
            dhcp4: true
            optional: true
        enp5s0f1:
            addresses: []
            dhcp4: true
            optional: true

    bridges:
        br0:
            interfaces: [eno2]
            dhcp4: false
            addresses: [192.168.0.100/24]
            gateway4: 192.168.0.1
            nameservers:
                addresses: [192.168.0.1]
            parameters:
                stp: true
                forward-delay: 4
  1. Я запустил netplan apply. Все прошло отлично. Теперь я вижу:
3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 78:2b:cb:33:29:3d brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.101/24 brd 192.168.0.255 scope global eno2
       valid_lft forever preferred_lft forever

8: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:43:8d:69 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

  1. Я добавил определение сети: хост-мост
virsh # net-dumpxml host-bridge
<network connections='1'>
  <name>host-bridge</name>
  <uuid>1823e6a7-3a86-4d7f-b612-27c003066faa</uuid>
  <forward mode='bridge'/>
  <bridge name='br0'/>
</network>
  1. Затем я устанавливаю новую виртуальную машину с помощью:
virt-install --name=debian-tutorial4 \
    --vcpus=4 \
    --memory=8192 \
    --cdrom=/vm-images/debian-10.0.0-amd64-netinst.iso \
    --disk size=10,format=raw \
    --os-variant=debian9 \
    --network network=default \
    --network network=host-bridge
  1. Когда я бегу virsh dumpxml debian-tutorial4, Я могу видеть:
<interface type='network'>
    <mac address='52:54:00:48:0d:a2'/>
    <source network='default' bridge='virbr0'/>
    <target dev='vnet3'/>
    <model type='virtio'/>
    <alias name='net0'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
    <mac address='52:54:00:ca:51:97'/>
    <source network='host-bridge' bridge='br0'/>
    <target dev='vnet4'/>
    <model type='virtio'/>
    <alias name='net1'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</interface>

Когда я вхожу в виртуальную машину и запускаю ip a, я могу видеть:

daniel@debian4:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:48:0d:a2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.173/24 brd 192.168.122.255 scope global dynamic ens3
       valid_lft 3534sec preferred_lft 3534sec
    inet6 fe80::5054:ff:fe48:da2/64 scope link 
       valid_lft forever preferred_lft forever
3: ens4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 52:54:00:ca:51:97 brd ff:ff:ff:ff:ff:ff

Что мне нужно сделать, чтобы подключить мою виртуальную машину к мостовой сети?


Благодарю за ваш ответ.

Интерфейс на хосте работает.

root@smaug:/home/daniel# ip a show br0 up
94: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 82:43:74:4e:8d:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.100/24 brd 192.168.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::8043:74ff:fe4e:8dc4/64 scope link 
       valid_lft forever preferred_lft forever

Удален IP из eno2

        eno2:
            addresses: []
            dhcp4: false

Но я по-прежнему не вижу IP на моем интерфейсе на виртуальной машине.

В хост-системе проверьте состояние br0 интерфейс. Он должен встать.

В вашем случае вам следует настроить ens4 интерфейс в гостевой системе. Этот интерфейс соответствует вашей сети моста.

Кроме того, вам не следует назначать IP-адрес на eno2 интерфейс, потому что это интерфейс порта моста (подчиненный br0 интерфейс).

Кажется, что все остальное настроено правильно.

Наконец я решил свою проблему:

Решение:

На хост-сайте все было нормально. Это проблема с установленным мной Debian.

Я зашел туда через virt-viewer, затем изменил /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens3
iface ens3 inet dhcp

iface ens4 inet static
    address 192.168.0.110/24
    gateway 192.168.0.1

Затем вниз и вверх интерфейсы и перезапустите сеть

ip link set dev ens3 down
ip link set dev ens4 down
ip link set dev ens3 up
ip link set dev ens4 up

systemctl restart networking

Затем перезагрузите dhcp:

/sbin/dhclient

И наконец моя виртуальная машина получила IP

root@debian4:/home/daniel# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:fa:76:1b brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.71/24 brd 192.168.122.255 scope global dynamic ens3
       valid_lft 3277sec preferred_lft 3277sec
    inet6 fe80::5054:ff:fefa:761b/64 scope link
       valid_lft forever preferred_lft forever
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:71:c1:ed brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.110/24 brd 192.168.0.255 scope global ens4
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe71:c1ed/64 scope link
       valid_lft forever preferred_lft forever

Вы прикрепляете оба default и host-bridge сети в домен. Не делай этого. Используя мост, определенный в netplan, вы замените

--network network=default \
--network network=host-bridge

с участием

--network=host-bridge

Это должно решить вашу проблему, поскольку гость попытается настроить первый интерфейс с помощью DHCP.

Я бы также отключил STP на мосту.

После запуска виртуальной машины brctl show br0 должно выглядеть так:

bridge name     bridge id               STP enabled     interfaces
br0             8000.4ccc6a27d838       no              eth0
                                                        vnet0