Виртуальная машина в 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.
☑️ Проверка моста перед подключением ВМ
⚠️ Внимание: при смене 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-тег одновременно на мосте и в настройках сетевого адаптера ВМ — двойное тегирование приведёт к тому, что трафик не будет доставлен. Тегирует либо мост, либо виртуальный интерфейс, но не оба.
Сравнение режимов сети
Соберём ключевые различия в одну таблицу, чтобы проще было выбрать схему под свою задачу.
| Режим | Адресация ВМ | Доступ извне к ВМ | Типичный сценарий |
|---|---|---|---|
| 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 или перезагрузите сервер.