Faisceau SIP avec Asterisk 
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.
|
Posté par: Alexandre Chauvin-Hameau, le 19/06/2007 Trackback | Popularité: 32% marqué 1.4, asterisk, faisceau, SIP et sip.conf |
|





(6 votes, average: 4.17 out of 5)

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:01Bonjour,
Merci Alexandre pour cet article très bien structuré.
J’arrive a faire fonctionner le PABX Asterik avec un PAP2 d’un coté et un soft phone de l’autre sur une Alice Box via un dyndns (IP dynamique oblige)
Je souhaite utiliser le protocole SIP pour interconnecter deux Asterisk.
Par contre est ce que je dois déclarer mon nom de domaine n°2 dans le fichier sip.conf de mon serveur asterisk N°1 de la manière suivante (et vice versa)?
[trunk-lyon-paris]
type=peer
host=mon_nom_de_domaine2.dyndns.org
context=from-asterisk-paris
[trunk-paris-lyon]
type=peer
host=mon_nom_de_domaine1.dyndns.org
context=from-asterisk-lyon
info config:mon_nom_de_domaine2.dyndns.org (est rentré dans mon alice BOX N°2 et fait pointer en NAT le port 5060 en UDP sur l’iP LAN du serveur Asterik N°2)
info config:mon_nom_de_domaine1.dyndns.org (est rentré dans mon alice BOX N°1 et fait pointer en NAT le port 5060 en UDP sur l’iP LAN du serveur Asterik N°1)
Merci de me donner un coup de main ça serait vraiment sympa
le 02/10/2008 à 00:56Bonjour,
votre tuto vient de m’aider à réaliser une liaison entre mes 2 serveurs asterisk. J’en avait vraiment besoin.
Merci beaucoup
le 18/03/2009 à 14:03Bonjour,
un truc qui me perturbe.
Normalement, si j’ai bien compris, le type peer sert pour les connexion sortantes et le type user pour les connexions entrantes. Mais à priori, peer sert aussi à recevoir les appels entrants pour l’envoyer dans le bon context.
Pouvez vous m’éclairer concernant les trois mode peer, user, et friend (normalement utilisé pour les appels entrant/sortant type téléphone).
Merci
le 19/05/2009 à 16:25Le type user est principalement utilisé lorsqu’il y a en face un client SIP. Dans une relation trunk, aucune des deux extrémités n’est vraiment cliente de l’autre, on utilise donc le type peer dans Asterisk.
le 19/05/2009 à 16:39La sélection du bon type peer dépend de l’adresse IP, du mode de sécurisation et du nom de la peer.
merci pour vos infos, je suis en train de faire un trunk entre deux trixbox, je savoir si je peux utiliser:
host=192.168.0.22 et context=from-192.168.0.22
au lieu de
le 20/05/2009 à 12:15host=asterisk-paris et context=from-asterisk-paris
une autre question SVP:
comment je peux savoir le nom de mon asterisk?
Bonjour!
j’ai avec interet votre guide posté plus haut mais lors de la pratique je n’ai pas eu de resultat possitif.
Je viens par ce mail sooliciter votre coup de main pour mener à bien ce TP.
Voici mes config:
serveur1:
sip.conf
[trunk-yde-baf]
type=peer
host=41.X.X.X
context=from-41.X.X.X
extensions.conf
exten => _98.,1,Set(CALLERID(num)=91${CALLERID(num)})
exten => _98.,2,Dial(SIP/trunk-yde-baf/${EXTEN:2},20,rt)
message d’erreur:
trunk-yde-baf 41.X.X.X 5060 Unmonitored
71 sip peers [Monitored: 0 online, 69 offline Unmonitored: 2 online, 0 offline]
serveur2:
sip.conf
[trunk-baf-yde]
type=peer
host=195.X.X.X
context=from-195.X.X.X
extensions.conf
exten => _91.,1,Set(CALLERID(num)=98${CALLERID(num)})
exten => _91.,2,Dial(SIP/trunk-baf-yde/${EXTEN:2},20,rt)
message d’erreur:
trunk-baf-yde 195.X.X.X 5060 Unmonitored
259 sip peers [Monitored: 0 online, 257 offline Unmonitored: 2 online, 0 offline]
NB: Les firewalls de ces serveurs sont stoppés.
le 07/11/2009 à 09:24Bonsoir les Gars!
Je suis en attente de votre coup de main.
Merci d’avance!!!!
le 07/11/2009 à 19:34Bonjour,
Pouvez-vous me donner les détails de la configuration lorsque vous dite “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é.”
Merci!
le 06/02/2010 à 02:45@Christian : c’est le paramètre host=asterisk-paris du contexte dans sip.conf qui va permettre l’aiguillage basé sur l’adresse IP source.
Alex.
le 06/02/2010 à 10:56c’est très intéressant très bien et merci pour l’aide
le 14/04/2010 à 10:38