Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
unix:peering_iax_asterisk [2006/04/12 14:25]
twisla
unix:peering_iax_asterisk [2010/01/12 13:29] (current)
Line 1: Line 1:
 +FIXME (à completer)
 +
 +
 +En suivant les instructions de l'​excellent [[http://​beta.gcu.info/​doc/​AsteriskTFOT.zip|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'​[[http://​www.ekiga.org/​|ekiga]] ou [[http://​www.twinklephone.com|twinkle]].
 +
 +Tahorg et iMil avaient 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 puissent gérer differents accès téléphoniques.
 +
 +Je me suis incrusté dans l'​histoire une fois le début de setup en place, on était déjà passé de SIP à IAX, mais un truc me chiffonait. IAX est un protocole plutot prévu pour un usage sur des réseaux sécurisés,​ tout passe en clair dessus, dont les info de login.
 +L'auth plaintext mise en place pour les tests n'​était donc pas trop recommandée pour un PBX public.
 +IAX offre un début de réponse à ces problèmes de sécurité (bien que tout le monde recommande encore l'​utilisation de vpns pour sécuriser les communications):​ l'​authentification par clé rsa.
 +
 +Nous allons donc voir comment créer un peering IAX avec auth en rsa.
 +
 +Voici l'​architecture simple que nous avons monté :
 +
 +{{unix:​asterisk-lutin-iax.png}}
 +
 +Premièrement,​ pour une authentification par clé, il faut générer une paire de clés privée/​publique.
 +
 +Asterisk vient avec un petit script pour gérer cela: astgenkey
 +
 +<​code>​
 +lutin% astgenkey ma-clef
 +</​code>​
 +
 +Il vous demandera de rentrer la passphrase pour votre jeu de clés.
 +
 +vous avez donc ma-clef.pub et ma-clef.key dans le répertoire courant. Il vous faut mover la clé publique dans le répertoire $ASTVARLIB/​keys/​ sur le PBX public, et la clé privée dans le même répertoire,​ mais dans votre PBX client.
 +(/​var/​lib/​asterisk/​keys par défaut, /​usr/​local/​share/​asterisk/​keys si installé via le port sous FreeBSD).
 +
 +Les clés générées et mises en place, nous pouvons nous attaquer à la configuration.
 +
 +Voici le //​iax.conf//​ d'un PBX client, celui chez soi donc, ne comportant que les informations nécessaires au dialogue avec le PBX "​maitre"​.
 +
 +<​code>​
 +[general]
 +register => login:​[clé-rsa]@host.pbx.public ; on enregistre son serveur IAX comme client sur le serveur PBX public. ​
 +;Les [] sont importants, c'est toute la différence entre une clé et un password.
 +;Les clés sont indiquées sans leur extension .pub|.key
 +
 +disallow=all ​  ; on commence par refuser tous les codecs.
 +allow=gsm ​     ; on accepte uniquement des codecs ​
 +allow=speex ​   ; consommant peu de bande passante
 +
 +[jardin-iax-out]
 +type=peer ​     ; on définit le PBX publique comme peer et non comme user. 
 +auth=rsa ​      ; on précise que l'​authentification se fait pas clé.
 +username=user1
 +outkey=ma-clef
 +host=host.pbx.public
 +
 +context=from-jardin-iax ; contexte a renseigner dans extensions.conf
 +
 +
 +</​code>​
 +
 +Voici l'//​extensions.conf//​ correspondant :
 +
 +<​code>​
 +[maison]
 +
 +exten => 100,​1,​Dial(SIP/​user) ; numero local
 +
 +exten => _88299.,​1,​Dial(IAX2/​${EXTEN}@jardin-iax-out,​30,​r) ; lorsque je compose un numero qui matche 88299 (voir e164.org), on utilise le lien monpbxpublic-out
 +
 +; extension raccourcie pour appeler directement un user
 +exten => 666,​1,​Dial(IAX2/​jardin-iax-out/​user2)
 +
 +[from-jardin-iax]
 +
 +exten => s,​1,​Dial(SIP/​user1) ; par defaut (entrée "​s"​),​ lorsqu'​on recoit un call depuis le pbx public, on appelle cette ligne.
 +</​code>​
 +
 +Et bien entendu, vous avez déjà défini l'​utilisateur correspondant dans le sip.conf.
 +
 +Maintenant, voici le //​iax.conf//​ du serveur Asterisk public :
 +
 +<​code>​
 +[general]
 +
 +disallow=all
 +allow=gsm
 +allow=speex
 +
 +[user1]
 +type=friend ; on peut se connecter ici via un telephone ou via un peer asterisk
 +auth=rsa
 +username=user1
 +inkeys=ma-clef
 +host=dynamic
 +context=pbxpublic
 +
 +[user2]
 +type=friend
 +username=user2
 +inkeys=sa-clef
 +host=dynamic
 +context=pbxpublic
 +</​code>​
 +
 +Et l'//​extensions.conf//​ correspondant (les numeros ne sont pas les bons evidemment...) :
 +
 +<​code>​
 +[pbxpublic]
 +exten => 8829900349801,​1,​Dial(IAX2/​user1)
 +exten => user1,​1,​Dial(IAX2/​user1)
 +
 +exten => 8829900349802,​1,​Dial(IAX2/​user2)
 +exten => user2,​1,​Dial(IAX2/​user2)
 +</​code>​
 +
 +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 :
 +
 +<​code>​
 +*CLI> set debug 25
 +*CLI> set verbose 25
 +</​code>​
 +
 +Faites de même sur votre PBX maison, avec une petite différence:​
 +//asterisk -civvv//, le -i est là pour initialiser votre clé privée et vous deviez voir apparaitre :
 +
 +<​code>​-- Registered IAX2 to '​XX.XX.XX.XX',​ who sees us as XX.XX.XX.XX:​4569 with no messages waiting</​code>​
 +
 +...Et c'est maintenant que le cauchemar commence ;)
 +
 +
 +adapté de [[unix:​peering_sip_asterisk|peering SIP avec asterisk]] la partie auth par clé est basée sur l'​excellent [[http://​www.voip-info.org/​wiki/​index.php?​page=Asterisk+iax+rsa+auth|article]] de voip-info.org.
  
unix/peering_iax_asterisk.txt · Last modified: 2010/01/12 13:29 (external edit)