Oct
15
2009

Redirection de port ou port forwarding avec Iptables


Activation du routage :

Sur un système LINUX, le routage est désactivé par défaut même si la machine comporte plusieurs cartes réseaux. Il faut activer ce routage pour utiliser un passerelle en LINUX. Pour cela, il suffit de modifier le fichier /etc/sysctl.conf. Modifier la ligne net.ipv4.ip_forward comme ceci :


net.ipv4.ip_forward = 1

Une fois le fichier corrigé, activer le changement avec la commande :


sysctl -p

Vérifiez que le routage est actif en consultant la valeur donnée à la fonction routage.


[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
1

Ici, on obtient la valeur 1, donc le routage est actif. Si vous obtenez 0, vous n’avez pas encore activé le routage.

 

Règles iptables :

iptables -t nat -A PREROUTING -d ip_du_serveur_iptables -p tcp –dport Numero_port_entrée -j DNAT –to-dest ip_distant:port_distant
iptables -t nat -A POSTROUTING -d ip_distant -p tcp –dport 25 -j SNAT –to ip_du_serveur_iptables

Exemple :

Si on souhaite mapper le port 30 sur le port 25 du serveur 81.0.0.1, voici les règles iptables à appliquer :

iptables -t nat -A PREROUTING -d 192.168.0.1-p tcp –dport 30 -j DNAT –to-dest 81.0.0.1:25
iptables -t nat -A POSTROUTING -d 81.0.0.1 -p tcp –dport 110 -j SNAT –to 192.168.0.1

Pour sauvegarder les règles, tapez la commande :

iptables-save > /etc/sysconfig/iptables

 

Problème rencontré :

Je n’ai pas réussi à rediriger un port avec le nom de domaine du serveur distant. Apparemment, c’est impossible… Si quelqu’un a une idée?

Articles similaires

Au sujet de l'auteur: Olivier Legras

Auteur de ce Blog, je partage quelques unes de mes notes que je juge utile à vous comme à moi. Je suis très heureux de voir que mon blog a de plus en plus d'affluence. Merci à vous!

9 Comments + Add Comment

  • Pour rediriger un port avec un nom de domaine, c’est plutôt une requête HTTP qu’on traite et pas seulement un simple paquet TCP.

    Il faut donc configurer un serveur HTTP comme Apache avec un mode ReverseProxy pour que ça passe.

  • Oui en effet pour l’http. Mais ce n’est pas ce que j’ai voulu mettre en évidence ici. La redirection de port peut être nécessaire dans certain cas.

    Cette article est utilisable pour tout port TCP ou UDP.

    Merci pour ton commentaire.

  • salut je voulais comment rediriger un port sur un routeur Cisco vers d’autres machines …. Mercii d’avance

  • Moi je doit faire une redirection mais je ne sais pas comment my prendre
    j ai un routeur linksys et un parfeu iptable
    dois je faire la redirection sur le routeur et sur le parfeu si oui quel regle dois je mettre ?
    Merci d avance

  • Je suppose que la redirection de port que tu souhaite faire est d’Internet vers ton LAN ou DMZ. Si l’adresse IP publique est au niveau de ton routeur, il te suffi de la faire seulement sur le routeur.
    ++

  • mon routeur 192.168.1.1 n a pas acces directement a l equipement 192.168.2.254
    c est 2 reseau different . le parfeu fait du nat avec le routeur

  • salut enfaite moi je veut faire un forwarding sur mon raspberry pi 2 et la question que je me pose sait comme je connais pas l’ip des ordi qui vont ce connecté a mon pi depuis internet comment je fait pour redirigé vers une ip que je connais pas j’ai configuré mon pi pour qu’il fasse server web donc apache php 7.0 sql python ruby etc j’ai deja configuré iptables pour qu’il accept le ssh ftp http et le forward mais sa marche pas je sait pas pk si tu veut je peut te filé mon /etc/iptables.rules

  • Lorsqu’on ne connait pas les ip sources, tu es obligé de donner l’accès à tout le monde. Dans ce cas, il faut sécuriser apache avec mod_security et faire la redirection de port sur ta box si ton raspberry pi est chez toi.

Laissez un commentaire