Discussion utilisateur:Gfa/STUN

De Wiki JabberFR
Révision datée du 3 février 2010 à 22:57 par Nyco (discussion | contributions) (indentation à la XEP, pour plus de lisibilité)
Aller à la navigation Aller à la recherche
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.

Principe

STUN est un système client/serveur permettant de faire traverser les packets UDP au travers des routeurs NAT, très répandus ( inclus dans les "Box" d'opérateurs ADSL). Pour la VoIP avec Jabber (par exemple Jingle), afin de faire transiter la voix, les clients ont besoin d'établir une connexion entre eux. Hélas, dans la plupart des cas, les NAT gênent la négociation permettant d'établir cette connexion.

Voici une négociation gênée par un NAT

Demande :

<iq type="set"
    to="gfa@jabber.gnubox.net/PsiLaptop"
    id="aac1a" >
  <jingle xmlns="urn:xmpp:jingle:1"
          initiator="gfa85@im.apinc.org/Psi"
          action="session-initiate"
          sid="kQVmbTlykr8RnXFc" >
    <content creator="initiator"
             name="A"
             senders="both">
      <description xmlns="urn:xmpp:jingle:apps:rtp:1"
                   media="audio">
        <payload-type id="110"
                      name="SPEEX"
                      clockrate="16000" />
      </description>
    <transport xmlns="urn:xmpp:jingle:transports:ice-udp:1"
               pwd="YPCRsM3Lzqq0NqYg0edogE"
               ufrag="VvCJ" />
    </content>
  </jingle>
</iq>

Réponse :

<iq from="gfa@jabber.gnubox.net/PsiLaptop"
    type="result"
    xml:lang="fr"
    to="gfa85@im.apinc.org/Psi"
    id="aac1a" />

Négociation provenant de l'appelant :

<iq type="set"
    to="gfa@jabber.gnubox.net/PsiLaptop"
    id="aac2a" > 
  <jingle xmlns="urn:xmpp:jingle:1"
          action="transport-info"
          sid="kQVmbTlykr8RnXFc" >
    <content creator="initiator"
             name="A" >
      <transport xmlns="urn:xmpp:jingle:transports:ice-udp:1"
                 pwd="YPCRsM3Lzqq0NqYg0edogE"
                 ufrag="VvCJ" >
        <candidate generation="0"
                   network="0"
                   port="8010"
                   protocol="udp"
                   component="1"
                   foundation="0"
                   ip="192.168.0.10"
                   priority="2130706431"
                   type="host"
                   id="2nSFnufIoR" />
        <candidate generation="0"
                   network="0"
                   port="8011"
                   protocol="udp"
                   component="2"
                   foundation="0"
                   ip="192.168.0.10"
                   priority="2130706430"
                   type="host"
                   id="m6GrM9lWOs" />
      </transport>
    </content>
  </jingle>
</iq>

Négociation, provenant de l'appelé :

<iq from="gfa@jabber.gnubox.net/PsiLaptop"
    type="set"
    xml:lang="fr"
    to="gfa85@im.apinc.org/Psi"
    id="aaeba" >
  <jingle xmlns="urn:xmpp:jingle:1"
          action="transport-info"
          sid="kQVmbTlykr8RnXFc" >
    <content creator="initiator"
             name="A" >
      <transport xmlns="urn:xmpp:jingle:transports:ice-udp:1"
                 pwd="MAkderMeG9g0JfsFDpN8cy"
                 ufrag="LYaR" >
        <candidate generation="0"
                   network="0"
                   port="8010"
                   protocol="udp"
                   component="1"
                   foundation="0"
                   ip="192.168.0.12"
                   priority="2130706431"
                   type="host"
                   id="PoO5Qsg2gi" />
        <candidate generation="0"
                   network="0"
                   port="8011"
                   protocol="udp"
                   component="2"
                   foundation="0"
                   ip="192.168.0.12"
                   priority="2130706430"
                   type="host"
                   id="qULtGeTTiV" />
      </transport>
    </content>
  </jingle>
</iq>

On remarquera les IP locales ! Inexploitables dans le cadre d'internet !