Настройка сети в Proxmox для виртуальных машин

Виртуальная машина в Proxmox VE не видит сеть чаще всего из-за того, что она подключена не к тому мосту или на хосте не настроена маршрутизация — проверка начинается с раздела Datacenter → Node → Network, где видно, какой Linux Bridge реально привязан к физическому интерфейсу. Если гостевая система получает IP, но не выходит в интернет, проблема почти всегда в NAT, шлюзе по умолчанию или правилах файрвола, а не в самой ВМ.

В этой статье разберём, как устроена сеть в Proxmox, какие режимы подключения существуют, как настроить мост, NAT и VLAN, а также как диагностировать типичные ошибки. Материал ориентирован на актуальные версии Proxmox VE (7.x и 8.x), но общие принципы применимы и к более ранним релизам.

Как устроена сеть в Proxmox VE

Сетевой стек Proxmox построен на стандартных механизмах ядра Linux. Физический сетевой адаптер сервера (например, eno1 или eth0) объединяется в мост (bridge) — виртуальный коммутатор, к которому подключаются сетевые интерфейсы виртуальных машин и контейнеров. По умолчанию при установке создаётся мост vmbr0, через который хост сам получает доступ в сеть.

Каждая виртуальная машина получает виртуальный сетевой адаптер, который с одной стороны виден гостевой ОС как обычная сетевая карта (virtio, Intel E1000, Realtek RTL8139), а с другой — подключён к выбранному мосту на хосте. Модель virtio считается предпочтительной: она паравиртуализирована и даёт наилучшую производительность, но требует драйверов в гостевой системе (в современных Linux они встроены, для Windows нужны драйверы virtio-win).

Режимы подключения виртуальных машин

Существует три базовых сценария подключения ВМ к сети, и выбор зависит от задачи: нужен ли виртуальным машинам прямой выход во внешнюю сеть, изоляция или связь только между собой.

  • 🌉 Bridged (мост) — ВМ получает адрес из той же сети, что и хост, выглядит как отдельное физическое устройство. Стандартный вариант для серверов.
  • 🔒 NAT — ВМ находятся во внутренней сети, выход наружу идёт через IP хоста. Подходит, когда внешних адресов мало.
  • 🏝️ Изолированная сеть (host-only) — мост без привязки к физическому интерфейсу, ВМ общаются только между собой и с хостом.
  • 🏷️ VLAN — сегментация трафика через теги 802.1Q, когда через один физический интерфейс проходит несколько логических сетей.

Простой способ выбрать: если в вашей сети есть DHCP-сервер и свободные адреса — используйте мост. Если внешний адрес один (типично для арендованных выделенных серверов) — настраивайте NAT. Для тестовых стендов, которым интернет не нужен, достаточно изолированного моста.

Настройка моста (Linux Bridge)

Конфигурация сети хранится в файле /etc/network/interfaces на хосте. Редактировать её можно как напрямую, так и через веб-интерфейс: Datacenter → имя узла → System → Network. Через веб-интерфейс безопаснее — Proxmox применяет изменения через ifupdown2 и позволяет откатить конфигурацию при ошибке.

Типичная конфигурация моста со статическим адресом выглядит так:

auto vmbr0

iface vmbr0 inet static

address 192.168.1.10/24

gateway 192.168.1.1

bridge-ports eno1

bridge-stp off

bridge-fd 0

Здесь bridge-ports eno1 привязывает мост к физическому интерфейсу — именно эта строка отвечает за выход ВМ во внешнюю сеть. После редактирования файла вручную изменения применяются командой ifreload -a или перезагрузкой. В веб-интерфейсе после изменений нужно нажать Apply Configuration.

☑️ Проверка моста перед подключением ВМ

Выполнено: 0 / 5
⚠️ Внимание: при смене IP-адреса или шлюза хоста через SSH-сессию есть риск потерять удалённый доступ, если допустить ошибку в конфигурации. Перед правками сохраните копию файла /etc/network/interfaces и убедитесь, что есть запасной способ подключения (KVM-консоль, IPMI, физический доступ).

Настройка NAT для виртуальных машин

NAT нужен, когда у сервера один внешний IP-адрес, а виртуальным машинам требуется выход в интернет. Схема такая: создаётся отдельный мост без привязки к физическому интерфейсу, ВМ получают адреса из частной подсети, а хост транслирует их трафик наружу через masquerading.

Пример конфигурации в /etc/network/interfaces:

auto vmbr1

iface vmbr1 inet static

address 10.10.10.1/24

bridge-ports none

bridge-stp off

bridge-fd 0

post-up echo 1 > /proc/sys/net/ipv4/ip_forward

post-up iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o vmbr0 -j MASQUERADE

post-down iptables -t nat -D POSTROUTING -s 10.10.10.0/24 -o vmbr0 -j MASQUERADE

Виртуальным машинам на этом мосту назначаются адреса из подсети 10.10.10.0/24, шлюзом указывается 10.10.10.1. Раздачу адресов по DHCP можно организовать, установив на хост или отдельную ВМ службу вроде dnsmasq, либо прописать адреса вручную в каждой гостевой системе.

Чтобы пробросить отдельные порты снаружи внутрь NAT-сети (например, SSH на конкретную ВМ), добавляется правило DNAT в таблицу nat. Учтите, что правила, заданные через post-up, не сохраняются между перезагрузками сами по себе — они живут ровно столько, сколько поднят интерфейс, поэтому держать их в конфигурации интерфейса — корректная практика.

VLAN и сегментация сети

Когда через один физический интерфейс нужно пропустить несколько изолированных сетей, используется тегирование 802.1Q. В Proxmox есть два подхода: классический — создать отдельный мост на VLAN-интерфейсе (например, vmbr0.100 или vmbr1 с портом eno1.100), и современный — сделать мост VLAN-aware, отметив соответствующую опцию в настройках моста.

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

⚠️ Внимание: не указывайте VLAN-тег одновременно на мосте и в настройках сетевого адаптера ВМ — двойное тегирование приведёт к тому, что трафик не будет доставлен. Тегирует либо мост, либо виртуальный интерфейс, но не оба.
📊 Какой режим сети вы используете для ВМ в Proxmox?
Bridge (прямое подключение к сети)
NAT через хост
VLAN-сегментация
Изолированная сеть для тестов

Сравнение режимов сети

Соберём ключевые различия в одну таблицу, чтобы проще было выбрать схему под свою задачу.

РежимАдресация ВМДоступ извне к ВМТипичный сценарий
BridgeИз сети хостаНапрямую, как к физическому ПКСерверы в локальной сети
NATЧастная подсетьТолько через проброс портовОдин внешний IP на всех
Host-onlyЧастная подсетьНетТестовые стенды, лаборатории
VLAN-aware bridgeЗависит от VLANПо правилам сети сегментаМного сетей через один интерфейс

Файрвол Proxmox и безопасность сети

В Proxmox встроен файрвол на базе iptables/nftables, который работает на трёх уровнях: кластер (Datacenter), узел и отдельная ВМ. По умолчанию он выключен глобально, и правила на уровне ВМ не действуют, пока файрвол не включён в Datacenter → Firewall и в настройках самой машины (Hardware → Network Device → Firewall).

Полезные возможности встроенного файрвола:

  • 🛡️ Security Groups — переиспользуемые наборы правил для групп ВМ.
  • 📇 IPSet — списки адресов и сетей для удобного управления доступом.
  • 🚫 IPFilter — ограничение ВМ только назначенным ей IP-адресом, защита от подмены.
  • 📊 Rate limiting — ограничение полосы пропускания на сетевом интерфейсе ВМ.

Для гостевых систем с включённым файрволом держите в уме цепочку наследования: правила Datacenter применяются ко всем, затем идут правила узла и ВМ. Если ВМ внезапно «отвалилась» от сети после включения файрвола, первым делом проверьте политику по умолчанию (INPUT/OUTPUT) — часто она выставлена в DROP, а разрешающих правил ещё нет.

Почему ВМ пингуется, но сайты не открываются

Классический симптом проблемы с MTU или DNS. Проверьте, что в гостевой ОС указан рабочий DNS-сервер (например, адрес шлюза или публичный резолвер). Если DNS в порядке, а половина соединений зависает — возможна проблема с MTU на пути, особенно при использовании туннелей или PPPoE на маршрутизаторе. Попробуйте временно снизить MTU на интерфейсе ВМ до 1400 и проверить, исчезнет ли проблема.

Диагностика типичных проблем

Когда виртуальная машина не видит сеть, двигайтесь от простого к сложному. Сначала убедитесь, что в гостевой ОС интерфейс поднят и получил адрес: ip a в Linux или ipconfig в Windows. Отсутствие адреса при DHCP обычно означает, что ВМ подключена не к тому мосту или в сегменте нет DHCP-сервера.

Дальше проверяйте по цепочке: пингуется ли шлюз, пингуется ли хост, проходит ли трафик наружу с самого хоста. На хосте посмотреть состояние мостов можно командой brctl show (или bridge link), а прослушивание трафика на мосту через tcpdump -i vmbr0 покажет, доходят ли пакеты от ВМ до хоста вообще. Это самый быстрый способ локализовать, на каком участке теряется связь.

Отдельная частая ситуация — после миграции ВМ на другой узел сеть пропадает, потому что на новом узле мост называется иначе или не привязан к физическому интерфейсу. Имена мостов в кластере должны совпадать на всех узлах, иначе мигрированная машина окажется подключённой «в никуда».

FAQ: частые вопросы

Какая модель сетевой карты лучше для ВМ в Proxmox?

Рекомендуется virtio — это паравиртуализированный драйвер с наилучшей производительностью. Для Windows потребуется установить драйверы из образа virtio-win. Модели E1000 и RTL8139 стоит использовать только для совместимости со старыми системами.

Как дать ВМ прямой публичный IP-адрес?

Если провайдер или дата-центр выдал подсеть адресов, маршрутизируемых на ваш сервер, ВМ подключается к мосту, и ей назначается публичный адрес напрямую. На некоторых площадках дополнительно требуется привязка MAC-адреса виртуальной машины к выданному IP — это уточняется в документации вашего хостинг-провайдера.

Почему ВМ не получает адрес по DHCP?

Возможные причины: ВМ подключена к мосту без привязки к физическому интерфейсу, в сегменте нет DHCP-сервера, либо активен файрвол, блокирующий трафик. Проверьте настройку моста и назначьте адрес вручную для проверки связности.

Можно ли ограничить скорость сети для отдельной ВМ?

Да, в настройках сетевого адаптера ВМ есть параметр Rate limit (в МБ/с), который ограничивает пропускную способность интерфейса без дополнительных утилит.

Что делать, если после изменения сети хост недоступен?

Если изменения применялись через веб-интерфейс с ifupdown2, при потере связности конфигурация может откатиться автоматически. Если доступ потерян полностью, подключитесь через KVM/IPMI-консоль, восстановите резервную копию /etc/network/interfaces и выполните ifreload -a или перезагрузите сервер.