Recherche


imprimer pdf

Configuration d'un serveur Asterisk en utilisant un forfait OVH


Vous trouverez dans ce guide comment faire évoluer la configuration de votre serveur asterisk installé précédemment par l'utilisation Utilisation d'un compte sip pris chez OVH.

Ce guide s'adresse principalement a des utilisateurs ayant des compétences techniques avancées.


Informations pratiques

=> Pour recharger la configuration lorsque le serveur Asterisk est lancé ( après qu'elle ait été modifiée par exemple ) :
[root@nsXXXXX ~] # asterisk -r
Asterisk 1.4.21.1, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.4.21.1 currently running on comsd (pid = 12586)
nsXXXXX*CLI> module reload
[Jul 7 10:42:59] NOTICE[12616]: cdr.c:1373 do_reload: CDR simple logging enabled.
[Jul 7 10:42:59] NOTICE[12616]: indications.c:505 ast_unregister_indication_country: Removed default indication country 'us'
[Jul 7 10:42:59] NOTICE[12616]: pbx_ael.c:4131 pbx_load_module: Starting AEL load process.
[Jul 7 10:42:59] NOTICE[12616]: pbx_ael.c:4138 pbx_load_module: AEL load process: calculated config file name '/etc/asterisk/extensions.ael'.
[Jul 7 10:42:59] NOTICE[12616]: pbx_ael.c:4146 pbx_load_module: AEL load process: parsed config file name '/etc/asterisk/extensions.ael'.
[Jul 7 10:42:59] NOTICE[12616]: pbx_ael.c:4149 pbx_load_module: AEL load process: checked config file name '/etc/asterisk/extensions.ael'.
[Jul 7 10:42:59] NOTICE[12616]: pbx_ael.c:4151 pbx_load_module: AEL load process: compiled config file name '/etc/asterisk/extensions.ael'.
[Jul 7 10:42:59] NOTICE[12616]: pbx_ael.c:4154 pbx_load_module: AEL load process: merged config file name '/etc/asterisk/extensions.ael'.
[Jul 7 10:42:59] NOTICE[12616]: pbx_ael.c:4157 pbx_load_module: AEL load process: verified config file name '/etc/asterisk/extensions.ael'.
[Jul 7 10:42:59] NOTICE[12616]: app_playback.c:457 reload: Reloading say.conf
nsXXXXX*CLI> sip reload
nsXXXXX*CLI> exit
[root@nsXXXXX ~] #


=> Crypter un mot de passe pour ne pas qu'il soit lisible en clair :
Le cryptage doit toujours être fait de la forme "utilisateur:asterisk:motdepasse" pour être accepté par asterisk. Si dans cette commande "asterisk" est remplacé par un autre terme, d'autres modifications seront nécessaires dans le sip.conf pour que la configuration soit fonctionelle.
[root@nsXXXXX ~] # echo -n "210:asterisk:userpasswd" | md5sum
0a95171e1f44c414fe7b60c3aa26fdab -
[root@nsXXXXX ~] # echo -n "220:asterisk:userpasswd" | md5sum
17de8bba3cee360310ec1a11c47cc9eb -
[root@nsXXXXX ~] #


=> Ne plus avoir ce type de lignes dans le debug :

[Jul 9 18:13:15] WARNING[6693]: chan_sip.c:6797 determine_firstline_parts: Bad request protocol Packet
[Jul 9 18:13:16] WARNING[6693]: chan_sip.c:6797 determine_firstline_parts: Bad request protocol Packet
[Jul 9 18:13:16] WARNING[6693]: chan_sip.c:6797 determine_firstline_parts: Bad request protocol Packet
[Jul 9 18:13:18] WARNING[6693]: chan_sip.c:6797 determine_firstline_parts: Bad request protocol Packet
[Jul 9 18:13:22] WARNING[6693]: chan_sip.c:6797 determine_firstline_parts: Bad request protocol Packet

Il sera nécessaire de bloquer ces paquets dans votre firewall comme avec IPtables :
[root@nsXXXXX ~] # iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "Cirpack KeepAlive Packet" --algo bm --to 65535 --source sip.ovh.net -j DROP
[root@nsXXXXX ~] #

COnfiguration d'Asterisk

Pour pouvoir utiliser les services d'OVH il est nécessaire de rentrer les bonnes informations pour remplacer les valeurs en rouge :
[root@nsXXXXX ~] # cat /etc/asterisk/sip.conf

[general]
context=forfait-ovh
bindport=5060
bindaddr=0.0.0.0
srvlookup=yes
register => 003397994XXXX:password@sip.ovh.net

[210]
type=friend
auth=md5
username=210
md5secret=0a95171e1f44c414fe7b60c3aa26fdab
callerid="210" <003397994XXXX>
host=dynamic
context=appel-sortant
language=fr
insecure=port
nat=yes
canreinvite=no
dtmfmode=auto
video=no
restrictcid=no
amaflags=default
mailbox=210@mondomaine.com

[220]
type=friend
auth=md5
username=220
md5secret=17de8bba3cee360310ec1a11c47cc9eb
callerid="220" <003397994XXXX>
host=dynamic
context=appel-sortant
language=fr
insecure=port
nat=yes
canreinvite=no
dtmfmode=auto
video=no
restrictcid=no
amaflags=default
mailbox=220@mondomaine.com

[forfait-ovh]
type=peer
host=sip.ovh.net
context=ovh-sip
language=fr
insecure=very
username=003397994XXXX
secret=password
nat=yes
canreinvite=no
dtmfmode=auto
video=no
restrictcid=no
amaflags=default
Dans le fichier extensions.conf, il est nécessaire de changer le numéro répondant aux appels entrants dans le plan par "s". La section gérant les appels sortants sera elle aussi modifiée pour passer par le forfait ovh paramétré précédemment dans le fichier sip.conf
[root@nsXXXXX ~] # cat /etc/asterisk/extensions.conf

[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no

[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=Zap/g2
TRUNKMSD=1

[ovh-sip] ; nom du plan
exten => s,1,Ringing(1) ; Attendre une seconde en faisant retentir la sonnerie du telephone de l'apellant
exten => s,2,Answer ; Repond a l'appel
exten => s,3,Dial(SIP/220,30,tm) ; L'appel est transfere sur le poste 220. Sans reponse apres 30 secondes il passe a l'etape suivante
exten => s,4,Hangup(16) ; La communication est termine

[appel-sortant]
; Cette partie gere les appels sortants
exten => _X.,1,Dial(SIP/${EXTEN}@forfait-ovh) ; Sur cette ligne allons appeler en passant par la section [forfait-ovh] du fichier sip.conf

Détail d'un appel

[root@nsXXXXX ~] # asterisk -cvvvvvvvvvvvvvv
[...]
  • CLI>
  • CLI>
  • CLI> — Executing [097994XXXX@ovh-sip:1] Ringing("SIP/anonymous.invalid-081fcc48", "1") in new stack
— Executing [097994XXXX@ovh-sip:2] Answer("SIP/anonymous.invalid-081fcc48", "") in new stack
— Executing [097994XXXX@ovh-sip:3] Dial("SIP/anonymous.invalid-081fcc48", "SIP/220|30|tm") in new stack
— Called 220
— Started music on hold, class 'default', on SIP/anonymous.invalid-081fcc48
— SIP/220-08202ab8 is ringing
— SIP/220-08202ab8 answered SIP/anonymous.invalid-081fcc48
— Stopped music on hold on SIP/anonymous.invalid-081fcc48
== Spawn extension (ovh-sip, 097994XXXX, 3) exited non-zero on 'SIP/anonymous.invalid-081fcc48'
  • CLI>
  • CLI>
  • CLI> — Executing [06XXXXXXXX@appel-sortant:1] Dial("SIP/220-081ff768", "SIP/06XXXXXXXX@forfait-decouverte") in new stack
— Called 06XXXXXXXX@forfait-decouverte
— SIP/forfait-decouverte-08204fb0 is ringing
— SIP/forfait-decouverte-08204fb0 is making progress passing it to SIP/220-081ff768
— SIP/forfait-decouverte-08204fb0 is making progress passing it to SIP/220-081ff768
— SIP/forfait-decouverte-08204fb0 answered SIP/220-081ff768
— Packet2Packet? bridging SIP/220-081ff768 and SIP/forfait-decouverte-08204fb0
== Spawn extension (appel-sortant, 06XXXXXXXX, 1) exited non-zero on 'SIP/220-081ff768'
  • CLI>
  • CLI>
La première section présente un appel entrant sur 097994XXXX renvoyé sur le poste 220
Le seconde est un appel sortant depuis le poste 220 émis sur un numéro 06XXXXXXXX