Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[HOWTO] routeur UPNP (ou msn derrière un NAT).
View unanswered posts
View posts from last 24 hours

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Wed Jun 16, 2004 9:45 pm    Post subject: [HOWTO] routeur UPNP (ou msn derrière un NAT). Reply with quote

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 :lol: !

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 :lol:), 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 :arrow: 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 :lol:. 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 :lol:) :

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
View user's profile Send private message
scout
Veteran
Veteran


Joined: 08 Mar 2003
Posts: 1991
Location: France, Paris en Semaine / Metz le W-E

PostPosted: Wed Jun 16, 2004 10:51 pm    Post subject: Reply with quote

Merci beaucoup pour ce nouvel howto, et je teste quand je rentre chez moi !
_________________
http://petition.eurolinux.org/ - Petition against ePatents
L'essence de la finesse
Back to top
View user's profile Send private message
Pachacamac
Veteran
Veteran


Joined: 22 Nov 2003
Posts: 1264
Location: Paris - France

PostPosted: Wed Jun 16, 2004 11:09 pm    Post subject: Reply with quote

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
View user's profile Send private message
yuk159
Veteran
Veteran


Joined: 18 Apr 2003
Posts: 1801
Location: noumea ,nouvelle-caledonie

PostPosted: Thu Jun 17, 2004 2:49 am    Post subject: Reply with quote

Merci Ani, je l'ai rajouté à l'index.

@+
_________________
The box said: "Requires Windows 98/2000/XP/NT, or better."
So, I installed LINUX!
un blog de plus :)
Back to top
View user's profile Send private message
equi-NoX
Apprentice
Apprentice


Joined: 17 Feb 2004
Posts: 172
Location: Paris, France

PostPosted: Thu Jun 17, 2004 6:57 am    Post subject: Reply with quote

excusez moi mais j'ai pas bien compris ce à quoi servait ce HOWTO
... pas dans le sens "C nul, C trop facil" :P

mais dans le sens que je n'ai pas compris quel est le problème que ce ~howto permet de résoudre :oops:


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
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Thu Jun 17, 2004 7:44 am    Post subject: Reply with quote

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 :lol: !
_________________
Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
Back to top
View user's profile Send private message
equi-NoX
Apprentice
Apprentice


Joined: 17 Feb 2004
Posts: 172
Location: Paris, France

PostPosted: Thu Jun 17, 2004 7:50 am    Post subject: Reply with quote

ok :)

étrange que ma soeur ne s'en soit jamais plaint :lol:


merci pour ce HOWTO en tous cas :wink:

--je testerais peut-être (faut déjà que je trouve quelqu'un avec qui lancer ce genre de truc)
Back to top
View user's profile Send private message
ttgeub
Guru
Guru


Joined: 20 Jan 2003
Posts: 494
Location: Eindhoven

PostPosted: Thu Jun 17, 2004 8:42 am    Post subject: Reply with quote

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 :D 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 :D :D, ou alors y a un truc qui est passé à la trappe quelque part ....
Back to top
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Thu Jun 17, 2004 8:52 am    Post subject: Reply with quote

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
View user's profile Send private message
Pachacamac
Veteran
Veteran


Joined: 22 Nov 2003
Posts: 1264
Location: Paris - France

PostPosted: Thu Jun 17, 2004 8:57 am    Post subject: Reply with quote

Est ce qu'en utilisant un parefeu, comme ceux de windows, qui filtrent par applications cela fonctionne ?
Back to top
View user's profile Send private message
fafounet
l33t
l33t


Joined: 03 Apr 2004
Posts: 703
Location: Meuves, France

PostPosted: Thu Jun 17, 2004 9:11 am    Post subject: Reply with quote

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
View user's profile Send private message
Pachacamac
Veteran
Veteran


Joined: 22 Nov 2003
Posts: 1264
Location: Paris - France

PostPosted: Thu Jun 17, 2004 9:17 am    Post subject: Reply with quote

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
View user's profile Send private message
fafounet
l33t
l33t


Joined: 03 Apr 2004
Posts: 703
Location: Meuves, France

PostPosted: Thu Jun 17, 2004 9:26 am    Post subject: Reply with quote

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
View user's profile Send private message
Leander256
l33t
l33t


Joined: 05 Jul 2003
Posts: 896
Location: Singapour

PostPosted: Thu Jun 17, 2004 10:47 am    Post subject: Reply with quote

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
View user's profile Send private message
zdra
Veteran
Veteran


Joined: 30 Nov 2003
Posts: 1693
Location: Bruxelles, Belgique

PostPosted: Thu Jun 17, 2004 11:17 am    Post subject: Reply with quote

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
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Fri Jun 18, 2004 9:39 am    Post subject: Reply with quote

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 :lol: !

Bons emerge à tous.
_________________
Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
Back to top
View user's profile Send private message
Oupsman
Veteran
Veteran


Joined: 19 Jul 2004
Posts: 1027

PostPosted: Thu Aug 05, 2004 5:48 am    Post subject: Reply with quote

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 :o)

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à ... :cry:
_________________
--
Un seul mot d'ordre : don't feed the troll anymore
Back to top
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Thu Aug 05, 2004 8:08 am    Post subject: Reply with quote

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
View user's profile Send private message
Oupsman
Veteran
Veteran


Joined: 19 Jul 2004
Posts: 1027

PostPosted: Thu Aug 05, 2004 7:38 pm    Post subject: Reply with quote

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.
_________________
--
Un seul mot d'ordre : don't feed the troll anymore
Back to top
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Thu Aug 05, 2004 10:42 pm    Post subject: Reply with quote

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
View user's profile Send private message
Oupsman
Veteran
Veteran


Joined: 19 Jul 2004
Posts: 1027

PostPosted: Fri Aug 06, 2004 8:42 am    Post subject: Reply with quote

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.
_________________
--
Un seul mot d'ordre : don't feed the troll anymore
Back to top
View user's profile Send private message
Salutken
n00b
n00b


Joined: 09 Oct 2004
Posts: 4

PostPosted: Tue Mar 08, 2005 12:07 am    Post subject: Reply with quote

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
View user's profile Send private message
MagicTom
n00b
n00b


Joined: 23 Oct 2003
Posts: 60
Location: Nancy, France

PostPosted: Sat Jul 16, 2005 11:38 pm    Post subject: Reply with quote

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
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1888
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Mon Jul 18, 2005 12:38 pm    Post subject: Reply with quote

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
View user's profile Send private message
MagicTom
n00b
n00b


Joined: 23 Oct 2003
Posts: 60
Location: Nancy, France

PostPosted: Mon Jul 18, 2005 7:24 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum