Montar una red con Linux Bond y Ejecucion de Jar en LXC Alpine
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.
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. |
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.
- 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
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
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.
- ACLs: por defecto
- noatime: sí
- lazytime: sí
- discard: sí 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.
- El contenedor arranca.
- Su interfaz envía una petición DHCP.
- El servidor DHCP responde con una IP libre de su rango.
- 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.
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
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
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
- Configurar la red de Proxmox con Linux Bond + Linux Bridge.
- Usar 802.3ad solo si el switch soporta LACP; si no, usar active-backup.
- Recargar la red con
ifreload -a. - Crear un contenedor Alpine LXC por ser el más ligero.
- Instalar openjdk17-jre-headless para ejecutar el JAR con el menor peso posible.
- Subir el archivo JAR al host Proxmox por
scp. - Copiar el JAR al contenedor con
pct push. - Ejecutarlo con
java -jaro dejarlo en arranque automático con OpenRC.



Publicar comentario