View previous topic :: View next topic |
Author |
Message |
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Wed Jun 16, 2004 9:45 pm Post subject: [HOWTO] routeur UPNP (ou msn derrière un NAT). |
|
|
màj (28/09/2005) : je n'utilise plus cette solution, puisque je possède maintenant un routeur "hard". Mais je suis tombé par hasard sur cette page chez Microsoft, détaillant un peu les ports utilisés par MSN (le voile se lève enfin :d).
Bonsoir.
Nombre d'entre nous recontrent des soucis pour faire fonctionner les fonctions évoluées de msn messenger avec le monde lorsque leur pc est situé derrière leur firewall linux. Après de longues recherches, et nombre d'essais peu fructueux : ça marche enfin !
1. La théorie : quel est le problème ?
Prenons la topologie suivante : vous utilisez à la maison votre PC sous Windows, avec MSN Messenger pour discuter avec vos amis, et plus particulièrement pour les fonctions de transfert de fichiers, chat vocal et vidéo. Nous appelerons ce PC : XP1.
Un autre PC dans la maison est utilisé de la même manière, sous Windows, et sert occasionnelement à messenger : nous l'appelerons XP2.
Enfin, tout ce beau monde se connecte à internet via un firewall / routeur Linux qui partage sa connexion ADSL : nous l'appelerons Nunux !
Lorsque vous chattez sur XP1 (chat msn texte), msn va se connecter sur le port 1863/TCP à un serveur d chez microsoft. Nunux sait donc que c'est XP1 qui a initié la connexion vers le serveur chez MS, et saura donc router les paquets que ce dernier va renvoyer en réponse.
Idem, si XP2 sert vient pour se connecter de la même manière, Nunux saura "pister" (tracker en anglais) la connexion, pour ne pas mélanger les flux. tout ceci fonctionne fort bien, il s'agit de NAT classique (Network Address Translation).
Les problèmes arrivent lorsque vous demandez une connexion vocale / video. Dans ce cas, msn va demander au serveur de choisir un autre port pour faire passer le flux video. Et le problème c'est que ce port est choisi au pif entre le port TCP/9000 et TCP/65535 ! Ensuite, vient le moment de la connexion proprement dite, et c'est la que le firewall perd les pédales, ne sachant plus où router les demandes qui lui arrivent, sur des ports qui sortent de nulle part, etc...
La solution retenue par l'industrie est upnp : c'est l'application elle-même qui demande, dynamiquement, au firewall d'ouvrir le port choisi (au pif je vous le rappele ), et de renvoyer vers la machine MSN (XP1 dans cet exemple) le flux video / audio. Alors la connexion marche. Hors iptables ne sait pas gérer cela en standard.
Une des solutions que j'ai vu passer sur le net consiste à tout renvoyer directement vers le PC MSN. Dans ce cas, ca marche, pas besoin d'upnp... à condition toutefois que vous n'ayez qu'un seul client MSN derrière ! Sinon le firewall ne saura pas vers lequel renvoyer le flux.
La seule solution "propre" et élégante : installer upnp. Nombreux sont ceux qui considèrent upnp comme une aberration niveau sécurité. Pour ma part je trouve le système plutôt élégant : les demandes d'ouverture de port ne peuvent venir que de l'intérieur du réseau local. Donc ouvrir une brèche pour permettre une attaque demanderait d'avoir un complice en interne, de se mettre d'accord à l'avance sur le port sur lequel on va attaquer, etc pour moi, invraisemblable, et le confort apporté par l'utilisation d'upnp dépasse largement ce risque que je considère minime.
Sur ce, voici le guide.
2. Ma config réseau.
Ma Gentoo est sur ma passerelle / firewall. Elle est configurée avec un modem speedtouch usb. Mon IP publique correspond donc à l'interface ppp0. Mon réseau interne, lui, est configuré sur eth0.
Mon PC de test est sous Windows, classiquement.
Question firewall, j'ai peu de choses : j'ai activé le NAT dans le fichier /etc/conf.d/iptables en validant la ligne suivante :
Code: | ENABLE_FORWARDING_IPv4="yes" |
Et voici le code de mon firewall, qui ne filtre que netbios en fait :
Code: | # flush du firewall
iptables -F
iptables -F -t nat
# activation du NAT :
iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0
# DROP des paquets NETBIOS
iptables -A INPUT -i ppp0 -p udp --dport 137:139 -j DROP
iptables -A INPUT -i ppp0 -p tcp --dport 137:139 -j DROP |
Comme je vous le disais : un filtrage rudimentaire, je veux un minimum d'embûches lorsque je travaille !.
3. L'installation des outils upnp pour linux.
Le démon upnp pour linux se nomme... upnpd . Assez controversé, il a néanmoins le mérite d'exister, et je citerais donc ce que les développeurs en disent sur cette page :
Les développeurs d'upnpd wrote: | There are many opponents against UPnP. However, we feel that Open Source is all about giving people choices, and letting intelligent people make intelligent decisions about its use. A lot of us really NEED this daemon, and can live with the consequences because we are simply connecting a home network to the internet through one ip, and we would have had the windows machines (or whatever internet device) connected directly in the first place. |
Sous Gentoo, la version dite "stable" d'upnpd est très ancienne. Nous installerons donc directement la dernière version avec cette commande :
Code: | ACCEPT_KEYWORDS="~x86" emerge linux-igd |
NB : adaptez la variable ACCEPT_KEYWORDS à votre architecture bien entendu !
Je n'ai pas utilisé le fichier /etc/portage/packages.keywords car... ça marche pas :'( : je cherche !
Ensuite, n'oubliez pas de configurer vos interfaces dans le fichier /etc/linuxigd/upnpd.conf. Pour ma config, cela donne :
Code: | # configuration file for upnpd
INTERFACE="eth0"
OUTERFACE="ppp0" |
Ensuite, il faut savoir que upnpd s'attend à trouver iptables dans /usr/sbin. Hors, sur Gentoo, il est dans /sbin. Donc pour pallier à ce problème :
Code: | ln -s /sbin/iptables /usr/sbin/iptables |
Enfin, avant de lancer le démon, une dernière étape : ajoutez la ligne suivante dans votre fichier /etc/conf.d/local.start, puis lancez-la directement dans la ligne de commande. N'oubliez pas d'adapter à votre config (eth0 n'est pas forcément votre interface interne) !
Code: | route add -net 239.0.0.0 netmask 255.0.0.0 eth0 |
Voilà, c'est fini : vous pouvez maintenant démarrer le démon :
Code: | /etc/init.d/upnpd start |
Voire même le programmer pour chaque démarrage (utile si vous comptez l'utiliser régulièrement, pour ne pas avoir à le lancer à chaque conversation msn ) :
Code: | rc-update add upnpd default |
4. Testez !
Voilà, en principe à ce stade vous pouvez utiliser la fonction webcam, et le transfert de fichiers depuis un poste derrière votre routeur / firewall linux.
N'hésitez pas à demander aide / éclaircissements, tout commentaire est bienvenue, toute correction aussi !
Amicalement.
Ani.
références :
ce post du forum du site hardware.fr.
le site officiel de linux upnp évidemment _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
Last edited by anigel on Sat Dec 17, 2005 10:18 am; edited 4 times in total |
|
Back to top |
|
|
scout Veteran
Joined: 08 Mar 2003 Posts: 1991 Location: France, Paris en Semaine / Metz le W-E
|
|
Back to top |
|
|
Pachacamac Veteran
Joined: 22 Nov 2003 Posts: 1264 Location: Paris - France
|
Posted: Wed Jun 16, 2004 11:09 pm Post subject: |
|
|
C'est sympa mais je n'ai pas windows pour pouvoir tester.
En tout cas il est évident que cela servira à plus d'une personne.
Merci pour ce ~howto |
|
Back to top |
|
|
yuk159 Veteran
Joined: 18 Apr 2003 Posts: 1802 Location: noumea ,nouvelle-caledonie
|
Posted: Thu Jun 17, 2004 2:49 am Post subject: |
|
|
Merci Ani, je l'ai rajouté à l'index.
@+ _________________ The box said: "Requires Windows 98/2000/XP/NT, or better."
So, I installed LINUX!
Instagram |
|
Back to top |
|
|
equi-NoX Apprentice
Joined: 17 Feb 2004 Posts: 172 Location: Paris, France
|
Posted: Thu Jun 17, 2004 6:57 am Post subject: |
|
|
excusez moi mais j'ai pas bien compris ce à quoi servait ce HOWTO
... pas dans le sens "C nul, C trop facil"
mais dans le sens que je n'ai pas compris quel est le problème que ce ~howto permet de résoudre
de ce que j'ai compris soit:
- il permet à un pc sous windows qui est derrière un pc sous linux qui lui sert d'interface web, d'utiliser les fonctions 'spéciales' de MSN
- il permet à un pc sous linux d'utiliser ces fonctions spéciales
|
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Thu Jun 17, 2004 7:44 am Post subject: |
|
|
equi-NoX wrote: | - il permet à un pc sous windows qui est derrière un pc sous linux qui lui sert d'interface web, d'utiliser les fonctions 'spéciales' de MSN |
C'est exactement ça, à quelques anachronismes près. Lorsqu'on utilise un PC windows derrière une connexion partagée par un PC Linux, les fonctions évoluées de MSN messenger ne fonctionnent pas.
Je ne veux pas entrer dans les détails, mais le problème vient de la gestion de l'Universal Plug & Play sous Linux, inexistante au niveau du noyau. D'où l'apparition d'upnpd, qui pallie à ce manque.
En fait, upnp permet à une application d'ouvrir dynamiquement les ports dont elle a besoin dans un firewall. MSN utilise toujours le port 1863 pour son fonctionnement de base. Jusque-là, pas de souci, puisque tout passe par un serveur central (dont le NAT ne pose aucun souci).
Par contre, pour utiliser l'audio / vidéo / transferts de fichiers, il utilise des ports dynamiques, choisis au pif parmi un peu plus de 50 000... Dur dur d'ouvrir le bon au bon moment ! C'est le rôle d'upnp : msn lui demande d'ouvrir le port dont il a besoin, au moment où il en a besoin, afin que le flux vidéo puisse atteindre votre machine, au lieu de se viander directement sur le firewall, sur un port filtré en temps normal.
L'explication est succinte, mais le problème est complexe à gérer, et je ne maîtrise pas bien le sujet encore, toutes mes excuses si mes propos ne sont pas clairs.
Je renouvelle mon appel : HELP & TESTERS WANTED ! _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
equi-NoX Apprentice
Joined: 17 Feb 2004 Posts: 172 Location: Paris, France
|
Posted: Thu Jun 17, 2004 7:50 am Post subject: |
|
|
ok
étrange que ma soeur ne s'en soit jamais plaint
merci pour ce HOWTO en tous cas
--je testerais peut-être (faut déjà que je trouve quelqu'un avec qui lancer ce genre de truc) |
|
Back to top |
|
|
ttgeub Guru
Joined: 20 Jan 2003 Posts: 494 Location: Eindhoven
|
Posted: Thu Jun 17, 2004 8:42 am Post subject: |
|
|
Je ramene un autre thread oublier d'y a longtemps : ici.
Dans ce thread anigel avait posé la question : est ce que ca marche chez vous msn derriere un NAT ?. Une discussion surprenante s'etait alors engagée puisque de nombreuses personnes disaient que oui et qu'elles n'avaient besoin de rien pour que cela fonctionne. Les accusés sont : sebweb, sebbb et Fraker. Ce dernier donnait meme l'adresse d'un howto tres simple pour le faire fonctionner. (c'est le howto de bases sur le nat)
Deux possibilités sebweb, sebbb et Fraker sont des menteurs invintérés , ou alors y a un truc qui est passé à la trappe quelque part .... |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Thu Jun 17, 2004 8:52 am Post subject: |
|
|
C'est bien ça que j'essaie de comprendre aussi... le fonctionnement de msn messenger semble avoir changé depuis le test dont tu parles tty (2 versions sont passées dessus, le h323 est passé à la trappe, etc...), c'est pourquoi je n'avais pas mis de référence à ce thread, ne voulant pas embrouiller les choses avec des problèmes qui n'en sont plus.
Une chose est sûre : avec ma config de base (indiquée au point 1) : msn ne veut rien savoir. Avec upnp je m'en sors maintenant. _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
Pachacamac Veteran
Joined: 22 Nov 2003 Posts: 1264 Location: Paris - France
|
Posted: Thu Jun 17, 2004 8:57 am Post subject: |
|
|
Est ce qu'en utilisant un parefeu, comme ceux de windows, qui filtrent par applications cela fonctionne ? |
|
Back to top |
|
|
fafounet l33t
Joined: 03 Apr 2004 Posts: 703 Location: Meuves, France
|
Posted: Thu Jun 17, 2004 9:11 am Post subject: |
|
|
Il me semble que chez moi, ca marchait avec amsn. J´en suis pas sur et je pourrai que confirmer fin juillet |
|
Back to top |
|
|
Pachacamac Veteran
Joined: 22 Nov 2003 Posts: 1264 Location: Paris - France
|
Posted: Thu Jun 17, 2004 9:17 am Post subject: |
|
|
amsn ne gère ni le son, ni la vidéo.
Par contre les fonctions basiques fonctionnent très bien derrière un NAT, je confirme. |
|
Back to top |
|
|
fafounet l33t
Joined: 03 Apr 2004 Posts: 703 Location: Meuves, France
|
Posted: Thu Jun 17, 2004 9:26 am Post subject: |
|
|
Oue enfin je voulais dire le transfert de fichiers. Desole mais deux topics qui parlent de msn en meme temos ca fait beaucoup !! |
|
Back to top |
|
|
Leander256 l33t
Joined: 05 Jul 2003 Posts: 910 Location: Singapour
|
Posted: Thu Jun 17, 2004 10:47 am Post subject: |
|
|
Je ferai tester ça à ma soeur dans la soirée, je sais qu'elle se sert du service vocal, mais peut-être ne peut-elle pas initier le dialogue, enfin je verrai avec elle ce genre de détails. |
|
Back to top |
|
|
zdra Veteran
Joined: 30 Nov 2003 Posts: 1693 Location: Bruxelles, Belgique
|
Posted: Thu Jun 17, 2004 11:17 am Post subject: |
|
|
echo "catégorie/package ~x86" >> /etc/portage/packages.keywords
à la place des acceptkeywords c'est mieux
Sinon un grd merci, j'avais trouvé comment le faire avec shorewall en ajoutant simplement un ligne dans les fichiers de config. Jle poste ici qd je le retrouve (je le cherche pour moi). |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Fri Jun 18, 2004 9:39 am Post subject: |
|
|
Je viens de terminer ce HOWTO dans sa première version "stable". L'audio marche très bien, le testeur en revanche devait être un peu buggé le soir du test !
Bons emerge à tous. _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
Oupsman Veteran
Joined: 19 Jul 2004 Posts: 1042
|
Posted: Thu Aug 05, 2004 5:48 am Post subject: |
|
|
Salut,
j'ai essayé la configuration donnée (enfin je l'avais trouvé tout seul).
Elle a marché correctement tant que je n'avais pas de firewall actif sur mon routeur )
Maintenant que le firewall est correctement réglé, MSN fonctionne, la vidéo fonctionne, mais l'audio non
Sur mon firewall, j'ai fermé tous les ports, et ouvert le 22, le 25, le 143, le 80 et le 110.
MSN me dit que les fonctionnalités audio ne sont pas bonnes, ou un truc dans le genre.
J'ai compilé upnpd.
J'active la route.
Je lance upnpd ppp0 eth1.
Et pis rien ...
J'avoue que je craque, parce que là, tout fonctionnait bien jusqu'a un reboot...
Pourtant, j'ai bien la route dans le local.start, et tout de suite après j'ai le upnpd ...
Je craque là ... _________________ --
L'idéal de nouveauté semble avoir remplacé l'idéal de progrès. C'est bien triste.
----
Unix philosophy: "Do one thing and do it well."
systemd: "Try to do everything and do it wrong." |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Thu Aug 05, 2004 8:08 am Post subject: |
|
|
Peux-tu recopier ici tes règles de firewall stp ?
PS : vite, je pars en vacances sous peu ! _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
Oupsman Veteran
Joined: 19 Jul 2004 Posts: 1042
|
Posted: Thu Aug 05, 2004 7:38 pm Post subject: |
|
|
Code: |
oupsman root # iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
firewall all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
firewall all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
firewall all -- anywhere anywhere
Chain firewall (3 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere state NEW
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:www
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:imap2
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:pop3
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
DROP all -- anywhere anywhere
oupsman root #
|
Voilà les règles de firewall. _________________ --
L'idéal de nouveauté semble avoir remplacé l'idéal de progrès. C'est bien triste.
----
Unix philosophy: "Do one thing and do it well."
systemd: "Try to do everything and do it wrong." |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Thu Aug 05, 2004 10:42 pm Post subject: |
|
|
Tout me parait normal...
Ca me rappele en me relisant, que j'avais eu des soucis lors de mes premiers tests : l'audio avait refusé de fonctionner, alors que tout le reste passait sans soucis...
Puis c'est parti et maintenant plus aucun souci...
Là honnêtement je ne sais trop que te dire. Peut-être de refaire un essai ultérieurement ? Après un restart d'upnpd par exemple ? _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
Oupsman Veteran
Joined: 19 Jul 2004 Posts: 1042
|
Posted: Fri Aug 06, 2004 8:42 am Post subject: |
|
|
Bon, plutot que de pomper les règles de firewall, je les ai faites moi même (m'as prit du temps mais bon)
toujours est-il que cela fonctionne bien maintenant.
Merci anigel pour le coup de main. _________________ --
L'idéal de nouveauté semble avoir remplacé l'idéal de progrès. C'est bien triste.
----
Unix philosophy: "Do one thing and do it well."
systemd: "Try to do everything and do it wrong." |
|
Back to top |
|
|
Salutken n00b
Joined: 09 Oct 2004 Posts: 4
|
Posted: Tue Mar 08, 2005 12:07 am Post subject: |
|
|
Bien pratique le tutoriel ! Pour moi il y a juste un truc qui va pas... le upnp marche très bien sous azureus mais messenger n'en fait rien. Même dans outils, options puis connexion il le voit toujours comme "non-upnp" !
En fait c'est démineur qu'il est impossible de jouer |
|
Back to top |
|
|
MagicTom n00b
Joined: 23 Oct 2003 Posts: 60 Location: Nancy, France
|
Posted: Sat Jul 16, 2005 11:38 pm Post subject: |
|
|
Merci pour le tuto !
Quelques indications supplémentaires : linux-igd ne fonctionne qu'avec upnp-1.0.4-r1 et pas -1.2.1a, donc dans packages.keywords il ne faut PAS mettre ~x86 pour upnp (il faut juste le mettre pour linux-igd).
De plus, si vous avez un firewall, pensez à débloquer le port TCP 2869 pour que le démon upnpd fonctionne.
Ce sont les 2 étapes qui m'ont été indispensable pour que Messenger fonctionne bien et pour qu'eMule (mod Morph XT) m'affiche enfin un HighID depuis le LAN _________________ There's no place like ::1 |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Mon Jul 18, 2005 12:38 pm Post subject: |
|
|
Merci pour ces précisions !
Comme tu as dû le voir, ce document commence à dater, et de mon côté j'ai fini par acquérir un routeur DSL (mon ancien modem ne suivait pas la cadence de ma ligne ADSL, un comble ^^), qui intègre ça en standard. _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
MagicTom n00b
Joined: 23 Oct 2003 Posts: 60 Location: Nancy, France
|
Posted: Mon Jul 18, 2005 7:24 pm Post subject: |
|
|
Pas de problème Moi je suis en train de configurer un vieux PC comme passerelle, j'ai pas de routeur ADSL, mais j'aimerais bien parce que le modem ECI USB de Wanadoo est tout pourri
J'ai mis à jour le HOWTO sur fr.gentoo-wiki.org... En espérant que ça aidera quelqu'un _________________ There's no place like ::1 |
|
Back to top |
|
|
|