LINUX.ORG.RU
ФорумAdmin

Как добавить второй физический интерфейс в гостя qemu, чтоб он пропускал trunk

 , , ,


0

1

Есть железный старенький Dell, на котором qemu-kvm. Есть задача развернуть gateway на виртуальном хосте гипервизора. На данный момент в гипервизор на физический интерфейс заходит ISP с 27-ой маской сети. На нём поднят bridge. С бриджа взят один из IP ISP’а и сам интернет на gateway работает.

На гипервизоре

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# Физические интерфейсы
iface eno1 inet manual

auto eno2
iface eno2 inet manual

auto eno3 # ISP 1.1.1.2/27
iface eno3 inet manual

iface eno4 inet manual
cat /etc/network/interfaces.d/br0 
# Bridge 0
auto br0
iface br0 inet static
address 1.1.1.2/27
netmask 255.255.255.240
gateway 1.1.1.1
dns-nameservers 1.1.1.1 
bridge_ports eno3
bridge_stp off # отключаем протокол Spanning Tree
bridge_waitport 0 # убираем задержку до того, как порт станет доступен
bridge_fd 0 # убираем задержку переадресации

Не совсем понимаю как добавить ещё один физический сетевой интерфейс в гостя gateway, только так, чтоб с isc-dhcp-server, он ещё тегированые VlanID выпускал, которые на управляемом коммутаторе уже снимались. Вот пока что на gateway

<interface type='bridge'>
  <mac address='52:54:00:26:eb:48'/>
  <source bridge='br0'/>
  <target dev='vnet8'/>
  <model type='virtio'/>
  <alias name='net0'/>
  <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</interface>

Ещё надо чтоб гость на том же гипервизоре получал IP с gateway.
В общем надо поднять транковый интерфейс

★★

Много букв, но мало по сути вопроса.

Начнём с простого. Бридж на хосте лучше оставить без адреса вообще. Включить в него интерфейс от провайдера и интерфейс виртуального роутера. Никакого L3 для всего этого на хосте не настраивать, повторюсь. L3 настраивать уже в гостевой системе.

В общем надо поднять транковый интерфейс

В линуксе любой Ethernet является trunk сразу, в том числе VLAN-теги будут успешно ходить через линуксовый бридж, если не настроена фильтрация.

Покажи схему сети, тогда можно будет что-то более конкретно сказать.

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

Я извиняюсь за наскальную живопись, но как-то -> вот так <- надо второй физический интерфейс добавить в gateway. Чтоб через него проходил тегированый трафик, теги которого уже будут сниматься на коммутаторе, а также некоторые сети должны будут ещё заходить в гостей гипервизора

В общем задумка сделать пограничный маршрутизатор, только на госте гипервизора

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

Я извиняюсь за наскальную живопись

Нормально, но вместо адресов в таком случае логичнее указывать L2-домены (номера VLAN), потому что вопрос скорее не про L3.

надо второй физический интерфейс добавить в gateway

Проще всего через второй мост. Можно обойтись одним с vlan_filtering, но это если ты хорошо представляешь движение пакетов по интерфейсам, я бы не стал без надобности так делать. По умолчанию мост будет пропускать тегированный трафик, так что нужные VLAN-интерфейсы можешь создать в госте. Есть другой вариант: создать интерфейсы для VLAN на хосте и отдельно их подключать к гостю, тогда ему не надо знать про VLAN. Что лучше по производительности сказать не могу, лучше померить со своими нагрузками.

Если вышесказанное не совсем понятно, то надо почитать про VLAN в Linux и поэкспериментировать с утилитами ip (и bridge, при необходимости). Будешь понимать в достаточной степени L2 — станет всё сразу просто и понятно.

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

VLAN’ы, а точнее сами сети, будут создаваться в isc-dhcp-servers. То есть в файле /etc/dhcp/dhcpd.conf будут описаны необходимые сети. Они должны просто магистралиться в циску-свич, через физический eth гипервизора! Вот как задумано.

Машина где-то в локальной сети, подключенная к (условно) порту 15 на циске, на котором влан акцес 15, запрашивает броадкастом адрес. ID15 заходит через eth гипервизора в gateway, где дхцп выдаёт ему адрес

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

VLAN’ы, а точнее сами сети, будут создаваться в isc-dhcp-servers

Мне кажется, ты смешиваешь L2 и L3. Если это продакшн, то самое время разобраться, как оно работает на самом деле, пока не наделал делов.

Ну и к слову, ISC DHCP Server вроде как давно уже умер, стоит его заменить на что-то поддерживаемое.

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

Машина где-то в локальной сети, подключенная к (условно) порту 15 на циске, на котором влан акцес 15, запрашивает броадкастом адрес. ID15 заходит через eth гипервизора в gateway, где дхцп выдаёт ему адрес

Я описал в целом, как это делается. Если непонятно, то у тебя есть какие-то пробелы в основах, их надо закрыть. Иначе есть риск получить что-то, возможно, даже работающее, но с «непонятными» проблемами и утечками трафика повсюду.

anonymous
()

Смотреть сюда

Нужен 'bridge_vlan_aware yes' (и диапазон VLAN-ов) в конфиге /etc/network/interfaces.d + правильно настроенный интерфейс в конфиге самой виртуалки

Update: упс, libvirt походу до сих пор не поддерживает нативные vlan-aware мосты. Ну тогда только хук-скриптом в /etc/libvirt/qemu костылить похоже

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

правильно настроенный интерфейс в конфиге самой виртуалки

Во-о-от…! Я не совсем понимаю как это в xml ручками прописать. Мне по сути нужно, чтоб интерфейс пропускал только тегированный трафик. Снятием тега будет уже заниматься «умный» коммутатор.
Почитал-погуглил, может попробовать macvtap либо вообще systemd-network?

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