Voilà, cet été je me suis fait un routeur sous Ubuntu server pour éviter d'utiliser l'interface web de ma freebox, qui m'obligeai à la rebooter a chaque changement.
Je me suis donc concocté une petite interface web qui me rempli mon fichier iptables pour faire mes regles NAT.
Bref, j'ai remarqué un problème que je n'avais pas avant (ou je ne l'ai pas remarqué, mais c'est étrange).
Par exemple, j'ai trois machine qui utilisent openssh server. Par défaut donc, c'est le port 22 qui écoute.
C'est bien le cas sur mon routeur, donc j'utilise la regle suivante :
Citation :
iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT
|
Pas de problemes, ça marche. Là où ça se complique, c'est que sur mes deux autre machines (192.168.0.2 ainsi que 192.168.0.4), j'aimerai bien laisser le port d'écoute 22 pour le ssh.
Donc, ce que j'ai fait, par exemple pour 192.168.0.2 :
Citation :
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 118 -j DNAT --to-destination 192.168.0.2:22
iptables -A FORWARD -p tcp -i eth0 --dport 118 -j ACCEPT
|
Théoriquement, de l'exterieur, lorsque je demande un ssh sur le port 118, le routeur est censé me le rebalancer sur 192.168.0.2 sur son port 22.
Il m'a semblé que cela fonctionnait (mais ça fait depuis aout alors je me rappelle plus si j'avais testé).
Or, ce soir, j'ai réessayé, mais ça ne donne rien : le site shieldsup m'indique que le port est stealth. Par curiosité, j'ai changé ma regle en mettant :
Citation :
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 118 -j DNAT --to-destination 192.168.0.2:118
iptables -A FORWARD -p tcp -i eth0 --dport 118 -j ACCEPT
|
Et en mettant le serveur ssh en écoute sur le 118, là, ça marche !
Pourquoi ça ne fonctionne pas avec la premiere methode ?
Je tiens préciser que sur les deux autres machines (0.2 et 0.4) , le firewall est désactivé ou non installé. Donc ce n'est pas ces machines là qui bloque le traffic, ça vient de mon routeur.