Montar una red con Linux Bond y Ejecucion de Jar en LXC Alpine

Manual completo de redes en Proxmox, Bonding, Linux Bridge, Alpine LXC y despliegue de JAR
Proxmox VE Linux Bridge Linux Bond Alpine LXC Java Headless

Manual completo: redes en Proxmox, Bonding, Linux Bridge, Alpine LXC y despliegue de un JAR

Esta guía resume todo el proceso explicado: cómo unir varias tarjetas de red físicas en una sola interfaz lógica, qué diferencia hay entre Linux Bridge y OVS Bridge, cómo resetear la red de Proxmox, cómo crear un contenedor Alpine LXC muy ligero y cómo subir y ejecutar un JAR dentro del contenedor desde el host Proxmox.

1. Objetivo de la red en Proxmox

La idea era que varios contenedores se conectasen a una sola red lógica, aunque físicamente el servidor tuviera varias tarjetas de red. La forma correcta de hacerlo en Proxmox no es con iptables, sino con:

  • Linux Bond para unir varias NIC físicas.
  • Linux Bridge para presentar esa red a contenedores y máquinas virtuales.
Esquema recomendado:
NIC1 \
NIC2  > bond0 -> vmbr1 -> contenedores
NIC3 /
NIC4

2. Linux Bridge, Linux Bond, OVS Bridge, OVS Bond y OVS IntPort

Elemento Qué es Cuándo usarlo
Linux Bridge Switch virtual nativo de Linux. Opción recomendada en la mayoría de instalaciones de Proxmox.
Linux Bond Unión lógica de varias tarjetas de red físicas. Para redundancia o agregación de enlaces.
Linux VLAN Interfaz virtual para separar tráfico por VLAN. Cuando trabajas con redes segmentadas por VLAN.
OVS Bridge Bridge de Open vSwitch. Solo si necesitas una topología virtual más avanzada.
OVS Bond Agregación de NIC dentro de Open vSwitch. Si toda tu arquitectura de red está montada con OVS.
OVS IntPort Puerto interno de Open vSwitch. Escenarios más complejos de switching virtual.
Recomendación práctica: para una instalación estándar de Proxmox con LXC y varias tarjetas físicas, la mejor combinación es Linux Bond + Linux Bridge. Open vSwitch solo compensa si ya sabes que necesitas OVS.

3. Modos de bonding: 802.3ad y active-backup

Modo 802.3ad (LACP)

  • Une varias tarjetas físicas para trabajar juntas.
  • Permite agregación real de enlaces.
  • Necesita que el switch esté configurado con LACP.

Modo active-backup

  • Solo una interfaz trabaja a la vez.
  • Si falla una, entra otra.
  • No suma ancho de banda, pero es muy compatible y sencillo.
Cuándo usar cada uno:
  • 802.3ad si tienes switch gestionable con LACP.
  • active-backup si no tienes switch gestionable o quieres máxima simplicidad.

4. Configuración de red correcta en Proxmox

La configuración que se planteó es correcta en estructura: las NIC físicas van en modo manual, se crea bond0 y encima un bridge vmbr1. Había un error de sintaxis en la línea final: bridge-fd 0te. Debe ser bridge-fd 0.

Configuración con LACP (802.3ad)

auto lo
iface lo inet loopback

iface enp3s0 inet manual
iface enp4s0 inet manual
iface enp5s0 inet manual
iface enp6s0 inet manual

auto bond0
iface bond0 inet manual
    bond-slaves enp3s0 enp4s0 enp5s0 enp6s0
    bond-miimon 100
    bond-mode 802.3ad
    bond-xmit-hash-policy layer2+3

auto vmbr1
iface vmbr1 inet static
    address 192.168.1.39/24
    gateway 192.168.1.1
    bridge-ports bond0
    bridge-stp off
    bridge-fd 0

Configuración con active-backup

auto lo
iface lo inet loopback

iface enp3s0 inet manual
iface enp4s0 inet manual
iface enp5s0 inet manual
iface enp6s0 inet manual

auto bond0
iface bond0 inet manual
    bond-slaves enp3s0 enp4s0 enp5s0 enp6s0
    bond-miimon 100
    bond-mode active-backup

auto vmbr1
iface vmbr1 inet static
    address 192.168.1.39/24
    gateway 192.168.1.1
    bridge-ports bond0
    bridge-stp off
    bridge-fd 0
Importante: si usas 802.3ad y el switch no está configurado con LACP, la red puede no levantar correctamente aunque el archivo tenga buena sintaxis.

5. Comandos para revisar, levantar y resetear la red

Listar interfaces de red

ip link
ip addr
ls /sys/class/net
networkctl list

Levantar una interfaz

sudo ip link set enp3s0 up
sudo ifup enp3s0

Levantar un bridge o bond

sudo ifup vmbr1
sudo ifup bond0

Reiniciar o recargar la red en Proxmox

ifreload -a
systemctl restart networking

Validar la configuración antes de aplicarla

ifquery -a
ifreload -a -d

Guardar copia de seguridad antes de editar

cp /etc/network/interfaces /etc/network/interfaces.bak
Consejo: si administras Proxmox por red, ten cuidado al recargar la red. Si tocas la interfaz de gestión y hay un error, puedes perder la conexión.

6. Opciones de montaje y ACLs en el contenedor

Al crear el contenedor en Proxmox aparecen varias opciones de montaje. Estas fueron las explicadas:

Opción Qué hace Recomendación
discard Informa al almacenamiento de bloques ya no usados. Útil en SSD o almacenamiento thin.
lazytime Reduce escrituras de timestamps. Buena opción en contenedores ligeros.
noatime No actualiza la hora de último acceso al leer archivos. Muy recomendable para ahorrar escrituras.
nosuid Bloquea binarios con setuid/setgid en ese montaje. Más seguridad, pero no siempre conviene activarlo de entrada.

ACLs

Las ACLs son listas de control de acceso, es decir, permisos avanzados sobre archivos y carpetas. Para un contenedor ligero que solo va a ejecutar un JAR, normalmente no hacen falta.

  • Por defecto: opción recomendada si no necesitas permisos avanzados.
  • Activado: útil si vas a trabajar con varios usuarios y permisos detallados.
  • Desactivado: simplifica al máximo.
Configuración sugerida para un Alpine LXC ligero:
  • ACLs: por defecto
  • noatime:
  • lazytime:
  • discard: si usas SSD/thin
  • nosuid: no al principio

7. DHCP en el contenedor: qué pasa exactamente

Si al crear el contenedor eliges DHCP, el contenedor no escoge una IP por sí mismo. Lo que hace es pedir una IP al servidor DHCP de tu red.

  1. El contenedor arranca.
  2. Su interfaz envía una petición DHCP.
  3. El servidor DHCP responde con una IP libre de su rango.
  4. El contenedor acepta esa IP y la usa durante el tiempo asignado.

La comprobación de si la IP está libre la gestiona el servidor DHCP, no Proxmox.

Consejo: si el contenedor va a ejecutar un servicio al que quieras entrar siempre por la misma dirección, suele ser mejor usar IP fija o una reserva DHCP.

8. Elección del contenedor más ligero: Alpine

Para ejecutar un JAR con el menor peso posible, la elección más ligera es Alpine LXC. La plantilla de Alpine es mucho más pequeña que Ubuntu y, una vez desplegada, sigue siendo muy contenida.

Estimación de tamaño aproximado

  • Alpine base desplegado: alrededor de 130 MB aprox.
  • Java headless: alrededor de 150–160 MB aprox.
  • Total razonable con dependencias y tu JAR: unos 300–450 MB aprox.

Por tanto, en la práctica debería ser bastante más ligero que un LXC Ubuntu de unos 2 GB.

9. Crear el contenedor Alpine LXC

Si la plantilla ya está descargada en Proxmox, puedes crear el contenedor por interfaz web o por terminal. Ejemplo por consola:

pct create 101 local:vztmpl/alpine-3.23-default_amd64.tar.xz \
  --hostname hare \
  --cores 1 \
  --memory 256 \
  --swap 256 \
  --rootfs local-lvm:4 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp,type=veth \
  --password TuClaveFuerte

Arrancar el contenedor

pct start 101

Entrar al contenedor

pct enter 101

10. Instalar Java ligero en Alpine: openjdk17-jre-headless

Para que el contenedor siga siendo liviano, la opción recomendada es openjdk17-jre-headless, es decir, Java sin componentes gráficos.

apk update
apk add openjdk17-jre-headless
java -version
Nota: si al ejecutar el JAR aparece un error tipo UnsupportedClassVersionError, significa que el JAR fue compilado con una versión de Java más nueva que la instalada.

11. Subir el JAR al host Proxmox por SSH

La forma más directa es copiarlo desde Windows al host Proxmox con scp.

Desde CMD o PowerShell de Windows

scp "C:\ruta\hare.jar" root@192.168.1.39:/root/

Ejemplo real

scp "C:\Users\Aitor\Desktop\hare.jar" root@192.168.1.39:/root/

Si en Windows quieres limpiar la consola

cls
Importante: si aparece Permission denied, el problema es SSH, no el archivo JAR. Suele deberse a contraseña incorrecta, PermitRootLogin desactivado o PasswordAuthentication desactivado.

12. Resolver el error “Permission denied” al usar SCP

Probar acceso SSH

ssh root@192.168.1.39

Revisar configuración SSH en Proxmox

nano /etc/ssh/sshd_config

Busca o añade estas líneas:

PermitRootLogin yes
PasswordAuthentication yes

Reiniciar SSH

systemctl restart ssh

Comprobar que SSH está activo

systemctl status ssh

Ver IP real del host

ip addr

Revisar rápidamente la configuración SSH

grep -E "PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config

13. Meter el JAR dentro del LXC

Una vez que el archivo ya está en el host Proxmox, se copia al contenedor con pct push.

pct push 101 /root/hare.jar /root/hare.jar

Luego se entra al contenedor:

pct enter 101

Y se puede organizar mejor el archivo:

mkdir -p /opt/hare
mv /root/hare.jar /opt/hare/hare.jar

14. Ejecutar el JAR dentro del contenedor

Ejecución directa

java -jar /opt/hare/hare.jar

Versión mínima completa

apk update
apk add openjdk17-jre-headless
mkdir -p /opt/hare
mv /root/hare.jar /opt/hare/hare.jar
java -jar /opt/hare/hare.jar

15. Arrancar el JAR automáticamente al iniciar el contenedor

En Alpine se puede crear un servicio con OpenRC.

cat > /etc/init.d/hare <<'EOF'
#!/sbin/openrc-run
name="hare"
command="/usr/bin/java"
command_args="-jar /opt/hare/hare.jar"
command_background="yes"
pidfile="/run/${RC_SVCNAME}.pid"

depend() {
    need net
}
EOF

chmod +x /etc/init.d/hare
rc-update add hare default
rc-service hare start
rc-service hare status

16. Resumen final del flujo completo

  1. Configurar la red de Proxmox con Linux Bond + Linux Bridge.
  2. Usar 802.3ad solo si el switch soporta LACP; si no, usar active-backup.
  3. Recargar la red con ifreload -a.
  4. Crear un contenedor Alpine LXC por ser el más ligero.
  5. Instalar openjdk17-jre-headless para ejecutar el JAR con el menor peso posible.
  6. Subir el archivo JAR al host Proxmox por scp.
  7. Copiar el JAR al contenedor con pct push.
  8. Ejecutarlo con java -jar o dejarlo en arranque automático con OpenRC.
Guía técnica resumida de redes, contenedores LXC y despliegue ligero de Java en Proxmox. El enlace de descarga no se incluye en esta versión, tal y como se indicó.

Publicar comentario