A propos | Laboratoire | Voisinage | Meilleurs articles | Nous aider

Panoramisk / Le druide de la VoIP 

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é: 37%
marqué , , , et
AddThis Social Bookmark Button
UselessNothing newInformativeLearned a lotAmazingly helpful (6 votes, average: 4.17 out of 5)
Loading ... Loading ...

Voir aussi

Et pourquoi pas

16 Réponses à “Faisceau SIP avec Asterisk”

  1. Andrew à dit:

    Très intéressant, mais manque cruellement de pédagogie à tel point qu’on ne sait plus de quoi il s’agit vraiment.
    Merci quand même !

  2. Jacques-Thierry à dit:

    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.

  3. Alexandre Chauvin-Hameau à dit:

    Je 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.
    Pourriez-vous me détailler ce que vous auriez souhaité voir dans cet article et que vous n’avez pas trouvé ?

  4. Moussa NDIAYE à dit:

    Bonjour Alexandre.
    Je 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

  5. Julien à dit:

    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 :)

  6. Moussa NDIAYE à dit:

    SIP 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…

  7. Dubray Eric à dit:

    Bonjour,

    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

  8. Jean-Paul KOFFI à dit:

    Bonjour,
    votre tuto vient de m’aider à réaliser une liaison entre mes 2 serveurs asterisk. J’en avait vraiment besoin.

    Merci beaucoup

  9. natif à dit:

    Bonjour,
    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

  10. Alexandre Chauvin-Hameau à dit:

    Le 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.
    La sélection du bon type peer dépend de l’adresse IP, du mode de sécurisation et du nom de la peer.

  11. marouane à dit:

    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
    host=asterisk-paris et context=from-asterisk-paris
    une autre question SVP:
    comment je peux savoir le nom de mon asterisk?

  12. christian à dit:

    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.

  13. christian à dit:

    Bonsoir les Gars!

    Je suis en attente de votre coup de main.

    Merci d’avance!!!!

  14. Christian à dit:

    Bonjour,

    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!

  15. Alexandre Chauvin-Hameau à dit:

    @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.

  16. beltaief badr à dit:

    c’est très intéressant très bien et merci pour l’aide

Laisser un commentaire

© 2010 Panoramisk | Creative Commons License wordpress logo