Redirection vers un port local en fonction de l'adresse IP source

Bonjour tt le monde!

J’ai une petite question concernant la redirection de port sur une machine locale. Je suis un peu newbie dans ce domaine, aussi j’aurais besoin de votre aide, c’est à mon avis ultra simple mais je n’ai pas trouvé la soluce :

  1. J’ai un serveur ftp qui tourne sur une machine Ubuntu chez moi (adresse 192.168.0.1) sur le port 21, et un serveur ssh en port 22,assez banal… :wink:
  2. Je suis derrière un routeur NAT (une freebox) configuré pour envoyer *:21 vers 192.168.0.1:21 …
    ça c’est bon…

Ce que je souhaiterais faire :
Accéder à mon serveur ssh depuis le port 21 et le serveur ftp sur le même port en fonction de l’adresse source :

port 21 externe:
- le commun des mortels => 192.168.0.21:ftp (port 21)
- mon adresse du bureau => 192.168.0.21:ssh (port 22)

C’est un peu tordu, mais vous l’aurez compris, ça me permet de bypasser des firewall contraignants :wink:

Donc, comme je n’ai pas accès au routage de la freebox et qu’il est hors de question que je monte un routeur pour ça, je me suis dit qu’iptables pouvait m’aider…
En potassant la doc et les forums, j’ai trouvé des tas de trucs pour forwarder vers un réseau local (donc mettre mon PC en routeur) mais pas pour une machine locale sans la mettre en mode routeur, je n’ai rien trouvé.

Quelqu’un a une idée?

Par avance, Merci!

Quelque chose comme ça pourrais peut être marcher :


iptables -t nat -A PREROUTING -p tcp -i eth0 -d xxx.xxx.xxx.xxx --dport 21 -j DNAT --to 127.0.0.1:21
iptables -t nat -A PREROUTING -p tcp -i eth0 -d [TONIP@BUREAU] --dport 21 -j DNAT --to 127.0.0.1:22
iptables -A FORWARD -p tcp -i eth0 -d 127.0.0.1 --dport 21 -j ACCEPT

Je promet rien, je sais meme pas si un des deux forward va pas ecrasé l’autre :o, puis apres faut faire ca en automatique, ca sera pas gardé au reboot.
Edité le 29/12/2008 à 18:49

Je pense que le probleme est que tu ne peux pas faire ca sur ton serveur car lui ne voit que l’adresse de la freebox a cause du nat…
Donc il faut forcement que tu le fasses sur la freebox donc il faut voir si ce genre de manip est possible avec… ce dont je doute…

Et si tu ecoutes en ssh sur le port 80 ou 443 ou 8080 ? ce sont des ports souvent laisses ouverts par les admins chagrins…

Et si tu es obligé de passé par un proxy il existe des solutions ( et comme dit KP2, qui te demande d’avoir ton serveur sur le port 443 ou autre ).


wget [www.agroman.net...](http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz)
tar xvf corkscrew*
cd corkscrew*
./configure
make
make install


ssh login@ip -p 443 -o="ProxyCommand corkscrew ipProxy portProxy %h %p"

Edité le 29/12/2008 à 19:42

tout d’abord merci pour vos réponses! :slight_smile:

slt KP2!

Non, l’adresse que je reçois sur mon serveur est bien l’adresse internet du client, heureusement! :wink:
J’ai déjà testé plein de ports en direct, le seul qui passe c’est le port 21… ouiiin :frowning:


[quote="PyrO_70"]

Je promet rien, je sais meme pas si un des deux forward va pas ecrasé l’autre :o, puis apres faut faire ca en automatique, ca sera pas gardé au reboot.
[/quote]

Je vais tester tout ça … :wink: merci pour tes réponses :slight_smile:
Edité le 30/12/2008 à 11:41

KP2 : par defaut la freebox est un bridge, dans ce cas le seul PC connecté, recois l’adresse publique.