(à completer)
Préambule: Après avoir réalisé la même experience en utilisant IAX (le protocole de communication entre serveurs Asterisk), nous conseillons fortement cette dernière, bien plus simple à mettre en oeuvre que la methodologie qui suit.
En suivant les instructions de l'excellent Asterisk, the future of telephony, vous avez certainement reussi en quelques coups de cuiller a pot à monter un simple PBX sur lequel se connectent directement vos clients SIP, typiquement des softphones tels qu'ekiga.
Tahorg et moi avions envie de monter un truc qui nous permette :
1. de pouvoir communiquer entre nous et tous les lutins mais aussi 2. de garder nos PBX maison qui relient les differents soft / hardphones au sein de nos demeures et gèrent éventuellement differents accès téléphoniques.
Voici l'architecture simple que nous avons monté :
Voici le sip.conf d'un PBX client, celui chez soi donc, ne comportant que les informations nécessaires au dialogue avec le PBX “maitre”.
[general] register => imil:mot_de_passe@host.pbx.public ; on enregistre son serveur SIP comme client sur le serveur PBX public videosupport=yes ; on supporte le transport video allow=all ; on authorise tous les codecs (uniquement pour les tests) [monpbxpublic-out] type=peer ; voir http://www.voip-info.org/wiki/view/Asterisk+SIP+user+vs+peer pour l'explication secret=mot_de_passe insecure=very ; nécessaire pour un peering SIP (à contrario d'IAX) username=imil host=host.pbx.public nat=no ; le serveur est public context=from-monpbxpublic ; contexte a renseigner dans extensions.conf ; à la suite du fichier, les definitions des postes locaux par exemple
Voici l'extensions.conf correspondant :
[maison] exten => 100,1,Dial(SIP/imil) ; numero local exten => _88299.,1,Dial(SIP/${EXTEN}@monpbxpublic-out,30,r) ; lorsque je compose un numero qui matche 88299 (voir e164.org), on utilise le lien monpbxpublic-out [from-monpbxpublic] exten => s,1,Dial(SIP/imil) ; par defaut (entrée "s"), lorsqu'on recoit un call depuis le pbx public, on appelle cette ligne.
Maintenant, voici le sip.conf du serveur Asterisk public :
[general] videosupport=yes allow=all [imil] type=friend ; on peut se connecter ici via un telephone ou via un peer asterisk username=imil secret=mot_de_passe host=dynamic context=pbxpublic [tahorg] type=friend username=tahorg secret=mod_de_passe host=dynamic context=pbxpublic
Et l'extensions.conf correspondant (les numeros ne sont pas les bons evidemment…) :
[pbxpublic] exten => 8829900349801,1,Dial(SIP/imil) exten => 8829900349802,1,Dial(SIP/tahorg)
Reste maintenant à démarrer votre asterisk sur le pbx public (préferablement en mode console pour le debug: asterisk -cvvv) et de placer les variables suivantes :
*CLI> set debug 25 *CLI> set verbose 25
Faites de même sur votre PBX maison, et vous deviez vous apparaitre :
-- Registered SIP 'imil' at xx.xx.xx.xx port 5063 expires 1800
…Et c'est maintenant que le cauchemar commence ;)