Виртуализация и хост-ноды

Настройка сети Proxmox VE: мост и маршрутизация, дополнительные /24, привязка к MAC и IPv6

6 шагов 16 мин чтения 41 просмотров 0
Содержание

Большинство проблем с VPS на хост-ноде Proxmox VE — сетевые: виртуальные машины не видят шлюз, дополнительная /24 работает на хосте, но не в VM, или IPv6 так и не отвечает. Решение зависит от того, как провайдер выдаёт IP-адреса. В статье разобраны две распространённые схемы — мост (bridged, on-link) и маршрутизация (routed), для каждой приведён соответствующий /etc/network/interfaces, а также рассмотрены IP с привязкой к MAC, дополнительные блоки /24, подсети IPv6, проверка и диагностика.

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

Шаг 1: Узнайте, как выдаются ваши IP

Схема выдачиКак это выглядитКак подключаются VM
Мост / on-linkУ блока есть собственный шлюз внутри блока (например, 203.0.113.1 для 203.0.113.0/24) в той же сети, что и ваш серверVM на vmbr0 используют шлюз провайдера напрямую
Маршрутизация (routed)Провайдер маршрутизирует блок на основной IP вашего сервера; шлюза внутри блока нетХост становится маршрутизатором; VM используют хост как шлюз
Привязка к MACОтправлять трафик с этих IP может только собственный MAC сервера (или зарегистрированные виртуальные MAC)Маршрутизируемая схема на хосте или по одному зарегистрированному виртуальному MAC на каждую VM

В данных о выдаче сервера указан каждый блок IP со шлюзом и маской. Если там не сказано, маршрутизируется блок или выдан on-link, уточните у поддержки до начала настройки: попытки угадать стоят часов работы.

Шаг 2: Схема с мостом (шлюз внутри блока)

Физическая сетевая карта становится портом vmbr0, а собственный IP хоста переносится на мост. VM, подключённые к vmbr0, находятся в сети провайдера как отдельные серверы.

# /etc/network/interfaces  (main IP 198.51.100.10/24, gateway 198.51.100.1)
auto lo
iface lo inet loopback

iface eno1 inet manual

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

Дополнительный блок, выданный on-link (например, 203.0.113.0/24 со шлюзом 203.0.113.1), не требует изменений на хосте: настройте VM на vmbr0 с адресом из блока и шлюзом этого блока, например ip=203.0.113.11/24,gw=203.0.113.1.

Шаг 3: Маршрутизируемая схема (блок маршрутизируется на основной IP)

Когда провайдер маршрутизирует 203.0.113.0/24 на ваш основной IP, поместите блок на внутренний мост, не подключённый ни к одной физической сетевой карте, назначьте хосту первый адрес блока в качестве шлюза для VM и включите форвардинг.

# /etc/network/interfaces  (vmbr0 as in Step 2, plus:)
auto vmbr1
iface vmbr1 inet static
    address 203.0.113.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
echo 'net.ipv4.ip_forward = 1' > /etc/sysctl.d/80-forward.conf
sysctl --system
ifreload -a

VM подключаются к vmbr1 и используют адреса 203.0.113.2–254 со шлюзом 203.0.113.1. Поскольку хост занимает .1, а адреса сети и broadcast остаются зарезервированными, маршрутизируемая /24 даёт 253 адреса для VM. Трафик уходит через основной интерфейс хоста с собственными IP виртуальных машин в качестве адреса источника; NAT не используется.

Шаг 4: IP с привязкой к MAC

Некоторые сети принимают трафик для ваших IP только с собственного MAC-адреса сервера. У каждой VM в режиме моста свой MAC, поэтому её пакеты отбрасываются, и кажется, что у неё «нет сети», хотя конфигурация выглядит правильной. Есть два решения:

  • Маршрутизируемая схема: попросите провайдера маршрутизировать блок на основной IP сервера и настройте всё по шагу 3 — тогда весь трафик уходит с собственного MAC-адреса хоста.
  • Виртуальные MAC: если провайдер их предлагает, запросите по одному MAC на каждый IP и задайте его на сетевой карте VM: qm set 101 --net0 virtio=02:00:00:AA:BB:CC,bridge=vmbr0.

Шаг 5: Подсети IPv6 для VM

Если подсеть IPv6 (например, /64 или /56) маршрутизируется на ваш хост, работайте с ней так же, как с маршрутизируемым блоком IPv4 из шага 3: назначьте адрес из подсети на vmbr1, включите форвардинг IPv6 и используйте этот адрес как шлюз для VM.

# /etc/network/interfaces: add an IPv6 stanza to vmbr1
iface vmbr1 inet6 static
    address 2001:db8:200::1/64

echo 'net.ipv6.conf.all.forwarding = 1' > /etc/sysctl.d/81-ipv6-forward.conf
sysctl --system
ifreload -a

# VM configuration (cloud-init)
qm set 101 --ipconfig0 ip=203.0.113.11/24,gw=203.0.113.1,ip6=2001:db8:200::11/64,gw6=2001:db8:200::1

Учтите, что при включённом форвардинге Linux игнорирует router advertisements на аплинке, поэтому собственный маршрут IPv6 по умолчанию для хоста нужно задать статически на vmbr0 (секция iface vmbr0 inet6 static с address и gateway).

Если же ваша единственная /64 выдана on-link на аплинке (маршрутизатор провайдера ожидает найти каждый адрес напрямую через neighbour discovery), VM на отдельном мосту будут недоступны, пока хост не начнёт отвечать на neighbour discovery вместо них (NDP proxy, например с помощью ndppd) и маршрутизация не будет аккуратно скорректирована. Проще и надёжнее попросить у провайдера подсеть, маршрутизируемую на ваш хост; поддержка IMIDC подскажет, какой вариант доступен для вашего сервера.

Шаг 6: Применение и проверка

cp /etc/network/interfaces /root/interfaces.bak.$(date +%F)
ifreload -a

ip -br addr          # addresses on vmbr0 / vmbr1
ip route             # default route via the provider's gateway
bridge link          # which ports and VM taps belong to which bridge

# Watch ARP and traffic for one VM address while it pings out
tcpdump -ni vmbr0 host 203.0.113.11

# From inside the VM
ping -c3 203.0.113.1   # gateway
ping -c3 1.1.1.1       # internet
ping -c3 google.com    # DNS

Если VM видит шлюз, но не выходит в интернет, её трафик отбрасывается выше по сети (привязка к MAC, отсутствующий маршрут или неверная маска). Если VM не видит даже шлюз, проверьте мост, IP и префикс VM, а также разрешает ли этот адрес IP filter файрвола Proxmox.

Частые вопросы

Что выбрать: мост или маршрутизацию?

То, что соответствует схеме выдачи у провайдера. Мост проще всего, когда у блока есть собственный шлюз on-link. Маршрутизация обязательна, когда блок маршрутизируется на ваш основной IP, и это надёжный выбор, когда IP привязаны к MAC.

Можно ли совмещать на одном хосте VM с публичными IP и VM за NAT?

Да. Держите VM с публичными IP на vmbr0 или vmbr1, а VM за NAT — на отдельном приватном мосту, как описано в статье NAT-сеть в Proxmox VE.

Как IMIDC выдаёт блоки — через мост или маршрутизацией?

Это зависит от локации и сервера. Шлюз и маска указаны в данных о выдаче; если что-то неясно, создайте тикет — мы подтвердим схему и поможем с настройкой.

Если проблема не решена, создайте тикет — техническая поддержка IMIDC работает 24/7. Укажите IP хост-сервера, ваши блоки IP, содержимое /etc/network/interfaces и вывод ip -br addr и ip route, чтобы мы быстрее нашли причину.

Помог ли вам данный ответ?

Похожие руководства