Для контекста я настраиваю кластер Proxmox с 3 узлами для личного использования и настраиваю 2 разных ячеистых сети на 4 интерфейсах (по 2 интерфейса на узел для каждой ячеистой сети). Таким образом, каждый узел имеет прямое соединение со всеми остальными узлами. Чтобы заставить сеть работать, я полагаюсь на статические маршруты на каждом интерфейсе, настроенные как таковые:
auto lo
iface lo inet loopback
iface enp5s0f0 inet manual
iface enp5s0f1 inet manual
auto eno1
iface eno1 inet static
address 10.83.86.10/24
up ip route add 10.83.86.11/32 dev eno1
down ip route del 10.83.86.11/32
auto eno2
iface eno2 inet static
address 10.83.86.10/24
up ip route add 10.83.86.12/32 dev eno2
down ip route del 10.83.86.12/32
auto eno3
iface eno3 inet static
address 10.83.67.10/24
up ip route add 10.83.67.11/32 dev eno3
down ip route del 10.83.67.11/32
auto eno4
iface eno4 inet static
address 10.83.67.10/24
up ip route add 10.83.67.12/32 dev eno4
down ip route del 10.83.67.12/32
auto vmbr0
iface vmbr0 inet static
address 192.168.0.20/24
gateway 192.168.0.1
bridge-ports enp5s0f0
bridge-stp off
bridge-fd 0
source /etc/network/interfaces.d/*
IP-адреса различаются между узлами, но в остальном конфигурация одинакова. Интерфейсы eno1 и eno2 являются частью 10.83.86.0 сеть, и eno3 и eno4 являются частью 10.83.67.0 сеть.
Возникает проблема, что я не знаю, как выставить эти сети для ВМ и контейнеров, работающих на Proxmox. Например, я хочу иметь возможность балансировать нагрузку и прокси-туннелировать веб-интерфейс для Proxmox, который я планирую предоставлять только в ячеистой сети. Другой пример: мне нужны определенные рабочие нагрузки, чтобы получить доступ к общедоступной сети Ceph, например, драйвер CSI Ceph Kubernetes.
Насколько я понимаю, Proxmox требует моста Linux для виртуализации виртуальной сетевой карты. Я попытался переписать конфигурацию своего интерфейса как:
auto eno1
iface eno1 inet manual
up ip route add 10.83.86.11/32 dev eno1
down ip route del 10.83.86.11/32
auto eno2
iface eno2 inet manual
up ip route add 10.83.86.12/32 dev eno2
down ip route del 10.83.86.12/32
auto vmbr1
iface vmbr1 inet static
address 10.83.86.10/24
bridge-ports eno1 eno2
bridge-stp off
bridge-fd 0
Но эта конфигурация просто… ломает сеть между узлами, когда я перезагружаюсь с помощью ifreload -a. Я не совсем понимаю, почему.
1 ответ
Маршруты принадлежат IP-интерфейсам, а не мостовым портам. Ваши мостовые порты не должны содержать буквально ничего. Все маршруты связаны с интерфейсами, имеющими IP-адреса.
Подумайте, было ли у вас это:
auto eno1
iface eno1 inet static
address 10.83.86.10/24
up ip route add 10.83.86.11/32 dev eno1
down ip route del 10.83.86.11/32
то становится так:
iface eno1 inet manual
auto vmbr1
iface vmbr1 inet static
address 10.83.86.10/24
up ip route add 10.83.86.11/32 dev vmbr1
down ip route del 10.83.86.11/32
bridge-ports eno1
bridge-stp off
bridge-fd 0
Обратите внимание, как все, что связано с IP, просто переместилось из физического сетевого адаптера в мост. NIC становится интерфейсом только для L2, думайте о нем как о порте коммутатора. Коммутаторы не имеют IP-адресов на каждом интерфейсе, как и мостовые интерфейсы.
Вы можете объединить несколько физических сетевых адаптеров, указав их все в bridge-ports. Ни один из портов не будет иметь конфигурацию IP. Это может быть только у моста.
Я не могу понять, чего вы собираетесь достичь, имея для каждого интерфейса индивидуальный адрес /32 и индивидуальный маршрут. Я не знаю, зачем вам это, но эта настройка сети выглядит довольно странно.
Тем не менее, если вы хотите сохранить структуру сети (уровень 3), как указано в вашем вопросе, вам необходимо создать выделенный мост для каждого IP-адреса и поместить соответствующую виртуальную машину в этот мост.
Если все это предназначено только для связи между хостом и виртуальной машиной, вам не нужно подключать какие-либо физические сетевые карты к этим мостам. Оставлять vmbrX без Любые порты моста, но настройте IP-адреса. Вы сможете поместить виртуальные машины в этот «пустой» мост, и они будут обмениваться данными между собой и хостом. Физические сетевые карты должны быть частью моста только в том случае, если вам нужно соединить этот сегмент виртуальной сети с физической сетью на уровне 2 (например, Ethernet).
