Esta pagina se ve mejor con JavaScript habilitado

Evitar Hairpinning con iptables

 ·  🎃 kr0m

Hay muchos routers cuyas entrañas es un linux empotrado, esto nos permite una gran flexibilidad. En esta ocasión vamos a explicar como evitar el problema del Hairpining, este consiste en que no se puede utilizar la ip WAN del router desde dentro de la LAN.

Para solventar esta problemática se puede optar por dos soluciones:

  • Configurar un proxy
  • Reglas de iptables

Teniendo en cuenta que el esquema de flujo de iptables es el siguiente: 

En la chain PREROUTING modificamos la dirección destino:

iptables -t nat -A PREROUTING -s RED_LAN/24 -d WAN -p PROTO --dport PORT -i INTERFAZ_LAN_ROUTER -j DNAT --to-destination IP_LAN_SERVER:PORT

NOTA: Con esto ya tendríamos la ida pero si lo dejásemos así la conexión iniciada por el cliente tendría como destino la ip WAN, en cambio respondería IP_LAN_SERVER, como no tiene constancia de esta conexión el cliente resetearía la conexión mediante un RST.

Ahora le indicamos que haga SNAT dentro de la misma LAN:

iptables -t nat -I POSTROUTING 1 -p PROTO --dport PORT -s RED_LAN/24 -d IP_LAN_SERVER -j SNAT --to IP_LAN_ROUTER

Con esto ya lo tendríamos ;)

Si te ha gustado el artículo puedes invitarme a un RedBull aquí