Iptables redirige vers localhost?


13

Supposons que j'ai un réseau avec un serveur acheminant toutes les connexions de l'intérieur du réseau vers Internet. Comment puis-je configurer iptables pour qu'au lieu de router les connexions entrantes vers Internet, il les achemine vers le port localhost 8080. Toute aide est appréciée.


Le problème est qu'avec une redirection simple (adresse IP de destination NAT), vous perdrez l'adresse IP de destination d'origine. Voulez-vous configurer un proxy HTTP transparent ou doit-il également traiter d'autres protocoles que HTTP?
pabouk

Peu importe que ce soit transparent ou non
DankMemes

Rediriger tout le trafic vers un proxy est une base pour un proxy transparent :)
pabouk

Voici une autre réponse qui m'a vraiment aidé: unix.stackexchange.com/questions/111433/…
Wren T.

Réponses:


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
n'utilisez pas de gras ....

Merci! Je n'ai pas encore essayé mais je soupçonne que ce qui me manque est la commande de transfert ip. Et la prochaine fois, veuillez utiliser des blocs de code, pas en gras.
DankMemes

@AlexAntonov veuillez utiliser des blocs de code. Sélectionnez votre texte en mode édition et cliquez sur l'icône des crochets.
DankMemes

@ZoveGames, désolé, l'a corrigé.
Alex Antonov

2
J'ai expérimenté cela. Le sysctl ip_forward n'est pas nécessaire. Cependant, l'option route_localnet est ici . Je vois maintenant que c'est exactement ce que déclare la réponse de Juan Cespedes .
Matt Joiner

31

cela peut être fait avec iptables, mais uniquement avec le noyau> = 3.6.

Vous devrez faire:

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_forwardn'est pas nécessaire, car le paquet n'est pas transmis, mais si vous n'incluez pas le sysctl for route_localnet(qui ne fonctionne que dans les noyaux> = 3.6), le paquet sera abandonné par le noyau car il le considère comme un "martien", à venir de l'extérieur et ayant une adresse de destination de 127.0.0.1


Ouaip, ça marche
Nick De Greek

Ne connaissait pas route_localnet. Tellement vieille école et ne pouvait pas comprendre pourquoi ip_forward ne fonctionnait pas (soupçonné que ce n'était pas nécessaire mais a quand même essayé).
dmourati

1
Assurez- vous que vous enregistrez net.ipv4.conf.all.route_localnet=1dans /etc/sysctl.confsinon il ne sera pas persistant et après le redémarrage de la variable va revenir à 0, ce qui provoque le paquet abandonné. Ensuite, il serait très difficile de comprendre pourquoi maintenant tout ne fonctionne pas ... cela m'est arrivé. ;)
savoir

Désolé de poser une vieille question, mais existe-t-il un équivalent ipv6 net.ipv4.conf.all.route_localnetà utiliser avec ip6tables?
Kebian
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.