Para probar algunas cosas y experimentar servicios en la empresa tenemos maquinas virtuales dentro de una LAN. Cuando quiero probar algo iba a conectarme directamente a la LAN en el datacenter y ocupaba un proxy. Quería algo «mas eficiente», como entrar desde internet por algún puerto para llegar al equipo en la LAN. La solución fue con Iptables.
Tenemos un equipo con dos interfaces, eth0 en la WAN y eth1 a la LAN. Estuve un rato buscando la solución y me faltaba la regla MASQUERADE
Esto lo tengo corriendo en un Debian 6.0 con kernel 2.6.32-5 dejo acá las reglas de iptables por si alguno las necesita
iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X
echo "1">/proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT iptables -A PREROUTING -t nat -p tcp -d IP_WAN --dport 3888 -j DNAT --to IP_LAN:80 iptables -t nat -A POSTROUTING -j MASQUERADE -o eth1
Lo que hace esto es cuando entro al puerto 3888 de la WAN me atiende el equipo de la LAN en el puerto 80