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.