Usando iptables para redirigir todo el tráfico al servidor web local

Usando iptables para redirigir todo el tráfico al servidor web local

Hola,

Estoy intentando redirigir todo el tráfico de mi enrutador wifi a un servidor web local usando iptables. No estoy seguro de haber entendido bien el comando y también quiero excluir la IP del enrutador (172.16.0.1) de la regla para evitar bloquear el acceso al enrutador.

Lo que se me ocurrió hasta ahora:

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to 172.16.0.2:80
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to 172.16.0.2:80

Todavía no he realizado la prueba anterior porque temo que no podré volver a acceder al enrutador jajaja. ¿Cómo se puede excluir que 172.16.0.1 sea redirigido a 172.16.0.2?

Configuración: 172.16.0.2 es la IP del servidor web 172.16.0.1 es mi enrutador (dd-wrt) sin conexión a Internet.

Ejemplo de lo que estoy tratando de lograr:

  • El usuario se conecta a un punto de acceso wifi, intenta acceder a www.siteA.com y es redirigido a 172.16.0.2 (/index.html)
  • El usuario se conecta a un punto de acceso wifi, intenta acceder a www.siteB.com y es redirigido a 172.16.0.2 (/index.html)
  • El usuario intenta acceder a 172.16.0.1 y no se realiza ninguna dirección :)

¡Que tengas un gran día y gracias!

Respuesta1

Dado que las reglas de iptables se procesan en orden, la primera regla debe ser permitir todo el tráfico dirigido al enrutador.

iptables -t nat -I PREROUTING -i br0 -p tcp -d 172.16.0.1--dport 80 -j ACCEPT 

Luego agregue las reglas para redirigir el tráfico.

iptables -t nat -A PREROUTING -d !172.16.0.1 -i br0 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.2:80

No creo que esto funcione para https ya que no se conecta a un servidor con SSL.

información relacionada