LINUX.ORG.RU
решено ФорумAdmin

Виртуальная сеть в debian

 , , ,


0

1

Здравствуйте.

Помогите настроить сеть между виртуальными машинами и гипервизором на KVM. Сейчас на хосте есть следующие линки:

# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:e0:4c:68:2b:9e brd ff:ff:ff:ff:ff:ff
3: wls7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 48:51:b7:59:cc:0c brd ff:ff:ff:ff:ff:ff
Хочется:

  • Добавить на хост виртуальный сетевой адаптер;
  • Создать bridge с добавлением в него этого адаптера;
  • Подключать все виртуальные машины в этот bridge;
  • Получать настройки виртуальной сети из ВМ с настроенным DHCP

Искал в интернете, ничего не нашел. Решил обратиться сюда к коллективному разуму.


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

anonymous ()
Ответ на: комментарий от anonymous

И что используется для управления qemu/kvm? libvirt?

anonymous ()
Ответ на: комментарий от anonymous

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

Bridge не поднимается в debian если не указать bridge_ports

И что используется для управления qemu/kvm? libvirt?

libvirt + virsh/vitrual manager

torm7 ()
Ответ на: комментарий от torm7

Bridge не поднимается в debian если не указать bridge_ports

Помимо решения от анонимуса выше, есть и другие варианты: systemd-networkd, NetworkManager, OVS наконец, если хочется погрузиться в тему.

libvirt + virsh/vitrual manager

Оно без проблем работает с любым хостовым мостом.

anonymous ()

А в чем вопрос. Как создать veth? как объединить их в bridge? Как запустить dhcp на виртуальном интерфейсе?

Или ищется «волшебный рецепт», где нажал на кнопочку, и все само создалось?

Oleg_Iu ()
Ответ на: комментарий от anonymous

C bridge_ports none заработало, однако после запуска ВМ с DHCP bridge не хватает сетевые настройки, как это исправить?

Помимо решения от анонимуса выше, есть и другие варианты: systemd-networkd, NetworkManager, OVS наконец, если хочется погрузиться в тему.

Технологий много, понимания не хватает как это заставить работать так как мне нужно.

А в чем вопрос.

Вопрос в первом посте, как сделать то что хочется в debian

torm7 ()
Последнее исправление: torm7 (всего исправлений: 1)
Ответ на: комментарий от torm7

Вопрос в первом посте, как сделать то что хочется в debian

Что-то мне подсказывает, что точно так же, как и не в дебиане.

C bridge_ports none заработало, однако после запуска ВМ с DHCP bridge не хватает сетевые настройки, как это исправить?

У вас виртуальные интерфейсы настроены? Они в бридж добавлены?

Oleg_Iu ()
Ответ на: комментарий от Oleg_Iu

Что-то мне подсказывает, что точно так же, как и не в дебиане.

С виду вся специфика дебиана заключается в /etc/network/interfaces Помимо этого все остальное должно быть как и не в дебиане.

У вас виртуальные интерфейсы настроены? Они в бридж добавлены?

$ sudo brctl show
[sudo] пароль для rav: 
bridge name     bridge id               STP enabled     interfaces
br0             8000.fe5400c4a10b       no              vnet0

Этот интерфейс автоматически создается и добавляется в bridge, после запуска ВМ. В ней и крутится DHCP.

Пока не сделаю dhclient br0, адрес не назначается.

torm7 ()
Последнее исправление: torm7 (всего исправлений: 1)
Ответ на: комментарий от torm7

С виду вся специфика дебиана заключается в /etc/network/interfaces

Это специфика утилиты ifupdown, которая ставится во многие дистрибутивы. Утилита растет ушами из азюра, если не ошибаюсь.

Но никто же не принуждает вас использовать именно ее. У меня в дебианах интерфейсы поднимают и nm, и systemd-networkd.

Ну вот и хорошо, что интерфейсы добавляются.

Пока не сделаю dhclient br0, адрес не назначается.

Теперь осталось в конфиге, из которого вы поднимаете бридж, обозначить его, как dhcp.

Oleg_Iu ()

Лайтовое решение

Ну прям чтоб просто - накати cockpit и модули на него. Там есть нетворкинг и кнопочка создать бридж)

beeeeen ()
Ответ на: комментарий от Oleg_Iu

Теперь осталось в конфиге, из которого вы поднимаете бридж, обозначить его, как dhcp.

bridge должен быть доступен раньше dhcp сервера. Если сделать так, то будут тормоза при загрузке хоста при запуске NetworkManager-wait-online.service. Да и не помогает это, я пробовал. Нужен какой то другой способ.

torm7 ()
Ответ на: комментарий от torm7

Что-то тут не так. У меня на одном сервере внешний интерфейс под dhcp. Никаких проблем от отсутствия сервера нет, он просто поднимается и ждет ответы на свои запросы.

По идее, /etc/network/interfaces должен быть достаточно простым для этого интерфейса:

iface br0 inet dhcp
    bridge_ports none

При отсутствии dhcp он просто будет тихо ждать этот сервер никому не мешая.

Попробовал у себя - сидит и ждет (ps).

root .... /sbin/dhclient -4 -v -pf /run/dhclient.br0.pid -lf /var/lib/dhcp/dhclient.br0.leases -I -df /var/lib/dhcp/dhclient6.br0.leases br0

Добавил интерфейс - прилетел пакет, адрес получил.

Oleg_Iu ()
Ответ на: комментарий от Oleg_Iu

В такой конфигурации bridge вообще не стартует:

iface br0 inet dhcp
    bridge_ports none
В такой, проблемы с запуском хоста:
auto br0
iface br0 inet dhcp
    bridge_ports none

torm7 ()
Ответ на: комментарий от Oleg_Iu

Утилита растет ушами из азюра

из какого ещё азюра?

anonymous ()

В общем сеть создана так:

sudo systemctl disable networking
sudo systemctl enable systemd-networkd
Создал файл /etc/systemd/network/25-bridge.netdev
[NetDev]
Name=br0
Kind=bridge
Создал файл /etc/systemd/network/25-bridge.network
[Match]
Name=br0
[Network]
DHCP=ipv4

После этого виртуалки видят друг друга и гипервизор. DHCP сервер крутится в ВМ.

torm7 ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей