Глиф Учебники

Урок 7. Сеть — мост vmbr0 и VLAN

Курс «Proxmox VE» · урок 7 из 9 · 4 минуты чтения

Машины и контейнеры из прошлых уроков получили адреса от роутера и видны в сети как отдельные компьютеры. Так работает мост — главная деталь сети Proxmox. В этом уроке — как он устроен, где настраивается и как разделить машины на отдельные сети.

Мост как коммутатор

Мост (bridge) — программный сетевой коммутатор внутри сервера. К нему подключены физическая сетевая карта и виртуальные карты машин. Машины получают свои MAC-адреса (аппаратные адреса сетевых карт) и общаются с роутером напрямую, как будто воткнуты в тот же коммутатор, что и сервер.

Установщик создаёт один мост vmbr0 и подключает к нему первую сетевую карту. Адрес самого сервера назначен мосту, а не карте — это частая причина путаницы при ручной правке.

Имена сетевых карт в Proxmox начинаются с en: eno1 — первая карта на материнской плате, enp3s0 — карта в слоте PCI. Свои карты и адреса покажет команда:

Bash
ip -br addr

Файл настроек

Сеть описана в файле /etc/network/interfaces. После установки он выглядит примерно так:

Настройки
auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
        address 192.168.10.2/24
        gateway 192.168.10.1
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

Здесь eno1 — физическая карта без своего адреса (manual), vmbr0 — мост с адресом сервера и шлюзом, bridge-ports eno1 — карта, подключённая к мосту.

сервер Proxmox ВМ 100 свой MAC-адрес контейнер 101 свой MAC-адрес vmbr0 мост — программный коммутатор адрес сервера 192.168.10.2/24 bridge-ports eno1 eno1 inet manual — без адреса роутер 192.168.10.1 шлюз
Гости со своими MAC-адресами подключены к мосту vmbr0 с адресом сервера 192.168.10.2/24, а мост через карту eno1 без адреса выходит к роутеру 192.168.10.1.

Как менять настройки

В интерфейсе: узел → System → Network. Изменения сначала записываются в черновик /etc/network/interfaces.new и не действуют, пока вы не нажмёте Apply Configuration — тогда они применяются сразу, без перезагрузки.

Если правили файл вручную, примените его командой:

Bash
ifreload -a

Ошибка в настройках моста vmbr0 отрезает сервер от сети — и веб-интерфейс, и SSH. Перед изменением убедитесь, что есть доступ к экрану и клавиатуре сервера (или к его удалённой консоли у хостинга), и сохраните копию файла: cp /etc/network/interfaces /root/interfaces.bak.

Старые команды Debian ifdown и ifup для мостов не используйте: после ifdown vmbr0 гостевые машины отключаются от моста и сами обратно не подключаются.

Внутренняя сеть для машин

Иногда машинам нужна своя сеть, недоступная снаружи: например, сайт и база данных общаются между собой, а база в общую сеть не выходит. Для этого создайте второй мост без физической карты: Create → Linux Bridge, имя vmbr1, поле Bridge ports оставьте пустым, адрес можно не задавать. Примените изменения.

Подключите к vmbr1 вторую сетевую карту машины (Hardware → Add → Network Device) и задайте внутри машин адреса из своей сети, например 10.10.10.1/24 и 10.10.10.2/24. Роутера и DHCP в такой сети нет.

сервер Proxmox ВМ сайта адрес от роутера 10.10.10.1/24 ВМ базы данных 10.10.10.2/24 vmbr0 bridge-ports eno1 vmbr1 Bridge ports — пусто eno1 наружу не выходит роутера и DHCP нет в общую сеть, к роутеру
Машина сайта подключена к vmbr0 и к внутреннему мосту vmbr1, а база данных — только к vmbr1 без физических портов, поэтому наружу она не выходит.

VLAN

VLAN — способ разделить одну физическую сеть на несколько независимых. Каждый пакет помечается номером (тегом) от 1 до 4094, и коммутатор доставляет его только в порты своего VLAN. Так в одном кабеле идут, например, сеть офиса, сеть камер и гостевой Wi‑Fi.

Проще всего научить понимать теги сам мост:

  1. Узел → System → Network → vmbr0 → Edit → отметьте VLAN aware → Apply Configuration.
  2. В сетевом устройстве машины (Hardware → Network Device → Edit) укажите VLAN Tag, например 20.

В файле настроек у моста появятся строки:

Настройки
        bridge-vlan-aware yes
        bridge-vids 2-4094

Порт коммутатора, к которому подключён сервер, должен быть настроен как trunk (пропускать помеченные пакеты нужных VLAN). Машины без тега остаются в основной сети, как раньше.

коммутатор trunk пропускает теги VLAN 20 пакеты с тегом VLAN 20 пакеты без тега — основная сеть 20 сервер Proxmox eno1 ВМ VLAN Tag 20 ВМ без тега vmbr0 мост с флажком VLAN aware bridge-vlan-aware yes bridge-vids 2-4094
По кабелю от порта trunk идут пакеты с тегом 20 и без тега, мост vmbr0 с VLAN aware отдаёт машине с VLAN Tag 20 только её пакеты, а машине без тега — основную сеть.

Тег работает и без флажка VLAN aware: тогда Proxmox сам создаёт для каждого VLAN отдельный мост (например, vmbr0v20). Флажок нагляднее: всё остаётся на одном мосту vmbr0. Подробнее про VLAN и маски — в теме Компьютерные сети.

Если хостинг не пускает чужие MAC

В домашней и офисной сети мост работает сразу. А многие хостинги отключают порт, если видят на нём несколько MAC-адресов, — и машины на мосту, подключённом к внешней карте, ломают сеть сервера. Для такого случая в документации Proxmox есть схемы с маршрутизацией и NAT (машины выходят наружу под адресом сервера; раздел Network Configuration руководства администратора). Перед настройкой уточните у хостинга, разрешены ли дополнительные MAC-адреса.

Коротко

Проверьте себя

1. Чему назначен IP-адрес сервера в стандартной настройке Proxmox?
2. Вы поменяли сеть в интерфейсе, но ничего не изменилось. Почему?
3. Как сделать сеть только для машин, без выхода наружу?
4. Как должен быть настроен порт коммутатора, к которому подключён сервер с машинами в разных VLAN?