Afin de passer des appels voix sur IP d’un PABX à un autre, l’utilisation du protocole SIP est directe et permet d’assurer une cohérence avec les téléphones utilisant ce même protocole. Cet article explique comment construire simplement une connexion SIP entre deux Asterisk et peut donc service à interconnecter un Asterisk avec d’autres systèmes SIP disponibles sur le marché.
Dans Asterisk, on distingue les appels entrants et les appels sortants. Les premiers nécessitent d’être acceptés d’une part et orientés vers le contexte du plan d’appel qui permettra de les gérer par rapport au besoin. Dans le cas des appels sortants, l’application Dial nécessite soit un profile SIP spécifique, soit un enregistrement dans le cas de l’utilisation d’une adresse IP allouée dynamiquement.
Contexte
La complexité de l’opération d’interconnexion réside dans la compréhension des rôles de chaque partie et les paramètres qu’il faut mettre en regard. L’exemple que nous utiliserons ici est constituée de deux Asterisk, nommés respectivement asterisk-lyon et asterisk-paris, ils utilisent tout deux une adresse IP fixe, sur un réseau d’entreprise traditionnel, sans NAT donc. Nous avons attribué le préfixe 91 à Lyon et le préfixe 98 à Paris pour un routage simplifié.
Configuration simple
Pour commencer, essayons de faire passer un appel de Paris vers Lyon. Pour cela, il me faut configurer mes deux Asterisk comme suit, dans sip.conf :
| Lyon |
Paris |
[trunk-lyon-paris]
type=peer
host=asterisk-paris
context=from-asterisk-paris
|
[trunk-paris-lyon]
type=peer
host=asterisk-lyon
|
L’appel part de Paris avec dans le plan d’appel, extensions.conf :
exten => _91.,1,Set(CALLERID(num)=98${CALLERID(num)})
exten => _91.,2,Dial(SIP/trunk-paris-lyon/${EXTEN:2},20,rt)
Le Dial dirige donc l’appel sur le faisceau nommé trunk-paris-lyon. Celui ci est défini dans le fichier sip.conf entre crochet, il est de type peer donc on peut faire passer des appels en sortie et le partenaire est l’adresse IP derrière l’hôte asterisk-lyon (cf DNS ou table de hosts).
Le message SIP INVITE arrive à Lyon et Asterisk cherche dans la configuration SIP un profile dont l’adresse IP source correspondrait à asterisk-paris. Il n’a plus qu’à le diriger vers le contexte spécifié.
Configuration bidirectionnelle
Afin que Lyon puisse également appeler Paris, il nous faut effectuer les modifications suivantes (en gras):
| Lyon |
Paris |
[trunk-lyon-paris]
type=peer
host=asterisk-paris
context=from-asterisk-paris
|
[trunk-paris-lyon]
type=peer
host=asterisk-lyon
context=from-asterisk-lyon
|
A Lyon, le plan d’appel doit également contenir de quoi aller à Paris:
exten => _98.,1,Set(CALLERID(num)=91${CALLERID(num)})
exten => _98.,2,Dial(SIP/trunk-lyon-paris/${EXTEN:2},20,rt)
Avec authentification des appels
S’il on souhaite apporter un peu de sécurité on peut ajouter l’authentification de chaque appel passé sur ce faisceau. Non pas que cette sécurité soit à l’épreuve de tout, mais elle permet d’échafauder un principe de facturation entre les deux entités, lorsque l’on met en place l’authentification dans la configuration, on accepte de fait ce principe. L’authentification utilise un digest et MD5, donc le mot de passe ne circule pas en clair dans la communication.
La mise en place de l’authentification nécessite un mot de passe, utilisé comme germe lors des premiers échanges, ainsi que d’un nom d’utilisateur (pas obligatoire, mais permet de gagner en clarté et d’éviter les erreurs lorsque les postes ont les mêmes identifiants sur les différents sites). La configuration devient donc:
| Lyon |
Paris |
[trunk-lyon-paris]
type=peer
host=asterisk-paris
context=from-asterisk-paris
username=trunk-paris-lyon
secret=super_mot_de_passe
|
[trunk-paris-lyon]
type=peer
context=from-asterisk-lyon
host=asterisk-lyon
username=trunk-lyon-paris
secret=super_mot_de_passe
|
Conclusion
La mise en place d’un lien SIP entre deux Asterisk est donc assez simple, du moins lorsque les adresses IP sont cohérentes. C’est également le principe utilisé pour interfacer un Asterisk avec d’autres équipements SIP et notamment ceux chez les fournisseurs de téléphonie, les Centrex.
Très intéressant, mais manque cruellement de pédagogie à tel point qu’on ne sait plus de quoi il s’agit vraiment.
le 15/08/2007 à 18:37Merci quand même !
Ce que vous donnez comme info est surement logique pour ceux qui comprennent les algos mais je trouve qu’il serait bien que vous pensiez à des curieux de l’informatique comme moi qui ne s’y connaisse pas mais qui en ont entendu parler et qui s’y intéresse bcp. Merci d’en tenir compte.
le 18/09/2007 à 18:45Je vous remercie de votre remarque mais ne comprends pas spécialement en quoi il est nécessaire de comprendre les algos, je n’en vois en effet aucun dans cet article détaillant un principe avancé de l’utilisation de l’IPBX Asterisk.
le 20/09/2007 à 23:50Pourriez-vous me détailler ce que vous auriez souhaité voir dans cet article et que vous n’avez pas trouvé ?
Bonjour Alexandre.
le 20/10/2007 à 16:30Je trouve l’article simple et efficace pour qui voudrait bien faire communiquer deux asterisk.
Peut etre developper la partie authentification serait aussi bien et utiliser des LAN avec des adresses privees, ….vpn entre les deux pourrait etre bon.
Des que j’aurais le temps je posterais un article sur ces aspects qui peuvent egalement aider.
Nice job…. Go on
Bonjour,
En quoi un lien SIP est plus intéressant qu’un lien IAX2 sur 2 serveurs Asterisk ? quelle est la meilleure solution ?
Merci de votre avis :)
le 04/03/2008 à 16:08SIP est le standard ouvert de VoIP interopérable le plus étendu et vise à devenir le standard des télécommunications multimédia (son, image, etc.). SIP n’est donc pas seulement destiné à la VoIP mais pour de nombreuses autres applications telles que la visiophonie, la messagerie instantanée, ou même les jeux vidéo.
IAX est un protocole de voix sur IP issu du projet de PABX open source Asterisk.
Il permet la communication entre client et serveur ainsi qu’entre serveurs. Il est plus puissant que SIP car il a été conçu pour le contrôle et la transmission de flux multimédia avec un débit plus faible (notamment pour la voix) et l’intégration dans les réseaux nates.
Ses faiblesses sont sa jeunesse et sa non-standardisation.
Personnellement j’aime utiliser SIP pour faire communiquer deux asterisk…
le 04/05/2008 à 04:01