J'ai besoin de vous !

Bon, je vous remets a contribution…
J’ai là un petit programme a tester, c’est un morceau de test d’un projet plus gros de VoIP dont je vous ai déja parlé.

Le but est de déterminer automatiquement si le programme est derriere un NAT ou non, et si oui, de trouver de quel type de NAT il s’agit. Le tout pour que le programme puisse être utilisé par monsieur tout le monde avec un minimum de configuration (ala MSN : user/pass, eventuellement addresse du serveur, point barre).

le programme de test est là :
http://crashmachine.tzim.net/tmp/testnat.zip
A priori, ca devrais pas planter…

Si vous voulez, vous pouvez aussi préciser quel est votre config, voire même coller les résutats.

Marchi d’avance…

« L’application n’a pas réussi à s’initialiser correctement (0xc0000135) »
mais ça plante pas :stuck_out_tongue:

[quote name=‹ Moktar › date=’ 12 Apr 2005, 12:28’]« L’application n’a pas réussi à s’initialiser correctement (0xc0000135) »
mais ça plante pas  :stuck_out_tongue:
[right][post=« 349528 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Ouais , je précise : Faut le framework .net, hein…
Si vraiment vous voulez pas installer le framework, vous pouvez aussi tester
http://crashmachine.tzim.net/tmp/WinStun.zip

Sinon, les autres, vous pouvez comparer les résultats des deux programmes.

Voila les resultats chez moi :

Machine principale (passerelle)
Win2000 SP4

Detection du type de NAT
Port UDP local 3930
STUN Server : larry.gloo.net (66.7.238.210:3478)
Test 1 : 66.7.238.210:3478 reporte le port UDP 82.254.232.232:3930
Serveur 2 : 66.7.238.213:3479
Test 2 : 66.7.238.213:3479 reporte le port UDP 82.254.232.232:3930
IP locale Publique -> Acces Direct
Type de NAT : NoNat

Machine 2
Win Xp SP1

Detection du type de NAT
Port UDP local 1048
STUN Server : larry.gloo.net (66.7.238.210:3478)
Test 1 : 66.7.238.210:3478 reporte le port UDP 82.254.232.232:1048
Serveur 2 : 66.7.238.213:3479
Test 2 : Pas de réponse.
Test 3 : 66.7.238.213:3479 reporte le port UDP 82.254.232.232:1048

Test 4 : Pas de réponse -> PortRestrictedCone NAT
Type de NAT : PortRestrictedCone

Petit UP pour la forme…

Win XP SP2, derniere freebox en routeur

Detection du type de NAT
Port UDP local 1224
STUN Server : larry.gloo.net (66.7.238.210:3478)
Test 1 : 66.7.238.210:3478 reporte le port UDP 82.254.121.9:1048
Serveur 2 : 66.7.238.213:3479
Test 2 : Pas de réponse.
Test 3 : 66.7.238.213:3479 reporte le port UDP 82.254.121.9:1048

Test 4 : Pas de réponse -> PortRestrictedCone NAT
Type de NAT : PortRestrictedCone

Machine: Windows Xp pro sp2

(sachant que je suis derrière un routeur mais que j’ai crée un DMZ sur mon pc )

Detection du type de NAT
Port UDP local 1894
STUN Server : larry.gloo.net (66.7.238.210:3478)
Test 1 : 66.7.238.210:3478 reporte le port UDP 84.4.82.3:1894
Serveur 2 : 66.7.238.213:3479
Test 2 : 66.7.238.213:3479 reporte le port UDP 84.4.82.3:1894
Mapping ouvert -> FullCone
Type de NAT : FullCone

Win 2K Pro

Detection du type de NAT
Port UDP local 2694
STUN Server : larry.gloo.net (66.7.238.210:3478)
Test 1 : 66.7.238.210:3478 reporte le port UDP 194.51.105.62:22008
Serveur 2 : 66.7.238.213:3479
Test 2 : 66.7.238.213:3479 reporte le port UDP 194.51.105.62:22008
Mapping ouvert -> FullCone
Type de NAT : FullCone

Win 2k pro SP4 derriere un DI604

Soft framework :
Detection du type de NAT
Port UDP local 1254
STUN Server : larry.gloo.net (66.7.238.210:3478)
Test 1 : 66.7.238.210:3478 reporte le port UDP 81.56.53.130:62853
Serveur 2 : 66.7.238.213:3479
Test 2 : 66.7.238.213:3479 reporte le port UDP 81.56.53.130:62853
Mapping ouvert -> FullCone
Type de NAT : FullCone

Soft sans framework :
Cone Nat detect - VoIP will work with STUN
Does not preserve port number
Supports hairpin of media
Public IP address: 81.56.53.130

Fait avec WinStunt:

Symetric - VOIP will NOT work
Does not preserve port number
Does not supports hairpin of media
Public IP address: 82.233.37.135

Comme tu n’avais pas encore de symetric…

Résultat pas tout à fait vrai car la gateway support SIP ALG.

WinXp Sp2 derrière un Linksys BEFSR41

Detection du type de NAT
Port UDP local 4388
STUN Server : larry.gloo.net (66.7.238.210:3478)
Test 1 : 66.7.238.210:3478 reporte le port UDP 81.56.226.186:4388
Serveur 2 : 66.7.238.213:3479
Test 2 : Pas de réponse.
Test 3 : 66.7.238.213:3479 reporte le port UDP 81.56.226.186:4388

Test 4 : 66.7.238.210:3479 reporte le port UDP 81.56.226.186:4388
-> RestrictedCone NATType de NAT : RestrictedCone

voilà voilà

Donc, xp sp2, livebosque wifi sans firewall, toussa toussa :

Detection du type de NAT
Port UDP local 4542
STUN Server : larry.gloo.net <66.7.238.210:3478>
Test 1 : 66.7.238.213.3479 reporte le port UDP 83.193.102.78:4542
Serveur 2 : 66.7.238.213:3479
Test 2 : Pas de réponse.
Test 3 : 66.7.238.213:3479 reporte le port UDP 83.193.102.78:56558
Mapping Symétrique -> NAT Symétrique.
Type de NAT : SymetricNat

Ouala.

Bon, les ceusses qui ont du symetric NAT (le pire cas possible, en fait), merci de préciser : modele du routeur, firmware custom, support de UPnP, firewall actif (oui/non)…

[quote name=‘Tzim’ date=’ 12 Apr 2005, 16:19’]Bon, les ceusses qui ont du symetric NAT (le pire cas possible, en fait), merci de préciser : modele du routeur, firmware custom, support de UPnP, firewall actif (oui/non)…
[right][post=“349640”]<{POST_SNAPBACK}>[/post][/right][/quote]

ZyWALL70 ver 3.63(WM.2), pour info la derniere version 3.64(WM.0) change ça en port restricted cone NAT, firewall statefull actif, supporte SIP ALG (si port 5060), supporte UPnP et le mappage de port en ‘port triggering’.

Certaines appli SIP et certains matériels SIP comme des WIFI phone ont une fonction qui permet de renseigner l’IP publique pour qu’elle soit utilisée directement dans les trames à la place de l’IP locale.
Si ça peut te servir, n’ayant pas de détails sur ton projet!

Voili, voilou.

Windows XP Sp2, firewall SP2, branché direct sur freebox :

Detection du type de NAT
Port UDP local 3305
STUN Server : larry.gloo.net (66.7.238.210:3478)
Test 1 : 66.7.238.210:3478 reporte le port UDP 82.67.133.98:3305
Serveur 2 : 66.7.238.213:3479
Test 2 : 66.7.238.213:3479 reporte le port UDP 82.67.133.98:3305
IP locale Publique -> Acces Direct
Type de NAT : NoNat

Hop:
Win XP Home SP2,Freebox Failleur oual XP.

Detection du type de NAT
Port UDP local 1659
STUN Server : larry.gloo.net (66.7.238.210:3478)
Test 1 : 66.7.238.210:3478 reporte le port UDP 82.253.124.68:1659
Serveur 2 : 66.7.238.213:3479
Test 2 : 66.7.238.213:3479 reporte le port UDP 82.253.124.68:1659
IP locale Publique -> Acces Direct
Type de NAT : NoNat

Dat’s all folks!

@Raoul : En fait, l’IP publique, y’a aucun soucis pour le connaitre (pour preuve, le soft là, la trouve). Par contre, le port, c’est un peu plus compliqué. Hors symetric, pas de soucis, la correspondance port public/privé est unique, donc on peut le connaitre par reflection. Dans le cas symetric, le port change en fonction de la source ET de la destination. Du coup, plus moyen pour l’application de connaitre le port public.

De plus, le but ici est de minimiser le nombre de paramètres a faire rentrer a l’utilisateur dans son (soft ou hard)phone. Si en plus il faut qu’il paramètre son routeur… (cela dit, c’est toujours fesable, hein…)

Sinon, oui, l’alg, c’est bien, mais ca marche pas a tout les coups. de plus, ca commence à déconer lorsque l’on veux utiliser plusieurs phones indépendants sur le LAN (ce qui reste possible sinon), et le phone se demande aussi ce qu’il se passe. Au passage, la modif de la trame casse la signature de l’envoyeur si les paquets sont signés, signature que je souhaite utiliser (ne pas prévoir de systeme anti-spoofing, on a bien vu les merdes que ca à causé avec les mails…).

Tzim

Ok, ok, la fonction dont je te parle permet de modifier directement l’IP dans le paquet SIP dans le cas ou tu mets les utilisateurs en liaison via un serveur mais qui ne se charge pas de relayer les coms. Mais tu avais certainement compris.

Sinon le must c’est de fournir un outbound proxy aux utilisateurs, ce qui doit règler tous les problèmes de NAT et simplifie les config utilisateurs. Je sais, faut avoir les moyens…

Raoul qui rentre chez lui…

Windows XP, firewall SP2, branché direct sur modem cable U.S.R.

Detection du type de NAT
Port UDP local 2181
STUN Server : larry.gloo.net (66.7.238.210:3478)
Test 1 : 66.7.238.210:3478 reporte le port UDP 62.43.64.251:2181
Serveur 2 : 66.7.238.213:3479
Test 2 : 66.7.238.213:3479 reporte le port UDP 62.43.64.251:2181
IP locale Publique -> Acces Direct
Type de NAT : NoNat

[quote name=‘Raoul’ date=’ 12 Apr 2005, 17:18’]Tzim

Ok, ok, la fonction dont je te parle permet de modifier directement l’IP dans le paquet SIP dans le cas ou tu mets les utilisateurs en liaison via un serveur mais qui ne se charge pas de relayer les coms. Mais tu avais certainement compris.

Sinon le must c’est de fournir un outbound proxy aux utilisateurs, ce qui doit règler tous les problèmes de NAT et simplifie les config utilisateurs. Je sais, faut avoir les moyens…

Raoul qui rentre chez lui…
[right][post=“349672”]<{POST_SNAPBACK}>[/post][/right][/quote]
Oui, c’est bien ce que je dit… mais pour modifier la trame il faut avoir des infos que tu peux pas forcement avoir (et reste le probleme de signature). Et pour l’outbound proxy, oui… a condition d’être en environnement maitrisé. Ici, le but est de faire du grand public. Un outbound proxy ne reglera rien (a moins qu’il serve aussi de relai RTP, mais ca deviens trop lourd). Au cas ou ca aurrait pas été compris, le but est de faire du GRAND PUBLIC, avec zero (ou presque) config.

Tu ouvres un compte SIP sur un site web, comme tu peux le faire pour un compte mail (ex sip:tzim@machinphone.net), tu choisis ton mot de passe, et tu fous ca dans ton telephone (ou dans le softphone) avec eventuellement l’outbound proxy(sip.machinphone.net) mais là, on peux toujours le “deviner” a partir du domaine de l’URI sip, et faut que ca marche.