[Tutoriel] Redirection de ports sur connexion NATée

Vos amis n'arrivent pas à rejoindre la partie que vous avez créée ?


Introduction

Depuis l'arrivée des *box des Fournisseurs d'Accès à Internet (FAI) comme moyen de connexion au réseau internet, de plus en plus de personnes rencontrent des problèmes pour héberger des parties sur leurs jeux en ligne favori.

Nous verrons dans ce sujet les raisons de ce problème et les moyens de l'arranger.

Les causes

Ce que les *box ont changé

Du temps de l'internet RTC 56 kbits/s et des première connexions ADSL, on utilisait un bête modem qui se contentait de fournir une connexion à internet à l'ordinateur auquel il était connecté. Ledit ordinateur se retrouvait alors directement connecté au réseau internet, l'une de ses interfaces réseau disposait d'une adresse IP v4 publique fourni par le FAI. Dans ce cas, si quelqu'un voulais joindre une partie que vous hébergiez, rien de plus simple puisque l'adresse IP publique menait directement a l'ordinateur.

Le PAT/NAT

C'est quoi ?

Avec les box, les ordinateurs qui sont connectés derrière n'ont plus un accès direct au réseau internet, en effet, ceux-ci disposent d'une adresse IP v4 privée et leurs connexions vers le réseau internet passent par la *box qui fait office de passerelle via un système de Translation d'Adresses et Port Réseaux, ce système dit de PAT/NAT permet de « masquer » plusieurs machines d'un réseau privée derrière une seul adresse IP v4 publique afin de leurs fournir un accès au réseau internet tout en économisant le nombre d'adresses IP v4 publique attribuées.

Cependant, si le système de PAT/NAT dispose de quelque avantages, il a pour principal défaut de ne pas rendre directement accessibles les ordinateurs connectés à la zone de réseau local depuis le réseau internet, si cela peut être une petit gage de sécurité, c'est très gênant pour les jeux en lignes.

A noter que je parle ici d'IP v4 (adresses IP version 4), car le problème de PAT/NAT n'existe pas en IP v6 (adresse IP version 6).1

Comment ça fonctionne ?

Prenons le schéma suivant :

Nous avons sur celui les élément suivant :

  • Un premier réseau local, 192.168.1.0/24, en rouge, composé de trois ordinateurs ayant les adresses IP v4 192.168.1.1, 192.168.1.2 et 192.168.1.3, d'un commutateur et d'un routeur ayant l'adresse IP v4 privée 192.168.1.254 et l'adresse IP v4 publique 80.67.176.144.
  • Un second réseau local, 10.0.0.0/8, en bleu, composé d'un ordinateurs ayant l'adresses IP v4 10.0.0.12 d'un commutateur et d'un routeur ayant l'adresse IP v4 privée 10.0.0.1 et l'adresse IP v4 publique 217.174.206.67.
  • Divers services sur internet, tel un serveur web, battle.net et un serveur DNS.

Prenons le fait que vous êtes l'utilisateur de l'ordinateur 192.168.1.1 du réseau local rouge, vous désirez visiter un site hébergé par le serveur web.

  • Vous saisissez l'adresse du site à visiter, genre : www.aeriesguard.com
  • Votre ordinateur ne connaît pas cette adresse DNS, il émet donc un requête de résolution de nom sur le port 53 du serveur DNS renseigné dans sa configuration : 80.67.169.40
  • Votre ordinateur n'étant pas connecté au réseau de 80.67.169.40 il transmet la requête à sa passerelle par défaut qui n'est autre que le routeur 192.168.1.254.
  • A partir de là, le PAT/NAT commence. Votre routeur reçoit votre requête sur, disons, le port 15200 de connexion réseau local (192.168.1.254), il la transforme (translate) en une requête ayant pour origine le port 15200 de sa connexion au réseau internet (80.67.176.144)
[caption]Table PAT/NAT du routeur 192.168.1.254 / 80.67.174.144[/caption]
Événement Sur Émetteur Destinataire État Action
Connexion entrante 192.168.1.254:15200 192.168.1.1:1532 80.67.169.40:53 Nouvelle connexion Translation et émission sur 80.67.176.144:15200 à destination de 80.67.169.40:53
  • Le serveur DNS 80.67.169.40 reçoit la requête sur son port 53, cependant, cette requête à pour lui comme origine l'adresse translater par votre routeur, soit 80.67.174.144:15200, il répond donc à cette adresse.
  • Votre routeur reçoit la réponse, celui-ci ayant gardé en mémoire la translation précédente dont est issue cette réponse, il fait suivre la requête à l'ordinateur qui l'avait émise.
[caption]Table PAT/NAT du routeur 192.168.1.254 / 80.67.174.144[/caption]
Événement Sur Émetteur Destinataire État Action
Connexion entrante 80.67.176.144:15200 80.67.169.40:53 80.67.176.144:15200 Réponse à une connexion établie Translation et émission sur 192.168.1.254:15200 à destination de 192.168.1.1:15200
  • L'ordinateur 192.168.1.1 reçoit sur son port 15200 la résolution DNS lui indiquant que l'adresse IP de www.aeriesguard.com est 46.21.207.121.
  • Les autres requêtes, a destination du serveur web cette fois-ci, seront traitées par le routeur d'une façon similaire.

Pourquoi ça bloque alors ?

Le PAT/NAT fonctionne convenablement pour un utilisateur d'un réseau local si c'est lui-même qui établi la connexion à un ordinateur se trouvant sur internet, par contre, que se passe-t-il si un ordinateur hors de votre réseau local souhaite joindre une de vos machines se trouvant derrière votre routeur faisant du PAT/NAT ?

Reprenons le schéma ci-dessus, le cas est le suivant.
Vous êtes vous êtes l'utilisateur de l'ordinateur 192.168.1.1 du réseau local rouge, vous désirez jouer une partie de StarCraft avec un de vos ami, utilisateur de l'ordinateur 10.0.0.12 du réseau local bleu.

  • Vous vous retrouvez sur battle.net, suite à discussion il est décidé que votre ami crée la partie.
  • Vous voyez sa partie apparaître, vous asseyez de la joindre. Battle.net ne voyant pas l'adresse IP v4 de l'ordinateur de votre ami (10.0.0.12), seulement celle de son routeur PAT/NAT vous indique que l'adresse IP v4 de l'hôte est 217.174.206.67.
    Cependant, impossible de rejoindre la partie, ça ne fonctionne pas, voyant l'état des table PAT/NAT de vos routeurs pour comprendre.
[caption]Table PAT/NAT de votre routeur (192.168.1.254 / 80.67.174.144)[/caption]
Événement Sur Émetteur Destinataire État Action
Connexion entrante 192.168.1.254:8865 192.168.1.1:6114 217.174.206.67:6112 Nouvelle connexion Translation et émission sur 80.67.174.144:6114 à destination de 217.174.206.67:6112
  • Jusqu'ici, tout va bien. Voyons pour le routeur de votre ami.
[caption]Table PAT/NAT du routeur de votre ami (10.0.0.1 / 207.174.206.67)[/caption]
Événement Sur Émetteur Destinataire État Action
Connexion entrante 217.174.206.67:6112 80.67.174.144:6112 217.174.206.67:6112 Nouvelle connexion OK, rien à faire
  • Là est le problème, le routeur PAT/NAT de votre ami reçoit bien la connexion de votre par lui étant destinée, cependant, il se contente d'en accuser réception, ne sachant qu'en faire d'autre.

Conclusion

  • Vous : 
  • Votre ami :
  • Son routeur :

Les solution

Si vous utilisez votre propre modem et non la *box du FAI, certains modems ADSL Ethernet peuvent aussi fournir un mode PAT/NAT, vérifiez que vous n'êtes pas dans ce cas.

Le mode « bridge »

Si vous n'avez qu'un seul ordinateur connecté au réseau internet, réglez l'équipement qui vous connecte à internet en mode bridge, il se comportera alors comme un simple modem ADSL, votre ordinateur aura directement une adresse IP v4 publique, ce qui résoudra le problème pour de bon.

La redirection de ports

La redirection de ports consiste à mettre en place sur la passerelle une règle indiquant que si une requête arrive sur le port Ppub de l'adresse IP v4 publique Apub de la passerelle, elle doit être transmise sur le port Ppriv d'une adresse IP v4 Apriv, Apriv étant généralement une machine se trouvant dans le réseau privé.

Cela permettra à la requête d'atteindre un ordinateur se trouvant dans le réseau privé, bien entendu, selon le matériel utilisé pour la passerelle, la méthode est différente.

Reprenons notre exemple avec notre partie de StarCraft, si votre ami avait mis en place la redirection de port adéquat sur son routeur, lors de la réception de votre requête, la table PAT/NAT de son routeur aurait été de ce type :

[caption]Table PAT/NAT du routeur de votre ami (10.0.0.1 / 207.174.206.67)[/caption]
Événement Sur Émetteur Destinataire État Règle de redirection Action
Connexion entrante 217.174.206.67:6112 80.67.174.144:6112 217.174.206.67:6112 Nouvelle connexion Translater les connexions de 217.174.206.67:6112 vers 10.0.0.12:6112 Translation et émission sur 10.0.0.1:6112 à destination de 10.0.0.12:6112

Paramétrer la redirection de port

Préliminaires

Afin de pouvoir mettre en œuvre des redirection de ports, vos ordinateurs doivent avoir des IP v4 privés fixes, soit parce que vous les avez fixé manuellement, soit parce que vous avez réglé votre serveur DHCP pour toujours attribuer les mêmes adresse IP v4 en fonction des adresses MAC des cartes réseaux de vos ordinateurs.

Ceci ne concerne pas le présent tutoriel, consultez la documentation de votre matériel.

La pratique

Passerelle GNU/Linux

Si vous utilisez un ordinateur sous GNU/Linux comme passerelle, ajoutez la règle IPTables suivante pour rediriger un port :

$IPTABLES_BIN --table filter --append FORWARD --in-interface $INTERNET_NIC \
--protocol $PROTOCOL --destination-port $PORT --destination $LAN_IP --jump ACCEPT;
$IPTABLES_BIN --table nat --append PREROUTING --in-interface $INTERNET_NIC \
--protocol $PROTOCOL --destination-port $PORT --jump DNAT \
--to-destination $LAN_IP:$PORT;

Avec :

  • $IPTABLES_BIN : Le binaire de IPTables, généralement « /sbin/iptables ».
  • $INTERNET_NIC : L'interface réseau de la passerelle qui a l'adresse IP v4 publique.
  • $PROTOCOL : Le protocole de la requête, peut être « tcp » ou « udp »
  • $PORT : Le port sur lequel les requêtes a rediriger arrivent.
  • $IP_LAN : L'adresse IP v4 de l'ordinateur qui doit recevoir la requête.

Par exemple, pour rediriger les requêtes arrivant sur le port 6112 en tcp et udp de l'interface ppp0 de la passerelle vers l'ordinateur ayant l'adresse IP v4 192.168.25.10, on obtient les des règles suivantes :

/sbin/iptables --table filter --append FORWARD --in-interface ppp0 --protocol tcp \
--destination-port 6112 --destination 192.168.25.10 --jump ACCEPT;
/sbin/iptables --table filter --append FORWARD --in-interface ppp0 --protocol udp \
--destination-port 6112 --destination 192.168.25.10 --jump ACCEPT;
/sbin/iptables --table nat --append PREROUTING --in-interface ppp0 --protocol tcp \
--destination-port 6112 --jump DNAT --to-destination 192.168.25.10:6112;
/sbin/iptables --table nat --append PREROUTING --in-interface ppp0 --protocol udp \
--destination-port 6112 --jump DNAT --to-destination 192.168.25.10:6112; 

Il est également possible de rediriger un ensemble de ports avec une règle du type :

$IPTABLES_BIN --table nat --append PREROUTING --in-interface $INTERNET_NIC \
--protocol $PROTOCOL --destination-port $PORT_START-$PORT_END --jump DNAT \
--to-destination $LAN_IP:$PORT_START-$PORT_END;

Avec :

  • $START_PORT : Le premier port de la plage.
  • $END_PORT : Le dernier port de la plage.

Bouygues Box

  1. Connectez-vous à votre Bouygues box, puis, cliquez sur « Mode expert » pour pouvoir changer la configuration.
  2. Allez dans les menu « Boîte à outils » → « Partage des jeux et des applications ».
  3. Cliquez sur « Créer un jeu ou une application ».
  4. Donnez un nom à votre règle.
  5. Activez la coche « Application la configuration déjà définie pour l'application ou le jeu suivant » et déroulez la liste pour vérifier si un pré-réglage existe, un fois trouvé, cliquez sur « Suivant ».
  6. Si aucun pré-réglage n'existe, activez la coche « Configurer manuellement la redirection des ports pour votre jeu ou application » et cliquez sur « Suivant ».
  7. Donnez un nom à votre règle et cliquez sur « Appliquer »
  8. Remplissez les champs selon les demandes du programmes à rediriger.
  9. Enfin, cliquez sur « Ajouter »

Freebox

  1. Connectez-vous au centre de gestion de votre Freebox puis, cliquez sur le menu « Fonctionnalités Routeur de la Freebox » → « les fonctions routeurs NAT de votre Freebox ».
  2. Remplissez les champs selon les demandes du programmes à rediriger.
  3. Cliquez sur « Envoyer »

Livebox Sagem

  1. Connectez-vous à votre Livebox, puis, allez dans le menu « Serveurs LAN » et cliquez sur « Ajouter ».
  2. Ensuite, remplissez les champs selon les demandes du programmes à rediriger, il est possible de rediriger une plage de ports. N'oubliez pas de donner un nom à votre règle de redirection pour savoir à quoi elle correspond.
  3. Enfin, cliquez sur « Ajouter »

Livebox Inventel

  1. Connectez-vous à votre Livebox, puis, allez dans les menus « Configuration » → « Avancé » → « Routeur » et cliquez sur « Ajouter ».
  2. Activez la coche « Sélectionner dans la liste » et déroulez la liste afin de vérifier si un pré-réglage existe, un fois trouvé, allez en 4.
  3. Si aucun pré-réglage n'existe, activez la coche « Service personnalisé » et remplissez les champs selon les demandes du programmes à rediriger.
    • Port externe : Port sur l'interface publique de la passerelle.
    • Port interne : Port vers lequel on redirige.
    • Il est possible d'indiquer une plage de ports avec la syntax XXX-YYY (par exemple 6112-6114 pour les port allant de 6112 à 6114).
    • N'oubliez pas de donner un nom à votre règle de redirection pour savoir à quoi elle correspond.
  4. Enfin, cliquez sur « Ajouter »

Numéricâble

Cette aide concerne les abonnés au réseau internet, pas ceux du minitel, abonnez vous chez un vrai FAI.

SFRbox

  1. Connectez-vous à votre SFRbox, puis sélectionnez l'onglet « Box » puis le menu « Applications »
  2. Sélectionnez l'application dans le menu déroulant.
  3. Si elle n'existe pas, vous devez configurer manuellement la redirection. Une fois cela fait, cliquez sur « Ajouter »
  4. Enfin, cliquez sur « Valider »

1 Pour plus d'informations, voir le sujet « 2011 - IPocalypse » de Zergy.

Laissez un commentaire

11 Commentaires

  • Suite au contact d'une personne ayant un cas particulier, j'ai fais une mise à jour du tutoriel et l'ajout d'une partie "Notes".

  • Merci pour ce tutoriel Sbire, néanmoins j'ajouterais quelques petites choses :

    • c'est le port uDp et pas uCp
    • ce problème de configuration ne se pose que lorsque la box est en mode routeur, c'est à dire que vous êtes plusieurs PC à vous connecter à une même Box. Si vous êtes tout seul sur votre Box vous n'avez en général pas ce soucis (sauf si vous avez activé le mode routeur pour vous tout seul, c'est vous qui voyez sourire )
    • cette technique s'appelle un reroutage de port, elle n'est pas utile que pour Warcraft III, toute application qui nécessite que quelqu'un de l'extérieur puisse venir se connecter chez vous doit réaliser cette opération pour les ports utilisés par l'application
  • Des petites captures d'écrans de tes panneaux de configuration ne seraient pas superflues wink

    Notamment pour ce qui est de la configuration de l'adresse IP fixe et de la configuration du reroutage de port smile

  • J'essayerais d'y penser...

    Du travail ! Encore du travail ! sourire

  • Pour ceux que ça intéresse, un petit tutoriel très simple pour faire exactement comme dans le tutoriel de Sbirematqui, à la différence que ce tutoriel explique comment faire avec Windows Vista et Mac, et si on a une Livebox Sagem de 1ère génération.

    Lire le Tutoriel sur Bichofeo

    Ça devrait en aider quelques-un ! wink

  • Merci Shadow pour ce petit article qui complète mon vieux tutoriel (qui pu) pour faire des routages NAT. smile

  • Schéma refait.

  • Moi je dis, merci Zergy ! sourire

    (Et pour une réécriture pour transformer le tutoriel en "Comment faire un routage de ports NAT ?" ? razz )

  • Sbirematqui a écrit :

    Moi je dis, merci Zergy !

    (Et pour une réécriture pour transformer le tutoriel en "Comment faire un routage de ports NAT ?" ? )

    C'est en cour.

  • Article réécrit, les schémas arrivent. N'ayant pas de *box chez moi, si des gens veulent faire des captures d'écrans, elles sont les bienvenus. smile

  • Sbirematqui a écrit :

    Numéricâble
    Cette aide concerne les abonnés au réseau internet, pas ceux du minitel, abonnez vous chez un vrai FAI.

    Moi je dis : Troll.

Laissez un commentaire

Vous devez être connecté pour commenter sur le Refuge. Identifiez-vous maintenant ou inscrivez-vous !


Marre des pubs ? Inscrivez-vous !