¿Iptables redirige a localhost?


13

Supongamos que tengo una red con un servidor que enruta todas las conexiones desde el interior de la red a Internet. ¿Cómo puedo configurar iptables para que, en lugar de enrutar las conexiones entrantes a Internet, las enrute al puerto 8080 localhost? Se agradece toda la ayuda.


El problema es que con la redirección simple (dirección IP de destino NAT) perderá la dirección IP de destino original. ¿Desea configurar un proxy HTTP transparente o debería procesar otros protocolos que no sean HTTP también?
pabouk

No importa si es transparente o no
DankMemes

Redirigir todo el tráfico a un proxy es una base para proxy transparente :)
pabouk

Aquí hay otra respuesta que realmente me ayudó: unix.stackexchange.com/questions/111433/…
Wren T.

Respuestas:


6
sysctl net.ipv4.ip_forward=1 
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080

1
no use negrita ....

¡Gracias! Todavía no lo he probado, pero sospecho que me he perdido el comando de reenvío de IP. Y la próxima vez, utilice bloques de código, no en negrita.
DankMemes

@AlexAntonov por favor use bloques de código. Seleccione su texto en modo de edición y haga clic en el icono de corchetes.
DankMemes

@ZoveGames, lo siento, lo arreglé.
Alex Antonov

2
Experimenté con esto. El ip_forward sysctl no es necesario. Sin embargo, la opción route_localnet aquí es. Ahora veo que esto es exactamente lo que dice la respuesta de Juan Céspedes .
Matt Joiner

31

eso se puede hacer con iptables, pero solo con kernel> = 3.6.

Tendrás que hacer:

sysctl -w net.ipv4.conf.all.route_localnet=1
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080

ip_forwardno es necesario, porque el paquete no se reenvía, pero si no incluye el sysctl for route_localnet(que funciona solo en núcleos> = 3.6), el paquete lo descartará porque lo considera un "marciano". desde el exterior y tener una dirección de destino de 127.0.0.1


Sí, eso funciona
Nick De Greek

No sabía sobre route_localnet. Así que la vieja escuela y no podía entender por qué ip_forward no estaba funcionando (sospechaba que no era necesario, pero lo intenté de todos modos).
dmourati

1
Asegúrese de guardarlo; net.ipv4.conf.all.route_localnet=1de lo /etc/sysctl.confcontrario, no será persistente y, después de reiniciar, la variable volverá a 0, lo que provocará la caída del paquete. Entonces sería muy difícil entender por qué ahora todo no funciona ... me pasó a mí. ;)
saber,

Perdón por negar una vieja pregunta, pero ¿hay un equivalente ipv6 net.ipv4.conf.all.route_localnetpara usar ip6tables?
Kebian
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.