
Para el contexto, estoy configurando un clúster Proxmox de 3 nodos para uso personal y estoy configurando 2 redes de malla diferentes en 4 interfaces (2 interfaces por nodo para cada red de malla). De esa manera, cada nodo tiene una conexión directa con todos los demás nodos. Para que la red funcione, dependo de rutas estáticas en cada interfaz, configuradas como tal:
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/*
Las direcciones IP difieren entre los nodos, pero por lo demás la configuración es la misma. Interfaces eno1
y eno2
son parte de la 10.83.86.0
red, y eno3
y eno4
son parte de la 10.83.67.0
red.
El problema surge porque no sé cómo exponer estas redes a máquinas virtuales y contenedores que se ejecutan en Proxmox. Por ejemplo, quiero poder equilibrar la carga y hacer un túnel proxy en la interfaz web de Proxmox, que planeo exponer solo en la red de malla. Otro ejemplo es que necesito ciertas cargas de trabajo para poder acceder a la red pública de Ceph, como por ejemplo el controlador CSI de Ceph Kubernetes.
Según tengo entendido, Proxmox requiere un puente Linux para la virtualización de tarjetas de red virtuales. Intenté reescribir la configuración de mi interfaz como:
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
Pero esta configuración simplemente... interrumpe la red entre nodos cuando recargo con ifreload -a
. No entiendo del todo por qué.
Respuesta1
Las rutas pertenecen a interfaces IP, no a puertos puente. Los puertos de su puente no deberían contener literalmente nada. Todas las rutas están asociadas con interfaces que tienen direcciones IP.
Considere si tuviera esto:
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
entonces se convierte en esto:
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
Observe cómo todo el material relacionado con IP simplemente se trasladó de la NIC física al puente. La NIC se convierte en una interfaz solo L2; considérelo como un puerto de conmutador. Los conmutadores no tienen direcciones IP en cada interfaz, ni tampoco las interfaces en puente deberían tenerlas.
Puede conectar varias NIC físicas como lo hizo especificándolas todas en bridge-ports
. Ninguno de los puertos tendrá una configuración IP. Sólo el puente puede tenerlo.
No puedo entender lo que va a lograr al tener cada interfaz con una dirección /32 individual y una ruta individual. No sé por qué quieres eso, pero esta configuración de red parece bastante extraña.
Sin embargo, si desea mantener la estructura de la red (capa 3) como la que tiene en su pregunta, debe crear un puente dedicado para cada dirección IP y colocar la máquina virtual respectiva en ese puente.
Si todo esto es solo para la comunicación de host a máquina virtual, no es necesario incorporar ninguna NIC física a esos puentes. Dejar vmbrX
sincualquierpuentear puertos, pero configurar direcciones IP. Podrá colocar máquinas virtuales en ese puente "vacío" y se comunicarán entre sí y con el host. Las NIC físicas solo deben ser parte del puente si necesita conectar este segmento de red virtual con una red física en la capa 2 (por ejemplo, Ethernet).