Rajoute ça sur B:
iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.1 --dport 8080 -j SNAT --to-source 192.168.0.10
Sans cette règle:
-Une machine C envoie un paquet B
-B transmettra bien ce paquet à A. (tcpdump doit pouvoir le confirmer)
-Mais A reçoit un paquet ayant pour source C
-A répond à C alors que C attends logiquement une réponse de B.
-Si C est dans le même réseau que A, C recevra le paquet de 'retour'
mais l'ignorera car il ne vient pas de B.
-Si C n'est pas dans le même réseau, le paquet de 'retour' sera routé via la
gateway par défaut de A qui n'est probablement pas B dans ton cas..
Donc soit le paquet de 'retour' n'arrivera pas, soit il aura une mauvaise source et sera rejetté par C.
Par contre, si B est la gateway par défaut de A et que celle-ci (A) NAT ce qui sort, cette règle de POSTROUTING n'est pas nécessaire quand C est en dehors du réseau A,B.
# Rajoute ça sur B:
Posté par petit_bibi . En réponse au message iptables port forwarding. Évalué à 1.
iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.1 --dport 8080 -j SNAT --to-source 192.168.0.10
Sans cette règle:
-Une machine C envoie un paquet B
-B transmettra bien ce paquet à A. (tcpdump doit pouvoir le confirmer)
-Mais A reçoit un paquet ayant pour source C
-A répond à C alors que C attends logiquement une réponse de B.
-Si C est dans le même réseau que A, C recevra le paquet de 'retour'
mais l'ignorera car il ne vient pas de B.
-Si C n'est pas dans le même réseau, le paquet de 'retour' sera routé via la
gateway par défaut de A qui n'est probablement pas B dans ton cas..
Donc soit le paquet de 'retour' n'arrivera pas, soit il aura une mauvaise source et sera rejetté par C.
Par contre, si B est la gateway par défaut de A et que celle-ci (A) NAT ce qui sort, cette règle de POSTROUTING n'est pas nécessaire quand C est en dehors du réseau A,B.