Journal iptable, nat et Cie

Posté par  (site web personnel) .
Étiquettes : aucune
0
25
jan.
2004
Ce soir, un copain m'a proposé de faire une partie de Star Wars Galactic Battleground (basé sur le moteur de Age of Empire 2) en ligne.

Bon, vu que ca marche pas sous linux, même avec wine, je reboot... Et on essaye de se connecter entre nous depuis windows... Sauf que là ca n'a pas fonctionné...

Chez moi, entre les 3 desktops de la maisons, il y a une petite passerelle/firewall sous linux qui nous connecte tous à internet. Donc, je lui demande de faire serveur et d'ouvrir les ports chez lui parce que de mon coté ca va merder (vu que mon adresse externe n'est pas celle sur laquelle est installé le jeu)

... Et la ... bein ca merde encore. Apparement le protocole réseau du jeu est un peu mal fichu car il faut que des 2 cotés l'ouverture de port se fasse. Pourtant avec d'autres jeux comme quake 2, half life, warckarft 3... Ca passe sans probleme....

Alors j'ai fait une redirection des possible ports ouverts par les jeux directX dirèctement vers mon desktop :

liste des ports : http://support.microsoft.com/default.aspx?scid=kb;fr-fr;240429(...)

commandes iptables :

#directX 7
iptables -t nat -A PREROUTING -d mon ip externe -p tcp --dport 47624 -j DNAT --to mon ip interne
iptables -t nat -A PREROUTING -d mon ip externe -p tcp --sport 47624 -j DNAT --to mon ip interne
iptables -t nat -A PREROUTING -d mon ip externe -p tcp --dport 2300:2400 -j DNAT --to mon ip interne
iptables -t nat -A PREROUTING -d mon ip externe -p tcp --sport 2300:2400 -j DNAT --to mon ip interne

#directx 7 et 8
iptables -t nat -A PREROUTING -d mon ip externe -p udp --dport 6073 -j DNAT --to mon ip interne
iptables -t nat -A PREROUTING -d mon ip externe -p udp --sport 6073 -j DNAT --to mon ip interne
iptables -t nat -A PREROUTING -d mon ip externe -p udp --dport 2300:2400 -j DNAT --to mon ip interne
iptables -t nat -A PREROUTING -d mon ip externe -p udp --dport 2300:2400 -j DNAT --to mon ip interne


et là hop, ca marche. Je peux même héberger les parties.

Mais je me demande si il n'y a pas un meilleur moyen que de faire celà quand même... Sur le site de microsoft, ils disent que les serveurs NAT qui gère le UPnP peuvent s'interfacer automatiquement avec directX et qu'on ça marche de façon transparente.

Alors mon petit journal, je me pose 2 questions. D'abord y a t'il un module dans le kernel qui puisse utiliser UPnP... enfin... déjà faudrait il que je comprenne ce que ca veut dire... quelque chose plug and play je suppose mais bon...

Pis ensuite, dans les modules que j'ai compilé dans le kernel, j'ai des modules netfilter spéciaux pour quake3, pour irc, pour ftp, eggdrop etc... Je me demande bien a quoi ca sert en fait. Est-ce que ca ne serait pas justement un truc fasse la translation automatique de ports entre la passerelle et le desktop pour ces protocoles?...

Pis tout ca, ca m'ammène encore à une dernière questions... Comment est-il possible de faire de la translation dynamique entre 2 PC... Parce que admettons maintenant que ma soeur dans la chambre d'à coté veuille aussi jouer... Mais que tous les ports sont redirigé en dur sur mon PC... Je me demande bien comment ca va être possible.

Bref, tout ça m'a l'air très puissant, mais faut savoir comment l'utiliser :)
  • # Re: iptable, nat et Cie

    Posté par  . Évalué à 2.

    Pis ensuite, dans les modules que j'ai compilé dans le kernel, j'ai des modules netfilter spéciaux pour quake3, pour irc, pour ftp, eggdrop etc... Je me demande bien a quoi ca sert en fait. Est-ce que ca ne serait pas justement un truc fasse la translation automatique de ports entre la passerelle et le desktop pour ces protocoles?...

    Alors je suis pas un expert, mais pour moi la réponse est oui

    par exemple, le protocole ftp en mode actif conduit le serveur ftp à initier une connexion TCP avec le client lors d'un transfert de fichier par exemple. Il ne suffit donc pas d'autoriser la connexion sortante. Les modules ip_conntrack_ftp et ip_nat_ftp s'occupe de gérer ça pour le suivi de connexion iptables et le nat. Idem pour irc, pour permettre les connexions DCC. Donc j'imagine que c'est la même chose pour les autres modules, et que donc il t'en faut un pour ton jeu.

    Il y a surement des headers et des bibliothèques particuliers à utiliser pour développer un machin comme ça, je sais pas ou il faut chercher ça.

    Pis tout ca, ca m'ammène encore à une dernière questions... Comment est-il possible de faire de la translation dynamique entre 2 PC... Parce que admettons maintenant que ma soeur dans la chambre d'à coté veuille aussi jouer... Mais que tous les ports sont redirigé en dur sur mon PC... Je me demande bien comment ca va être possible.

    Bah justement, le module en question, il doit probablement gérer ça aussi, puisqu'il sait quelle connexion a initié le protocole, il sait donc à quelle flux réseau asocier chacune des connexions subordonnées. Enfin c'est l'opinion de quelqu'un qui ne maitrise pas le sujet, donc on attendra demain que les cadors de la pile TCP/IP interviennent :)
    • [^] # Re: iptable, nat et Cie

      Posté par  (site web personnel) . Évalué à 2.

      En général les jeux réseaux n'utilisent pas TCP mais plutot UDP comme protocol sous-jacent. Mais il ne suffit pas qu'ils utilisent UDP pour que ca traverse les firewalls. Il faut:
      • Un firewall acceptant les connections UDP entrantes sous certaines conditions (NAT friendly).
      • Que le protocole du jeu respectent ces memes conditions.
      "Pourtant avec d'autres jeux comme quake 2, half life, warckarft 3... " Les protocoles de ces jeux sont NAT friendly, Star Wars Galactic Battleground ne semble pas l'être, je ne vois pas de solution mis à part forwarder les packets via IPtables comme tu l'as déja fait. Malheureusement ca limite le nombre de joueur à 1 chez toi. Pour comprendre simplement la mise en place d'un protocole NAT friendly: http://www.alumni.caltech.edu/~dank/peer-nat.html(...)
  • # Re: iptable, nat et Cie

    Posté par  . Évalué à 1.

    Cherche "rsip linux" sur google. Malheureusement, le module noyau client ne marche pas avec 2.6...

    Snark
  • # Re: iptable, nat et Cie

    Posté par  . Évalué à 4.

    UPnP, Universal Plug'n Play.

    Une merde développée par Microsoft qui est maintenant implantée un peu partout sur les "firewalls/routeurs" domestiques.

    Le but c'est de laisser les machines internes s'interfacer avec le Firewall, ériger des règles, by-passer d'autres afin de régler en live ce qui entre/sort.

    Perso, j'aime pas du tout ça, je vois pas pire trou de sécurité. Suffit que l'utilisateur qui utilise Outlook télécharge un mail avec du code malicieux qui s'exécute et demande une règle particulière faisant pointer certaines ports sur la machine infectée, et là le rôle du firewall perd toute son efficacité.

    Bref, UPnp sux0r.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.