Есть ли способ создать мост, используя интерфейсы со статическими маршрутами?

Для контекста я настраиваю кластер 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 ответ
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).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *