Estoy usando este comando para establecer NAT en mi contenedor VM:
iptables -t nat -A PREROUTING -d ${MAIN_IP} -p tcp --dport ${2} -j DNAT --to-destination ${SUBNET}${3}
con
- MAIN_IP es la IP global del servidor principal
- SUBRED son los primeros tres números de mi subred de VM, por ejemplo, "192.168.1".
- $2 siendo el puerto que quiero reenviar
- $3 es el último segmento de subred, por ejemplo, 20
Esto funciona bien para NATing directo.
Pero hoy quería declarar un puerto DNAT a SSH, así que configuré $2 en 5022 y $3 en 20:22, lo que resultó en la siguiente línea, para mayor claridad:
iptables -t nat -A PREROUTING -d ${MAIN_IP} -p tcp --dport 5022 -j DNAT --to-destination 192.168.1.20:22
Sin embargo, este no funciona: las conexiones se agotan cuando intento conectarme por ssh a la VM. Tenga en cuenta que no expiran cuando no uso nat, por lo que funciona bien. Sólo que no funciona a través de NAT.ssh [email protected]
UFW no está habilitado en el servidor de contenedor. No escucha prácticamente nada, por lo que no es necesario cerrar nada, o eso espero.
Supongo que la regla DNAT es correcta, entonces, ¿cómo determino qué me está bloqueando?
Editar: salida de la tabla nat:
#iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere my-server tcp dpt:2113 to:192.168.1.35
DNAT tcp -- anywhere my-server tcp dpt:2115 to:192.168.1.35
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
Edición 2: estoy resolviendo temporalmente el problema de que VM sshd escuche varios puertos. De esta forma, NAT funciona bien.