Connexion d’Asterisk au serveur SIP de Free

Date: 23/03/2007 | Catégories: Open-source,Reseau | Tags: ,,,,,,

Suite à l'article d'hier sur la configuration d'un serveur Asterisk SIP sous Fedora, voici un tutoriel permettant de le connecter au serveur SIP de l'opérateur Free (Freephonie), ou à toutes autres opérateur SIP.

Ce que nous voulons obtenir:
- les appels sortant (vers fixes, portables) depuis un client SIP (X-Lite dans notre exemple).
- les appels entrant sont automatiquement basculés vers le client SIP, puis vers le téléphone branché sur la Freebox (si le client SIP ne décroche pas) et enfin vers la messagerie (si le téléphone ne décroche pas).

Êtes-vous prêt ? Alors c'est partie...

Configuration de votre compte SIP Free

La première chose à faire est d'aller sur l'interface d'administration de votre compte Free afin d'activer votre compte SIP (dans le menu Gestion de mes services de téléphonie).

Cette opération a pour but de rediriger les appels en SIP.

Il faut redémarrer la Freebox pour que la configuration soit prise en compte.

Configuration du serveur Asterisk

Nous allons apporter quelques modifications à notre fichier de configuration SIP (/etc/asterisk/sip.conf).

[general]
context=default
srvlookup=no
externip=81.54.223.16
localnet=192.168.1.0/255.255.255.0
defaultexpirey=1800
dtmfmode=auto
qualify=yes
register = utilisateur:motdepasse@freephonie.net
[freephonie_appelsortant]
type=peer
allow=all
host=freephonie.net
fromuser=utilisateur
username=utilisateur
secret=motdepasse
dtmfmode=inband
qualify=yes
fromdomain=freephonie.net
[freephonie_appelentrant]
type=peer
context=depuisfreephonie
host=freephonie.net
qualify=yes
allow=all

[nicolargo]
type=friend
username=nicolargo
secret=motdepasse
context=maison
quality=yes
nat=no
canreinvite=no
auth=md5
host=dynamic
dtfmode=rfc2833
allow=ulaw
context=internal

Il faut remplacer 'utilisateur' et 'motdepasse' par ceux fournis par Free dans l'interface d'administration Free.
'exterip' doit être remplacée par votre adresse IP publique (aussi récupérable sur l'interface d'administration Free).
'localnet' doit être remplacé par l'adresse réseau et le masque de votre réseau local.

Ensuite, on édite le fichier de plan de numérotation (/etc/asterisk/extensions.conf):

[maison]
; Numéros "maison"
exten => 10,1,Dial(SIP/nicolargo) ; quand on compose le 10, le softphone "nicolargo" sonnera
; numéros externes
exten => _9.,1,Dial(SIP/freephonie-out/${EXTEN:1}) ; quand on compose un numero qui commence par 9, on utilise le lien "freephonie" et on passe le numero au peer en ôtant le premier digit.
[depuisfreephonie]
; Contexte pour les appels recus depuis Free
exten => s,1,Ringing
exten => s,2,Dial(SIP/nicolargo)
exten => s,3,Congestion

Il ne reste plus qu'à faire prendre en compte la nouvelle configuration par votre serveur Asterisk:

# asterisk -r
*CLI> restart gracefully

Et voila, vous pouvez tester 😉

Mise à jour du billet

Dans le Linux magazine n°90, un article très complet sur comment configurer son serveur Asterisk avec le service Freephonie de l'opérateur Free.

  • El Adadi youssef

    bonjour,

    est ce possible de rendre asterisk comme une paserelle, pour rediriger le trafic (3 millions de minutes par mois) vers des provider voip en utilisant le protrocol sip.

    Cordialement,
    Mr El Adadi Youssef

  • @youssef: Il est possible de configurer Asterisk comme proxy. C’est à dire que toutes les commnuciations seront reroutées vers un autre serveur (se trouvant par exemple chez un provider).

  • EL ADADI

    je te remercie pour ta réponse Nicolargo cé gentille
    tu sé comment faire rendre mon serveur comme un proxy
    ou si tu as une doc ou un lien qui peut m’aider
    la config hard a peu pré du serveur quel distribution mieux a utiliser .
    merci

  • @youssef: je te conseille de poser ta question sur le forum officiel. Disponible à l’adresse suivante.

  • Hey Nicolargo ! Teès intéressant ce billet 🙂 il est vaiment sympa le design du blog (dsl si je suis hors sujet), j’appprécie le blog ! 🙂 bone continuation

  • petous

    peut on installer Asterisk de la meme maniere sur une FC 8 ?

  • @petous: je n’ai jamais testé mais je pense que oui. Si tu fais la manip, merci de nous tenir informé.

  • djManu

    Et oui, 2 ans plus tard, il y en a encore qui s’interessent à cet excellent post mais ne comprennent pas tout 😉

    Je connais un peu Asterisk, mais je n’arrive pas à comprendre quelle est la partie qui va faire que le call entrant sera redirigé sur le telephone (hard) en cas de non réponse du softphone ?

  • @djManu: effectivement il y a une boulette dans la conf (je viens de la modifier)

    [depuisfreephonie]
    ; Contexte pour les appels recus depuis Free
    exten => s,1,Ringing
    exten => s,2,Dial(SIP/nicolargo)
    exten => s,3,Congestion

    A+

  • Jey

    Bonjour,

    Je suis actuellement entrain de monter une plateforme de test Asterisk sous debian eth 4.0.

    L’installation d’asterisk se déroule correctement et j’arrive a recevoir des appels vers mon numéro sip depuis le reseau RTC mais je n’arrive pas à émettre d’appel.

    Pour information mon compte sip est bien activé et les appels sortants et entrants ont été testés avec succes en utilisant le soft phone Xlite sans passer par asterisk.

    Voici mes fichiers de configuration :

    Pour info plicploc est mon identifiant chez ippi (enfin pas le vrai hein :p) et non pas le numero qu’ils m’ont attribués.
    _____________________________________________________________________________________
    SIP.CONF

    [general]

    bindport=5060 ; UDP Port to bind to (SIP standard port is 5060)
    bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all)
    disallow=all
    allow=ulaw
    allow=alaw
    allow=gsm
    allow=ilbc

    register =>plicploc:monmotdepasse@ippi.fr

    [ippi_outgoing] ; configuration des appels sortants par ippi
    type=peer
    host=ippi.fr
    user=plicploc
    secret=monmotdepasse
    fromuser=plicploc
    fromdomain=ippi.fr
    nat=yes
    canreinvite=no

    [ippi_incoming] ; configuration des appels entrants depuis ippi
    type=friend
    host=ippi.fr
    context=from_ippi
    nat=yes
    canreinvite=no

    [201]
    username=201
    type=friend ; user appel entrant,peer appel sortant,friend les deux
    qualify=yes ; test toutes les deux secondes qu’un client est joignable
    secret=12345 ; mot de passe pour autentification client
    nat=no ; le client est pas deriere un firwall qui nat
    host=dynamic ; le client s’enregistre lui meme
    canreinvite=no ; le client ne fait pas de rappel auto
    context=appel_entrants ; contexte du client

    [202]
    username=202
    type=friend ; user pour appel entrant, peer pour appel sortant, friend pour les deux
    qualify=yes ; test toutes les deux secondes qu’un client est joignable
    secret=12345 ; mot de passe pour autentification client
    nat=no ; le client n’est pas deriere un firwall qui nat
    host=dynamic ; le client s’enregistre lui meme
    canreinvite=no ; le client ne fait pas de rappel auto
    context=appel_entrants ; contexte du client
    ______________________________________________________________________________________
    EXENTENSIONS.CONF

    [from_ippi] ; les appels entrants de ippi font sonner le compte SIP 201
    exten => s,1,Dial(SIP/201)

    [home] ; tous les appels sortants du compte my_phone sont envoyés sur le réseau ippi
    exten => _X.,1,Dial(SIP/ippi_outgoing/${EXTEN})

    Dans l’attente d’un ptit coup de main …
    Bien cordialement
    jey

  • Jo-the-one

    Franchement, ton post me sera d’une grande utilité pour monter un petit projet… Franchement thanks for that.

  • plastikman

    Bonjour à tous,

    Tout d’abord merci pour le super tuto !!!!!
    Je suis un nouvel utilisateur du serveur asterisk. je viens de monter mon serveur et il fonctionne plutôt pas mal 😉
    J’ai un compte sip chez free et je l’utilise dans mon serveur asterisk. Mais j’ai voulu optimiser les fonctionnalités de mon serveur asterisk pour en faire un partage de mon compte sip avec plusieurs softphone. (j’ai installé un softphone sur chacun des pc des mes enfants pour qu’ils puissent passer des comm) Pour les appels entrant j’ai pas de problème. Tout les téléphone sonne en même temps et c’est le premier qui décroche qui a lal ligne. Cependant pour les appel sortant ca n’aboutit pas… Je peux seulement passer une comm à la fois et js 2 en même temps. Si qq un a une petite idée sur le sujet je suis preneur. Je donne en même temps ma conf.
    @+plasitkman

    sip.conf

    [general]
    context=default
    dtmfmode=auto
    qualify=yes
    srvlookup=no
    externip=xxx.xxx.xxx.xxxx
    localnet=192.168.69.11/255.255.255.0
    defaultexpirey=1800
    dtmfmode=auto
    qualify=yes
    register=09xxxxxxxx:09xxxxxxxx@freephonie.net

    [freephonie_appelsortant]
    type=friend
    allow=all
    host=freephonie.net
    fromuser=09xxxxxxxx
    username=09xxxxxxxx
    secret=09xxxxxxxx
    dtmfmode=inband
    qualify=yes
    fromdomain=freephonie.net

    [freephonie_appelsortant2]
    type=friend
    allow=all
    host=freephonie.net
    fromuser=09xxxxxxxx
    username=09xxxxxxxx
    secret=0952751261
    dtmfmode=inband
    qualify=yes
    fromdomain=freephonie.net

    [freephonie_appelentrant]
    type=peer
    context=depuisfreephonie
    host=freephonie.net
    qualify=yes
    allow=all

    [nicolargo]
    type=friend
    username=nicolargo
    secret=motdepasse
    quality=yes
    nat=yes
    canreinvite=no
    auth=md5
    host=dynamic
    dtfmode=rfc2833
    allow=ulaw
    context=phones

    [brice]
    type=friend
    username=brice
    secret=brice
    quality=yes
    nat=yes
    canreinvite=no
    auth=md5
    host=dynamic
    dtfmode=rfc2833
    allow=ulaw
    context=phones

    extensions.conf

    [globals]
    [general]
    autofallthrough=yes
    [default]
    [internal]

    ; Numéros “maison”
    exten => 10,1,Dial(SIP/nicolargo) ; quand on compose le 10, le softphone “nicolargo” sonnera
    ;exten => 11,1,Dial(SIP/brice) ; quand on compose le 11, le softphone “brice” sonnera
    ; numéros externes
    exten => _0[1-6].,1,Dial(SIP/freephonie_appelsortant/${EXTEN}) ; appel avec le compte free
    exten => _0[1-6].,2,Dial(SIP/freephonie_appelsortant2/${EXTEN}) ; appel avec le compte free
    [depuisfreephonie]
    ; Contexte pour les appels recus depuis Free
    exten => s,1,Ringing
    exten => s,2,Dial(SIP/nicolargo&SIP/brice)
    exten => s,3,Congestion

    [phones]
    include => internal
    include => repondeur
    include => exterieur
    include => horloge
    include => maison
    ;include => sortant

    ;[sortant]
    ;exten => _0[1-6].,2,Dial(SIP/freephonie_appelsortant2/${EXTEN}) ; appel avec le compte free
    ;exten => 11,1,Dial(SIP/brice) ; quand on compose le 11, le softphone “brice” sonnera
    ; numéros externes
    ;exten => _9.,1,Dial(SIP/freephonie_appelsortant2/${EXTEN:1})
    ; quand on compose un numero qui commence par 9, on utilise le lien “freephonie” et on passe le numero au peer en ôtant le premier digit.

    [repondeur]
    exten => 222,1,Answer()
    exten => 222,2,VoiceMailMain(${CALLERID(num)})
    exten => 222,3,Hangup()

    [horloge]
    exten => 777,1,Answer()
    exten => 777,2,SayUnixTime(,CET,qAdBYHM)
    exten => 777,3,Playback(vm-goodbye)
    exten => 777,4,Hangup()

    Ps: j’ai oublié de vous donnez les log de mon serveur hihihih 😉

    – Executing [01xxxxxxxx@phones:1] Dial(”SIP/brice-083beb20″, “SIP/freephonie_appelsortant/01xxxxxxxx”) in new stack
    — Called freephonie_appelsortant/01xxxxxxxx
    — SIP/freephonie_appelsortant-083c61a8 is ringing
    — SIP/freephonie_appelsortant-083c61a8 is making progress passing it to SIP/brice-083beb20
    — Executing [06xxxxxxxx@phones:1] Dial(”SIP/nicolargo-083d77d8″, “SIP/freephonie_appelsortant/06xxxxxxxx”) in new stack
    — Called freephonie_appelsortant/063xxxxxxxx
    [Mar 10 00:07:20] WARNING[5325]: chan_sip.c:12334 handle_response_invite: Received response: “Forbidden” from ‘”nicolargo” ;tag=as1de25d1c’
    — SIP/freephonie_appelsortant-083dc550 is circuit-busy
    == Everyone is busy/congested at this time (1:0/1/0)
    — Executing [06xxxxxxxx@phones:2] Dial(”SIP/nicolargo-083d77d8″, “SIP/freephonie_appelsortant2/06xxxxxxxx”) in new stack
    — Called freephonie_appelsortant2/06xxxxxxxx
    Really destroying SIP dialog ‘14f921217a8xxxxxxx81de277df2d350@freephonie.net’ Method: INVITE

  • le saint charmeur

    salut le grand Nicolargo au faites je travail sur un projet de fin d’étude sur le deploiement de la VoIP dans un réseau d’entreprise où je dois implémenté et configuré un serveur asterisk j’aimerais savoir car j’ai vu plusieur tuto mais sur pas avec linux red hat .Est ce que ces différents tuto peuvent etre appliqué sous red hat,?Merçi d

  • @Saint: pas de problème il faudra au pire un peu adapter ces tutos…

  • le saint charmeur

    donc c’est possible d’adaptater ces différents tuto avec RED Hat n’es ce pas?

  • amoun

    salut Nicolargo ,
    je travail sur un projet de VOIP ou j’utilise Asterisk installer sous la plate forme redhat et les deux softphone x-lite 2.0 installer chaqu’un sous windows. Touts mache trés bien chez moi , les deux softphone peuvent ce connecté au serveur asterisk et faire des appels entre eux. mais j’ai un petit problème, c’est lors d’un appel je peut enttendre la sonnerie du correspondant mais quand je decroche je ne peut pas entendre la voix de l’autre personne au bout du softphone.

    je veux bien que vous m’aidiez sur ceci
    merci d’avance.

  • Salut,

    Très bon article, je pense m’en inspirer fortement pour faire ma config Asterisk.
    Par contre, avant de me lancer, j’aimerai quelques precisions. Le but recherché en installant un IPBX chez moi est plus ou moins de filtrer les appels. En clair, je souhaiterais que de base tous les appels entrants sur mon numero free soient redirigés vers asterisk et que celui-ci fournisse une annonce du type « si vous avez quelque chose à vendre, merci de laisser un message et si vous voulez nous parler, taper le code secret… ». Enfin bon quelque chose dans l’esprit.

    Donc ma question, c’est plutôt au niveau de l’archi. Est-ce que je dois passer ma ligne free en mode SIP, ou bien laisser tel quel, et mettre une carte dans le serveur avec un port FXO branché sur la freebox, et un port FXS sur lequel vient se mettre mon tel analogique. C’est un peu embrouillé dans ma petite tête dans la mesure ou je visualise pas trop l’archi du reseau free. A savoir que je suis en degroupage total et que j’ai reirigé mon ancien num FT sur le reseau free.

    Voilà, merci si il y a une reponse.

  • @Lolovroom: je pense que le plus simple est de tout faire en SIP. Les appels seront reroutés directement sur ton Asterisk, tu pourras alors y gérer ton message de filtrage. Ensuite, les appels « amis » seront redirigé vers la freebox.

    Je pense que tu dois pouvoir trouver des configurations toutes faites sur Internet.

    PS: n’oublie pas le forum pour te faire aider: http://forum.nicolargo.com

  • Merci pour la reponse.

    Quand tu dis que je peux rediriger les appels vers la freebox, on est bien d’accord que c’est pour faire sonner mon tel analogique (DECT) ? J’ai aussi un SIP phone, mais pas sans fil, donc pas super pratique.

    Question subsidiaire : est ce que tout ça peut remettre en cause la « gratuité » des appels à l’etranger ? Je vois pas pourquoi d’un point de vue technique, mais legalement ??

  • @lolovroom: c’est effectivement le téléphone branché sur la freebox qui doit sonner.

    Pour ta deuxième question, c’est une pratique autorisée, donc pas de problème.

  • de la roche

    slt je souhaite avoir un lien de site ou le processus d’installation de vmware et un systeme linux.

  • Silue Noel Anderson

    S’il vous plait il y a t-il quelqu’un pour m’expliquer les conceptes de base de voix sur IP. J’ai participé a un semnaire en vue de me former mais arrivé à la maison je n’arrive pas à l’appliquer. Je suis en 2 eme année BTS IG j’attend votre reponse a l’adresse suivant: koodney@yahoo.fr

  • Bobby

    Salut Nicolargo

    je suis ingé réseau dans une PME et je suis intéressé par cette solution dans mon entreprise (avec freephonie), j’ai juste une question pour lesquelles je ne trouve pas de réponses concrète :
    Est-il toujours possible de recevoir/emettre des appels lorsque qu’un téléphone SIP utilise la ligne ? Cela dépend-t-il du fournisseur SIP, de la config d’asterisk ? Merci

    • Salut, la réponse à ta question est non. Quand un utilisateur occupe la ligne Freephonie elle ne peut pas être utilisée en même temps par quelqu’un d’autre.

      • Bobby

        Est-ce que c’est possible avec un autre fournisseur SIP ? Ou cela vient du protocole lui-même ?

  • Je pense (mais c’est à confirmer) que la limitation vient de Freephonie.

  • Bobby

    Ok merci pour les infos, je vais étudier tout ça !

  • actarusse

    Bonjour,

    Je dispose d’un téléphone Cisco 7960 connecté via Freephonie (free)en SIP; cela fonctionne plutôt pas mal même si l’on dispose que d’une seule ligne (cf. Iphone SIP par exemple) Je cherche à faire un « peu de CTI » afin de pouvoir émettre des appels via Outlook 2007 (appeler le contact et que cela numéro sur le tél). J’image qu’il faut un PABX avec un protocole de type TAPI? mais je patauge un peu. Est-ce qu’il y a une solution simple sans PABX (émulateur quelconque pour un téléphone?); Est-ce que d’après vous, si je creuse la piste Asterisk, cette fonctionnalité pourrait être disponible? Je l’ai vu fonctionner en entreprise (l’appel des contact via outlook) via Cisco TSP avec un Call Manager 4.1. mais je n’en ai pas à titre privé 🙂
    Si vous ne savez pas, merci d’avoir pris le temps de lire message. Je suis preneur de toute piste

    Merci

  • Borhen

    Bonjour,
    je suis en train de configurer un serveur Asterisk j’ai crée deux client sip user1 et user2. le serveur est installer sur une machine virtuelle fedora 10 pour le moment voici mes fichiers sip.conf et extension.conf

    sip.conf:

    [general]
    context=bac
    bindport=5060
    bindaddr=0.0.0.0
    domain=192.168.1.7
    language=fr
    disallow=all
    allow=ulaw
    dtmfmode=rfc2833

    [100]
    username=user1
    secret=aaa
    callerid= »user »
    type=friend
    host=dynamic
    context=bac
    defaultip=192.168.1.7
    language=fr
    disallow all
    allow=ulaw
    mailbox=100@default
    dtmfmode=rfc2833

    [101]
    username=user2
    secret=isi
    callerid= »user2″
    type=friend
    host=dynamic
    context=bac
    defaultip=192.168.1.7
    language=fr
    disallow all
    allow=ulaw
    mailbox=101@default
    dtmfmode=rfc2833

    extension.conf:

    [cni]
    include = app 1

    [app 1]
    exten => 100,1,Dial(SIP/user1)
    exten => 101,1,Dial(SIP/user2)

    j’utilise X-lite (un sur la machine virtuel fedora et l’autre ma machine Win XP )

    lorsque je fais un appel de X-lite dans la machine Win XP vers celui de la machine fedora ca marche, mais dans le sens inverse ca marche pas.

    alors SVP si vous pouvez m’aider car connaissances sont limité dans ce domaine.

  • tanjoniavo

    salut nico!
    j’ai quelque question si jamais tu peu m’aider:
    -lorsque je fait
    ubuntu*CLI> sip show peers
    Name/username Host Dyn Nat ACL Port Status
    1212/1212 (Unspecified) D N 5060 Unmonitored
    1213/1213 (Unspecified) D N 5060 Unmonitored
    andry/andry (Unspecified) D N 5060 Unmonitored
    passassion/passassion (Unspecified) D N 5060 Unmonitored
    4 sip peers [Monitored: 0 online, 0 offline Unmonitored: 4 online, 0 offline]
    ubuntu*CLI>

    juste en bas on me dit que 4 client(si je ne me trompe) est connecté alors qu’il y a personne connecté
    -lorsque je déconnecte le serveur Xlite ne me retourne pas d’erreur ce qui n’est pas normal, et même si j’entre des mauvaises utilisateur, Xlite m’affiche toujours normal et impossible de faire des appels

  • Antonio NUZZO

    Bonjour, il y a un truc que je ne comprends pas dans le tuto: dans sip.conf on a une section [freephonie_appelsortant].
    Dans extensions.conf on appelle freephonie-out. ne faut-il pas mettre la même chose dans les deux? Quand j’essaye un appel sortant avec cette config j’ai un message « Address not found » Quelqu’un a une idée? Merci d’avance

  • bonjour jvoudrais savoir comment faire pour configurer asterisk avec un telephone fixe sip aastra 6755i

    • Bonjour
      j’ai mis en place un serveur asterisk (sip)
      je voudrais à présent faire de mon serveur une passerelle pour faire des appels sur le réseau GSM
      par le biais d’un provider VOIP.
      Merci d’avance de vos réponses.

  • Ben Chagra Radhwane

    nice