Ma connexion Internet est delivrée par une C-Box qui fait office de
routeur. Je souhaite cependant gerer les fonctions de routage sur un
serveur Linux.
J'ai donc installé un serveur sous Linux (Debian sarge) avec 2 cartes
ethernet (eth1 vers la CBox et eth0 vers le LAN), une branchée
directement sur la CBox et une seconde sur le LAN.
Donc, la CBox recoit elle l'adresse IP publique, j'ai donc defini sa
patte interne en 192.168.30.1 et je lui ai indiqué de rediriger toutes
les requetes sur 192.168.30.3 (qui est l'adresse de eth1 sur le serveur)
Jusque là, tout se passe à peu pret normalement :
Les services tournant sur la carte eth1 du serveur sont bien visible
depuis l'Internet.
Le problème arrive dés que je tente de faire du NAT.
Voici les commandes iptables que je tappe :
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT
Pour ouvrir le port 3389 sur la carte eth1
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT --to
192.168.0.39
pour rediriger vers l'adresse 192.168.0.39 de mon lan.
J'avais deja fait ce genre d'operation auparavant sans le moindre
probleme, mais là, ca ne fonctionne pas.
Quand j'essai de me connecter de l'exterieur, la tentative tombe en timeout.
Si je passe un nmap de l'exterieur, je vois le port 3389 comme filtered.
Je ne comprend pas bien ce qu'il se passe, si quelqu'un a une idée.
Le problème arrive dés que je tente de faire du NAT.
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT Pour ouvrir le port 3389 sur la carte eth1 # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT --to 192.168.0.39
pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets entrants à destination de la machine. Les paquets entrants à destination d'une autre machine traversent la chaîne FORWARD.
Le problème arrive dés que je tente de faire du NAT.
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT
Pour ouvrir le port 3389 sur la carte eth1
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT --to
192.168.0.39
pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets
entrants à destination de la machine. Les paquets entrants à destination
d'une autre machine traversent la chaîne FORWARD.
Le problème arrive dés que je tente de faire du NAT.
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT Pour ouvrir le port 3389 sur la carte eth1 # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT --to 192.168.0.39
pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets entrants à destination de la machine. Les paquets entrants à destination d'une autre machine traversent la chaîne FORWARD.
Le problème arrive dés que je tente de faire du NAT.
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT Pour ouvrir le port 3389 sur la carte eth1 # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT --to 192.168.0.39
pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets entrants à destination de la machine. Les paquets entrants à destination d'une autre machine traversent la chaîne FORWARD.
Donc, je dois rajouter la meme regle vers la chaine FORWARD ?
Salut,
Le problème arrive dés que je tente de faire du NAT.
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT
Pour ouvrir le port 3389 sur la carte eth1
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT
--to 192.168.0.39
pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets
entrants à destination de la machine. Les paquets entrants à destination
d'une autre machine traversent la chaîne FORWARD.
Le problème arrive dés que je tente de faire du NAT.
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT Pour ouvrir le port 3389 sur la carte eth1 # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT --to 192.168.0.39
pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets entrants à destination de la machine. Les paquets entrants à destination d'une autre machine traversent la chaîne FORWARD.
Donc, je dois rajouter la meme regle vers la chaine FORWARD ?
Pascal Hambourg
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT Pour ouvrir le port 3389 sur la carte eth1 # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT --to 192.168.0.39 pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets entrants à destination de la machine. Les paquets entrants à destination d'une autre machine traversent la chaîne FORWARD.
Donc, je dois rajouter la meme regle vers la chaine FORWARD ?
Non, tu dois la *déplacer* dans la chaîne FORWARD. En effet cette règle n'a rien à faire dans la chaine INPUT. Au passage, tu peux ajouter la correspondance sur l'interface de sortie "-o eth0". Et ne pas oublier d'autoriser les paquets de réponse dans l'autre sens, toujours dans la chaîne FORWARD.
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT
Pour ouvrir le port 3389 sur la carte eth1
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT
--to 192.168.0.39
pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets
entrants à destination de la machine. Les paquets entrants à
destination d'une autre machine traversent la chaîne FORWARD.
Donc, je dois rajouter la meme regle vers la chaine FORWARD ?
Non, tu dois la *déplacer* dans la chaîne FORWARD. En effet cette règle
n'a rien à faire dans la chaine INPUT. Au passage, tu peux ajouter la
correspondance sur l'interface de sortie "-o eth0". Et ne pas oublier
d'autoriser les paquets de réponse dans l'autre sens, toujours dans la
chaîne FORWARD.
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT Pour ouvrir le port 3389 sur la carte eth1 # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT --to 192.168.0.39 pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets entrants à destination de la machine. Les paquets entrants à destination d'une autre machine traversent la chaîne FORWARD.
Donc, je dois rajouter la meme regle vers la chaine FORWARD ?
Non, tu dois la *déplacer* dans la chaîne FORWARD. En effet cette règle n'a rien à faire dans la chaine INPUT. Au passage, tu peux ajouter la correspondance sur l'interface de sortie "-o eth0". Et ne pas oublier d'autoriser les paquets de réponse dans l'autre sens, toujours dans la chaîne FORWARD.
olaf
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT Pour ouvrir le port 3389 sur la carte eth1 # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT --to 192.168.0.39 pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets entrants à destination de la machine. Les paquets entrants à destination d'une autre machine traversent la chaîne FORWARD.
Donc, je dois rajouter la meme regle vers la chaine FORWARD ?
Non, tu dois la *déplacer* dans la chaîne FORWARD. En effet cette règle n'a rien à faire dans la chaine INPUT. Au passage, tu peux ajouter la correspondance sur l'interface de sortie "-o eth0". Et ne pas oublier d'autoriser les paquets de réponse dans l'autre sens, toujours dans la chaîne FORWARD.
Gasp... Cela ne passe toujours pas... Voici ce que j'ai indiqué comme regles :
Mais le port en question n'apparait toujours pas ouvert de l'exterieur.
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT
Pour ouvrir le port 3389 sur la carte eth1
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT
--to 192.168.0.39
pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets
entrants à destination de la machine. Les paquets entrants à
destination d'une autre machine traversent la chaîne FORWARD.
Donc, je dois rajouter la meme regle vers la chaine FORWARD ?
Non, tu dois la *déplacer* dans la chaîne FORWARD. En effet cette règle
n'a rien à faire dans la chaine INPUT. Au passage, tu peux ajouter la
correspondance sur l'interface de sortie "-o eth0". Et ne pas oublier
d'autoriser les paquets de réponse dans l'autre sens, toujours dans la
chaîne FORWARD.
Gasp...
Cela ne passe toujours pas...
Voici ce que j'ai indiqué comme regles :
# iptables -A INPUT -p tcp -m tcp -i eth1 --dport 3389 -j ACCEPT Pour ouvrir le port 3389 sur la carte eth1 # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 3389 -J DNAT --to 192.168.0.39 pour rediriger vers l'adresse 192.168.0.39 de mon lan.
Rappel : la chaîne INPUT d'iptables ne voit passer que les paquets entrants à destination de la machine. Les paquets entrants à destination d'une autre machine traversent la chaîne FORWARD.
Donc, je dois rajouter la meme regle vers la chaine FORWARD ?
Non, tu dois la *déplacer* dans la chaîne FORWARD. En effet cette règle n'a rien à faire dans la chaine INPUT. Au passage, tu peux ajouter la correspondance sur l'interface de sortie "-o eth0". Et ne pas oublier d'autoriser les paquets de réponse dans l'autre sens, toujours dans la chaîne FORWARD.
Gasp... Cela ne passe toujours pas... Voici ce que j'ai indiqué comme regles :
Ça n'a rien à voir avec ton problème, mais tu peux ajouter "-o eth0" et "-d 192.168.0.39" pour que la règle n'autorise que les connexions redirigées par la règle DNAT.
Mais le port en question n'apparait toujours pas ouvert de l'exterieur.
Tu es sûr que la C-box redirige bien tout vers le serveur ? Tu as bien une règle qui accepte les paquets retour dans l'autre sens ? Pas de règle placée avant qui pourrait bloquer les paquets ? Que donne un tcptraceroute sur le port 3389 depuis l'extérieur ?
Ça n'a rien à voir avec ton problème, mais tu peux ajouter "-o eth0" et
"-d 192.168.0.39" pour que la règle n'autorise que les connexions
redirigées par la règle DNAT.
Mais le port en question n'apparait toujours pas ouvert de l'exterieur.
Tu es sûr que la C-box redirige bien tout vers le serveur ?
Tu as bien une règle qui accepte les paquets retour dans l'autre sens ?
Pas de règle placée avant qui pourrait bloquer les paquets ?
Que donne un tcptraceroute sur le port 3389 depuis l'extérieur ?
Ça n'a rien à voir avec ton problème, mais tu peux ajouter "-o eth0" et "-d 192.168.0.39" pour que la règle n'autorise que les connexions redirigées par la règle DNAT.
Mais le port en question n'apparait toujours pas ouvert de l'exterieur.
Tu es sûr que la C-box redirige bien tout vers le serveur ? Tu as bien une règle qui accepte les paquets retour dans l'autre sens ? Pas de règle placée avant qui pourrait bloquer les paquets ? Que donne un tcptraceroute sur le port 3389 depuis l'extérieur ?
Francis Chartier
Dans l'article <452e12d6$0$23131$, écrivait...
Gasp... Cela ne passe toujours pas... Voici ce que j'ai indiqué comme regles :
Ça n'a rien à voir avec ton problème, mais tu peux ajouter "-o eth0" et "-d 192.168.0.39" pour que la règle n'autorise que les connexions redirigées par la règle DNAT.
Mais le port en question n'apparait toujours pas ouvert de l'exterieur.
Tu es sûr que la C-box redirige bien tout vers le serveur ?
Quand le service est sur la box Linux, le port apparait bien en open (resultat d'un nmap depuis l'exterieur) Quand le service est sur une machine du LAN et que j'applique ces regles, le service apparait, mais en "filtered"
Tu as bien une règle qui accepte les paquets retour dans l'autre sens ?
Quelle regle dois je appliquer pour cela ?
Pas de règle placée avant qui pourrait bloquer les paquets ?
Il ne semble pas
Que donne un tcptraceroute sur le port 3389 depuis l'extérieur ?
tcptraceroute 213.223.113.149 3389 Selected device eth0, address 192.168.0.1, port 38252 for outgoing packets Tracing the path to mx.cadic.fr (213.223.113.149) on TCP port 2021, 30 hops max 1 192.168.0.254 0.953 ms 0.521 ms 0.489 ms 2 82.226.126.254 30.491 ms 29.728 ms 30.128 ms 3 vlq-6k-2-a5.routers.proxad.net (213.228.4.254) 32.592 ms 29.737 ms 44.086 ms 4 * * * 5 * * * 6 Ten9-1.th21-co-1.n9uf.net (84.96.235.37) 152.681 ms * 31.513 ms 7 V4090.abv1-co-1.n9uf.net (62.39.148.18) 30.784 ms * 30.860 ms 8 V4069.abv1-co-1.n9uf.net (62.39.148.101) 31.142 ms * 45.928 ms 9 34.243.96-84.rev.gaoland.net (84.96.243.34) 32.208 ms 31.021 ms 31.348 ms 10 195.115.106.77 31.257 ms 31.668 ms 31.037 ms 11 213.223.42.85 31.241 ms 31.313 ms 30.926 ms 12 * * * 13 213.223.113.149 49.599 ms 83.431 ms 50.134 ms 14 * * * 15 * 213.223.113.149 52.911 ms !H *
Ça n'a rien à voir avec ton problème, mais tu peux ajouter "-o eth0" et
"-d 192.168.0.39" pour que la règle n'autorise que les connexions
redirigées par la règle DNAT.
Mais le port en question n'apparait toujours pas ouvert de l'exterieur.
Tu es sûr que la C-box redirige bien tout vers le serveur ?
Quand le service est sur la box Linux, le port apparait bien en open
(resultat d'un nmap depuis l'exterieur)
Quand le service est sur une machine du LAN et que j'applique ces
regles, le service apparait, mais en "filtered"
Tu as bien une règle qui accepte les paquets retour dans l'autre sens ?
Quelle regle dois je appliquer pour cela ?
Pas de règle placée avant qui pourrait bloquer les paquets ?
Il ne semble pas
Que donne un tcptraceroute sur le port 3389 depuis l'extérieur ?
tcptraceroute 213.223.113.149 3389
Selected device eth0, address 192.168.0.1, port 38252 for outgoing packets
Tracing the path to mx.cadic.fr (213.223.113.149) on TCP port 2021, 30
hops max
1 192.168.0.254 0.953 ms 0.521 ms 0.489 ms
2 82.226.126.254 30.491 ms 29.728 ms 30.128 ms
3 vlq-6k-2-a5.routers.proxad.net (213.228.4.254) 32.592 ms 29.737
ms 44.086 ms
4 * * *
5 * * *
6 Ten9-1.th21-co-1.n9uf.net (84.96.235.37) 152.681 ms * 31.513 ms
7 V4090.abv1-co-1.n9uf.net (62.39.148.18) 30.784 ms * 30.860 ms
8 V4069.abv1-co-1.n9uf.net (62.39.148.101) 31.142 ms * 45.928 ms
9 34.243.96-84.rev.gaoland.net (84.96.243.34) 32.208 ms 31.021 ms
31.348 ms
10 195.115.106.77 31.257 ms 31.668 ms 31.037 ms
11 213.223.42.85 31.241 ms 31.313 ms 30.926 ms
12 * * *
13 213.223.113.149 49.599 ms 83.431 ms 50.134 ms
14 * * *
15 * 213.223.113.149 52.911 ms !H *
Ça n'a rien à voir avec ton problème, mais tu peux ajouter "-o eth0" et "-d 192.168.0.39" pour que la règle n'autorise que les connexions redirigées par la règle DNAT.
Mais le port en question n'apparait toujours pas ouvert de l'exterieur.
Tu es sûr que la C-box redirige bien tout vers le serveur ?
Quand le service est sur la box Linux, le port apparait bien en open (resultat d'un nmap depuis l'exterieur) Quand le service est sur une machine du LAN et que j'applique ces regles, le service apparait, mais en "filtered"
Tu as bien une règle qui accepte les paquets retour dans l'autre sens ?
Quelle regle dois je appliquer pour cela ?
Pas de règle placée avant qui pourrait bloquer les paquets ?
Il ne semble pas
Que donne un tcptraceroute sur le port 3389 depuis l'extérieur ?
tcptraceroute 213.223.113.149 3389 Selected device eth0, address 192.168.0.1, port 38252 for outgoing packets Tracing the path to mx.cadic.fr (213.223.113.149) on TCP port 2021, 30 hops max 1 192.168.0.254 0.953 ms 0.521 ms 0.489 ms 2 82.226.126.254 30.491 ms 29.728 ms 30.128 ms 3 vlq-6k-2-a5.routers.proxad.net (213.228.4.254) 32.592 ms 29.737 ms 44.086 ms 4 * * * 5 * * * 6 Ten9-1.th21-co-1.n9uf.net (84.96.235.37) 152.681 ms * 31.513 ms 7 V4090.abv1-co-1.n9uf.net (62.39.148.18) 30.784 ms * 30.860 ms 8 V4069.abv1-co-1.n9uf.net (62.39.148.101) 31.142 ms * 45.928 ms 9 34.243.96-84.rev.gaoland.net (84.96.243.34) 32.208 ms 31.021 ms 31.348 ms 10 195.115.106.77 31.257 ms 31.668 ms 31.037 ms 11 213.223.42.85 31.241 ms 31.313 ms 30.926 ms 12 * * * 13 213.223.113.149 49.599 ms 83.431 ms 50.134 ms 14 * * * 15 * 213.223.113.149 52.911 ms !H *
olaf
C'est une erreur de copier-coller votre --to 192.168.0.39 ?
oui
Il me semble que la syntaxe correcte est --to-destination xx.xx.xx.xx
Vous avez raison.
C'est une erreur de copier-coller votre --to 192.168.0.39 ?
oui
Il me semble que la syntaxe correcte est --to-destination xx.xx.xx.xx
C'est une erreur de copier-coller votre --to 192.168.0.39 ?
Il me semble que la syntaxe correcte est --to-destination xx.xx.xx.xx
--to est un raccourci aussi bien pour --to-destination (avec la cible DNAT) que pour --to-source (avec la cible SNAT).
Pascal Hambourg
Tu as bien une règle qui accepte les paquets retour dans l'autre sens ?
Quelle regle dois je appliquer pour cela ?
Ça dépend de ce que tu as déjà. Si tu as déjà la règle classique : iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT alors ça suffit.
Que donne un tcptraceroute sur le port 3389 depuis l'extérieur ?
tcptraceroute 213.223.113.149 3389 Selected device eth0, address 192.168.0.1, port 38252 for outgoing packets Tracing the path to mx.cadic.fr (213.223.113.149) on TCP port 2021, 30 hops max
Hein ? Port 2021 ou 3389 ?
10 195.115.106.77 31.257 ms 31.668 ms 31.037 ms 11 213.223.42.85 31.241 ms 31.313 ms 30.926 ms 12 * * *
Bizarre, cette absence de réponse en 12.
13 213.223.113.149 49.599 ms 83.431 ms 50.134 ms
Ça doit être la réponse de la Cbox.
14 * * * 15 * 213.223.113.149 52.911 ms !H *
Et ça doit être la réponse de la passerelle Linux. !H signifie "Host unreachable", réponse typique quand l'adresse IP de destination n'est pas connectée et ne répond pas aux requêtes ARP. Mais ça peut aussi être un filtrage. La machine a bien pour adresse 192.168.0.39 ? A-t-elle des règles de filtrage ?
Tu as bien une règle qui accepte les paquets retour dans l'autre sens ?
Quelle regle dois je appliquer pour cela ?
Ça dépend de ce que tu as déjà. Si tu as déjà la règle classique :
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
alors ça suffit.
Que donne un tcptraceroute sur le port 3389 depuis l'extérieur ?
tcptraceroute 213.223.113.149 3389
Selected device eth0, address 192.168.0.1, port 38252 for outgoing packets
Tracing the path to mx.cadic.fr (213.223.113.149) on TCP port 2021, 30
hops max
Hein ? Port 2021 ou 3389 ?
10 195.115.106.77 31.257 ms 31.668 ms 31.037 ms
11 213.223.42.85 31.241 ms 31.313 ms 30.926 ms
12 * * *
Bizarre, cette absence de réponse en 12.
13 213.223.113.149 49.599 ms 83.431 ms 50.134 ms
Ça doit être la réponse de la Cbox.
14 * * *
15 * 213.223.113.149 52.911 ms !H *
Et ça doit être la réponse de la passerelle Linux.
!H signifie "Host unreachable", réponse typique quand l'adresse IP de
destination n'est pas connectée et ne répond pas aux requêtes ARP. Mais
ça peut aussi être un filtrage. La machine a bien pour adresse
192.168.0.39 ? A-t-elle des règles de filtrage ?
Tu as bien une règle qui accepte les paquets retour dans l'autre sens ?
Quelle regle dois je appliquer pour cela ?
Ça dépend de ce que tu as déjà. Si tu as déjà la règle classique : iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT alors ça suffit.
Que donne un tcptraceroute sur le port 3389 depuis l'extérieur ?
tcptraceroute 213.223.113.149 3389 Selected device eth0, address 192.168.0.1, port 38252 for outgoing packets Tracing the path to mx.cadic.fr (213.223.113.149) on TCP port 2021, 30 hops max
Hein ? Port 2021 ou 3389 ?
10 195.115.106.77 31.257 ms 31.668 ms 31.037 ms 11 213.223.42.85 31.241 ms 31.313 ms 30.926 ms 12 * * *
Bizarre, cette absence de réponse en 12.
13 213.223.113.149 49.599 ms 83.431 ms 50.134 ms
Ça doit être la réponse de la Cbox.
14 * * * 15 * 213.223.113.149 52.911 ms !H *
Et ça doit être la réponse de la passerelle Linux. !H signifie "Host unreachable", réponse typique quand l'adresse IP de destination n'est pas connectée et ne répond pas aux requêtes ARP. Mais ça peut aussi être un filtrage. La machine a bien pour adresse 192.168.0.39 ? A-t-elle des règles de filtrage ?