La solution acceptée fonctionne lorsque l'hôte de destination et la passerelle sont sur le même sous-réseau (comme c'est le cas ici, tous deux sont sur eth0
192.168.1.0/24).
Voici une solution générique pour quand la passerelle, la source et la destination sont tous sur des sous-réseaux différents.
1) Activer l'acheminement IP :
sysctl net.ipv4.conf.eth0.forwarding=1
sysctl net.ipv6.conf.eth0.forwarding=1
//note: si l'acheminement vers/depuis <code>localhost</code>, définir également <code>sysctl net.ipv4.conf.eth0.route_localnet=1</code>
2) Ajouter 2 règles iptables pour transmettre un port TCP spécifique :
Pour réécrire l'IP de destination du paquet (et inversement dans le paquet de réponse) :
iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 8001 -j DNAT --to-destination 192.168.1.200:8080
Pour réécrire l'IP de source du paquet vers l'IP de la passerelle (et inversement dans le paquet de réponse) :
iptables -A POSTROUTING -t nat -p tcp -d 192.168.1.200 --dport 8080 -j MASQUERADE
3) Si vous n'avez pas de règle de pare-feu par défaut ACCEPT
, autorisez le trafic vers la destination :
iptables -A FORWARD -p tcp -d 192.168.1.200 --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
4) Tester le nouveau configuration. Si cela fonctionne, assurez-vous que les modifications persistent après les redémarrages :
cat < /etc/sysctl.d/99-forwarding.conf
sysctl net.ipv4.conf.eth0.forwarding=1
sysctl net.ipv6.conf.eth0.forwarding=1
EOF
iptables-save > /etc/network/iptables.up.rules
echo '#!/bin/sh' > /etc/network/if-pre-up.d/iptables
echo "`which iptables-restore` < /etc/network/iptables.up.rules" >> /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables
7 votes
NAT COMMENT FAIRE
0 votes
Je vais opter pour la balise n-p-r (bien que cela puisse être lié à la programmation, bien que mal formulé bien sûr.)
2 votes
Que diriez-vous de ceci : Je suis un programmeur essayant de mettre en place un environnement pour pouvoir déboguer mon application serveur dans Eclipse, appelée depuis l'intranet. Cela vous convient-il ?
0 votes
Bien sûr, c'est ce que je voulais dire par "mal formulé"... Pourriez-vous modifier la question en conséquence?