LINUX.ORG.RU
ФорумAdmin

Сеть для qemu-kvm. How to...?

 , ,


1

2

Домашняя лаба - qemu-kvm

Решил убрать лишнее звено (аппаратный маршрутизатор микрот фтопку) и на хосте (не на госте) виртуализации развернуть программный маршрутизатор из предназначенных для этого православных пакетов (kea, bind, nftables).

Есть опыт с заведением несколько vlan в один физический интерфейс хоста qemu-kvm, а с него уже снимать теги и отдавать определённые сети на гостя, но что-то абстрагированное мышление в данный момент не работает.

Для 3-х компов у меня сеть - 172.16.1.248/29
Для вай-фая - 172.16.1.192/27
Необходимо для виртуалок выделить сеть - 172.16.1.224/28

Создал интерфейс

cat /etc/systemd/network/vlan-qemu.netdev 
[NetDev]
Name=vlan-qemu
Kind=vlan

[VLAN]
Id=28
cat /etc/systemd/network/vlan-qemu.network
[Match]
Name=vlan-qemu

[Network]
Address=172.16.1.225/28

Рестартую systemctl restart systemd-networkd и ничего не происходит. Ну то есть интерфейс vlan-qemu в ip a не появляется. Предполагаю, что мне созданный влан надо привязать к физическому интерфейсу, но зачем? У меня же виртуалки там же, где и маршрутизатор. Физический интерфейс для этого не нужен. Если мне понадобится (а мне понадобится) гонять трафик куда-то, то я задействую уже маршрутизацию сети, которая как раз уже на физическом интерфейсе.

★★

Как правильно заметил комментатор выше, тут нужен бридж.

Вариантов два - добавить линуксовый влан и этот влан добавть в линуксовый бридж.

Влан - lp link add etho name eth0.123 type vlan id 123

Бридж - brctl

И квм машины добавляет в бридж

Или вариан посложнее и круче - openvswitch. Там и бридж есть и поддержка вланов

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

Кажется вам надо bridge, не могу придумать к чему тут vlan

Мост я пробовал. Не могу понять почему у меня гости не получают адрес от сервера DHCP…?!?

cat /etc/systemd/network/br-qemu.netdev 
[NetDev]
Name=br-qemu
Kind=bridge
cat /etc/systemd/network/br-qemu.network 
[Match]
Name=br-qemu

[Network]
Address=172.16.27.225/28

Строчка из kea-dhcp4.conf

"interfaces-config": {
  "interfaces": [ "enp5s0", "enp6s0", "br-qemu" ]
},

Весь конфиг kea-dhcp4.conf

При старте виртуалки мост активируется и присвоеный адрес на хосте есть но виртуалки даже после dhclient ничего не получают…=(

Shprot ★★
() автор топика
Ответ на: комментарий от usermod

Хотел добавить, что virsh для openvswitch не позволит на лету ни добавить portgroup, ни отключить у ВМ кабель

Но погуглил и нашёл, что

  • добавить портгруппу можно через консоль
virsh net-update NETWORK_NAME add portgroup CONFIG.xml --live
virsh net-update NETWORK_NAME modify portgroup CONFIG.xml --live
  • а отключить кабель в принципе тоже можно, но не через virsh, а через утилиты openvswitch
# ищем имя интерфейса
virsh domiflist VM_NAME

# выкл/вкл
ovs-ofctl mod-port BRIDGE_NAME VM_IFACE down
ovs-ofctl mod-port BRIDGE_NAME VM_IFACE up

а ещё что virt-manager на питоне, надо будет почитать код

спасибо :)

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

а ещё что virt-manager на питоне

Не, не, не…! Говорю же я минималист. Только virsh, только хардкор.

на питоне

Тем более нет…=)

А dhcp демона перезапускал?

Ипстессна

Возможно, даже не взлетит без него после ребута

Тут вообще прикол. Отправил всю машину в ребут, опосля смотрю, а демон kea-dhcp4-server в статусе inactive. Толкаю его рученьками, запускается, адреса другим интерфейсам выдаёт, а бриджу на кему нет…=(

Shprot ★★
() автор топика
Ответ на: комментарий от router

А физические интерфейсы случайно не входят в тот же самый bridge?

Вот именно что нет. Я попилил стандартную 24-ую маску, на необходимое количество сетей для необходимого количества хостов. На одном физинтерфейсе одна сеть, на другом вторая. Сделал бридж, ни к чему не подвязывал его и в конфиге kea сделал пул на него. В принципе всё выше изложил.

Не раздаёт. Походу придётся ваершарк расчехлять и смотреть как гости qemu запрашивают адрес.

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

Wireshark показывает что на интерфейсе кто-то, с адресом 0.0.0.0 плюётся в броадкаст, но ответов никаких нет. Решил поэкспериментировать. Руками на госте прописал адрес, пробую пинг во вне, всё идёт. Ставлю получить по dhcp, рестартую, в этот момент на хосте запускаю tcpdump -i br-qemu и пошли запросы и пошли ответы и адрес гостю назначился. Нифига не понимаю. Как-будто протолкал запрос. Щас чуть погодя посмотрю как что будет. Попробую вообще всё рестартануть (виртуализацию, маршрутизатор, гостя) и посмотрю как будет вести себя kea

Shprot ★★
() автор топика

А не могут быть траблы из-за того, что я в grub отключил ipv6…?

cat /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet"
GRUB_CMDLINE_LINUX="ipv6.disable=1"
Shprot ★★
() автор топика

После рестарта снова бридж адреса не получает…=(
Либо это баг в kea, так как в isc-dhcp проблем не было, либо у меня bridge фекально настроен…=(

Shprot ★★
() автор топика