mardi 5 juillet 2011

Un PABX Voip Asterisk sur un Nas Synology

Comment installé un serveur Voip de type Asterisk "Open Source" sur un nas Synology avec une ligne SIP herbèger chez le fournisseur "Free".
Mon exemple se base avec un Synology DS211J sous DSM3.0

1°) Free
Pour commencer, nous allons dans un premier temps activer le service "SIP" du fournisseur Free.
-Connecter vous a votre interface de gestion "Freebox"
-Allez dans <Téléphone> puis <Gestion de mon compte SIP>
-Selectionner <Rediriger les appels entrants vers le compte SIP> Cocher <Service activé> Rentrer un mot de passe de minimum 10 caractères. <ENREGISTRER>


Si vous le souhaitez, vous pouvez tester votre ligne SIP avec un "Softphone".
Je vous suggère X-LITE
Dans Softphone / Account Settings remplissez comme ceci :
User ID : votre N° de téléphone FREE (09 xx xx xx xx)
Domain : Freephonie.net
Password : le mot de passe que vous avez rentré dans l'interface d'admin FREE
Display name : Le nom que vous voulez.



2°) Activer les fonctions SSH et Telnet du synology
  • Dans Panneau de configuration / Terminal, cocher les cases :
    Activer le service Telnet
    &
    Activer le service SSH

  • N'oublier pas d'enregistrer un mot de passe dans Panneau de configuration / Utilisateur / Admin / Modifier

Maintenant que le service est actif, vous pouvez desormais vous connecter en SSH.
Si vous êtes sur Linux, vous n'avez qu'a ouvrir une fenetre "Terminal" et lancer une commande SSH.
Si vous êtes sur windows, vous devrez télécharger le logiciel "Putty" ici .
Dans "Host name" rentré l'ip adresse de votre Synology, selectionner "SSH" et cliquer sur "Open" pour ouvrir ce qu'on appel : Une session de terminal.

3°)Installation Bootstrap sur le Synology

Les synology sont basé sur des systèmes BusyBox.
Définition Wikipedia : BusyBox est un logiciel qui implémente un grand nombre des commandes standards sous Unix, à l’instar des Gnu Core Utilities . BusyBox est conçu comme un uniqueFichié executable  ce qui le rend très adapté aux distribution linux utilisées sur les système embarqués.
Le principe du Boostsrap permet d'installer des applications, autre que ceux d'origine, sur le Nas.
Ca correspond comme du jailbreak sur iphone en toute légalité.
Grace au boostrap, vous serez en mesure d'installer tout type d'application IPKG.
Pour vous donner un apercu, vous trouverez a cette adresse : http://ipkg.nslu2-linux.org/sources/ la liste de toutes les applications en IPKG, que l'on peut trouver pour le syno.

Vous trouverez ici, une liste des commandes abrégés Unix
  • Identifiez le CPU selon le modèl de votre synology 
Pour mon DS211J et les modèls : DS109, DS209, DS409, DS409slim, RS409, DS410J, DS210J, DS110J et DS411J, le type de CPU est un 'ARM cs08q1armel' Pour les autres modèls, vous trouverez le type de CPU ici
  • Connectez vous en SSH (utilisateur root) à votre NAS
  • Téléchargez le bootstrap (script d’installation d’ipkg) qui correspond à votre CPU : ici.
    Par exemple pour DS211J avec comme CPU un ARM cs08qlarmel la commande à taper en SSH est : wget ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh
  • Exécutez le script que vous venez de télécharger. Exemple, pour les CPU de type ARM :
    sh syno-mvkw-bootstrap_1.2-7_arm.xsh 
  • Liste des commandes bootstrap utile :
    ipkg update = Mise à jour de la base de donnée d'IPKG.
    ipkg upgrade = Mise à jour de l'ensemble des paquets IPKG.
    ipkg list = Liste des paquets disponibles.
    ipkg list_installed = Liste simple des paquets installés
    ipkg status = Liste detaillée des paquets installés
    ipkg install <paquet> = Pour installer un paquet
    ipgk remove <paquet> = Pour supprimer un paquet
    ipkg ? = Pour connaître toutes les options

    Pour plus d'informations, vous pouvez installer le manuel d'aide en ligne : ipkg install man et lancer la commande : man lynx
    Pour quitter le programme "man", appuyer sur la touche "q".
Vous êtes désormais prêt à installer le célébre PABX open source Asterisk sur votre synology.

4°) Telechargement et installation d'Asterisk sur le Nas Synology.

Installer le package "asterisk18" (version 1.8)
ipkg install asterisk18

Si vous souhaitez bénéficier d'une interface graphique, installer alors : "asterisk-gui"
ipkg install asterisk-gui

Les principaux fichier de configuration d'asterisk se trouvent dans /opt/etc/asterisk

Avant de toucher aux fichiers de config, prenez le temps d'effectuer une sauvegarde pour revenir à la configuration par défaut en cas de problème :
cd /opt/etc
cp -r asterisk ./asterisk-orig
En cas de crash du système, supprimer le dossier asterisk :
cd /opt/etc
rm -r /opt/etc/asterisk
Et recopier la configuration d'origine :
cd -r asterisk-orig ./asterisk

Les Principaux fichiers de configurations sont :
asterisk.conf
sip.conf
extensions.conf
voicemail.conf

Scenario : Emission et Reception d'appel sur X-lite avec sa ligne freebox.
Bien s'assurer que les appels entrant sont bien redirigé sur le compte SIP (Gestion freebox)
Connecter vous sur votre syno avec Putty et lancer  asterisk:
asterisk -cvvv
Dans opt/etc/asterisk/
Editer le fichier "sip.conf" Afin de partir sur une base saine, il est conseiller de supprimer toutes les lignes.
cd /opt/etc/asterisk
vi sip.conf

SIP.conf :

[general] ; Le contexte "general" est un contexte  spécial défini en début de plan ; il permet de definir des informations qui seront valables dans l'ensemble du plan.
context=default ; contexte par défault des clients SIP (en lien avec extensions.conf)
srvlookup=yes ; permet de faire des appels basés sur des noms DNS
port=5060 ; port SIP (utilisé par défault par asterisk)
disallow=all ; désactivation de tous les codecs
allow=gsm ; activation du codec GSM
allow=alaw ; activation du codec G711 alaw
allow=ulaw ; activation du codec G711 ulaw
externip=88.166.XXX.XX ; Mettre l'adresse IP du routeur Freebox
localnet=192.168.0.3/255.255.255.0 ; Mettre l'adresse IP du nas synology et le masque de sous-reseau
register=095485XXXX:095485XXXX@freephonie.net ; "N° free" : "Mot de passefree" @ freephonie.net
defaultexpirey=1800 ; le delais d'expiration des registry d'asterisk étant fixé a 120 par default, les registry seront donc rejetés par les serveur de Free, c'est pourquoi il est conseillé de le passer à 1800

[freephonie] ; Contexte d'appel sortant. Depuis la version 1.8 d'asterisk le contexte d'appel entrant freephonie n'est plus utile et est integré directement dans celui des appel sortant.
type=peer ; "user" pour appel entrant, "peer" pour appel sortant, "friend" pour les deux types d'appel.
host=freephonie.net
fromuser=095485XXXX ; N° free
username=095485XXXX ; N° free
secret=095485XXXX ; mot de passe free
fromdomain=freephonie.net
insecure=port,invite ; "port" permet de ne pas prendre en compte le port & "invite" permet d'accepter des invite sans register
context=fromfree ; pour la liaison avec le fichier "extensions.conf"

[poste10] ; nom de l'extension
type=friend
username=poste10
secret=poste10
context=test ; pour la liaison avec le fichier "extensions.conf"
directmedia=no ; le client ne fait pas de SIP-reinvite et le flux RTP passe par asterisk
nat=no ; le client n'est pas derrière un firewall qui natte
host=dynamic ; le client s'enregistre lui-même

Extensions.conf :

Chaque contexte contient une ou plusieurs extensions ou instructions.
La syntaxe d'une extension est la suivante :

exten => numéro de l'appel , numéro de priorité , application ( )
-numéro de l'appel : c'est l'extension
-numéro de priorité : une extension peut inclure plusieurs étapes donc il faut donner des priorités
-application ( ) : c'est la fonction qui est déclenchée lorsque l'extension est appelée.

Exemple :
exten => 10,1,Dial(SIP/poste10)

-Le numéro de l'appel est 10, la priorité est 1 (il n'y a pas d'autre étapes) et la fonction qui déclence l'action sur cet appel est Dial(SIP/poste10).
-Autrement dit, si un terminal interne compose le numéro 10, et bien c'est le poste SIP 10 qui sonnera.


[test] ; liaison avec sip.conf
exten => 10,1,Answer() ; la fonction Answer répond à un canal qui sonne. on l'utilise très souvent comme première application pour une extension.
exten => 10,2,Dial(SIP/poste10) ; Dial est une application fondamentale qui fait sonner l'extension passée en paramètre
exten => 10,3,Hangup() ; Hangup permet de raccrocher le canal en cours. Cela permet de libérer un canal proprement

exten => _9.,1,Dial(SIP/freephonie/${EXTEN:1})
-${EXTEN} est une variable interne à asterisk qui contient ce qui vient d'être tapé.
-${EXTEN} : X permet d'enlever X chiffres en partant de la gauche.
Quand on compose un numéro qui commence par 9, on utilise le lien "freephonie" et on passe le numero au peer en ôtant le premier digit.
[fromfree] ; Liaison avec sip.conf
exten => s,1,Answer()
exten => s,2,Dial(SIP/poste10)
exten => s,3,Hangup()

Il est important de noter que :
L'extension start "s" est utilisée quand un appel inconnu arrive dans un contexte, c'est le cas d'un appel entrant en provenance de l'exterieur.
-Les espaces sont à proscrire dans le nommage des contextes.
-Le nom d'un contexte peut contenir des lettres miniscules ou majuscules, des chiffres, le tiret et le souligné.
-Lors de l'installation de serveur Asterisk, un fichier extensions.conf est automatiquement crée mais il vaut mieux repartir d'un fichier vierge afin de bien comprendre le plan.


Il ne vous reste plus qu'a revenir sur le CLI
rasterisk
ou
asterisk -r
puis de faire un rechargement
reload

Utilisation des applications "Playback()" & "Background()"

Playback()

Joue un fichier sonore avant la mise en relation.
A mettre en place sur le poste qui receptionne l'appel.

Pour effectuer le test, j'ai rajouter un nouveau poste que l'on nommera "poste11" dans le fichier de config : "sip.conf".

[poste11]
type=friend
username=poste11
secret=poste11
context=test
directmedia=no
nat=no
host=dynamic

Ensuite il faut également le déclarer dans le fichier "extensions.conf"

[test]
exten => 11,1,Answer()
exten => 11,2,Playback(fichier_son) ; Habituellement le fichier son est situé dans /var/lib/asterisk/sounds, dans notre cas, installer sur un syno, le repertoire est : /opt/var/lib/asterisk/sounds
exten => 11,3,Dial(SIP/poste11)
exten => 11,4,Hangup()

Quand le poste10 essaiera d'appeler le poste11:
1°) le poste 11 decrochera (Answer)
2°) il jouera le fichier_son (Playback)
3°) la communication entre les 2 postes sera ouverte (Dial)
4°) l'appel sera proprement terminer (Hangup)

Le message audio pourrais etre comme exemple : "Vous etes sur le point de joindre le poste 11"

Background()

Joue un fichier sonore avant la mise en relation.
A mettre en place sur le poste qui emet l'appel.

je crée poste12 pour effectuer ce test

Sip.conf

[poste12]
type=friend
username=poste12
secret=poste12
context=test
directmedia=no
nat=no
host=dynamic


Extensions.conf :

exten => 12,1,Answer()
exten => 12,2,Backgroung(fichier_son) ; meme repertoire que pour "Playback"
exten => 12,3,Dial(SIP/poste12)
exten => 12,4,Hangup()

Dans cette exemple, le fichier son sera joué avant de emettre un appel avec le poste 12

Le message audio pourrais etre comme exemple : Vous êtes en train de lancer un appel.

Prédécrocher (MusicOnHold)

MusicOnHold permet de jouer une musique d'attente dont la classe est passée en paramètre ; c'est le fichier /opt/etc/asterisk/musiconhold.conf qui contient les paramètrages des musiques d'attente.

Commencons par editer ce fameux fichié : musiconhold.conf afin d'y crée son propre contexte.

[predec]
mode=files
directory=/opt/var/lib/asterisk/moh/predec.ulaw ; j'ai enregistré un message de predecroché que j'ai convertite en format.ulaw et transferé dans ce repertoire.

Pour cette essai j'ai crée un nouveau poste dans le fichier sip.conf : Poste13

[poste13]
type=friend
username=poste13
secret=poste13
context=test
directmedia=no
nat=no
host=dynamic
disallow=all
allow=alow ; Pour eviter des messages de warning, du au format gsm pour les appels free sortant, j'active que le codec allow pour ce poste.

Reste + qu'a associé ce predec au poste13 dans le fichier de config : extensions.conf

exten => 13,1,Answer()
exten => 13,2,Dial(SIP/poste13,20,m(predec)) ; le chiffre "20" correspond à la durer du message de predecroché (après cela la commnuication est coupé). la lettre "m" est une option de l'application Dial qui permet l'association avec MusicOnHold. (predec) est le nom du contexte crée dans MusicOnHold.conf.
exten => 13,3,Hangup()

Attention à ne jamais donner d'extension aux fichier son (aussi bien pour Playback et Background)

Restriction d'appel

Actuellement nous n'avons aucune restriction au niveau des appels sortant.
Nous allons modifier l'extension de sortit d'origine du fichier extensions.conf :
exten => _9.,1,Dial(SIP/freephonie/${EXTEN:1})

Par celui-ci :
exten => _90[1]XXXXXXXX,1,Dial(SIP/freephonie/${EXTEN:1})

Ce qui veut dire que l'on pourra composé uniquement les numéro commencant par "01".

Syntaxe :

Afin de faciliter l'écriture du plan de numérotation, voici des motif (ou patterns) qui peuvent être utilisé :

-X représente tout chiffre compris entre 0 et 9.
-Z représente tout chiffre compris entre 1 et 9.
-N représente tout chiffre compris entre 2 et 9.
-[123789] représente un chiffre parmis 1, 2, 3, 7, 8, 9.
-[1-7] représente tout chiffre compris entre 1 et 7 : 1, 2, 3, 4, 5, 6 ou 7
-[34-6] représente un chiffre parmi 3,4,5 ou 6
-. représente un ou plusieurs chiffres sans aucune restriction.

Un motif commence toujours par le caractère _


Messagerie Vocal "Voicemail.conf"

Nous allons voir maintenant, comment administrer une messagerie vocal unifié (Notification par email)
Avant tout de chose, commencons par installer un client de messagerie afin que Asterisk puisse envoyer le message audio en .wav directement sur ca boite mail.
ipkg install esmtp
Ensuite il faut créer à la main le fichier /opt/etc/esmtprc et y mettre la ligne suivante:

ESMTPRC.CONFhostname=smtp.free.fr:25 ; SMTP de Free
Dans le cas ou vous utiliser un autre centre de messagerie, vous devrez rajouter ceci en dessous :
username=votre_nom_utilisateur
password=votre_mot_de_passe
VOICEMAIL.CONFDiskStation> cd /opt/etc/asterisk
DiskStation> vi voicemail.conf
[general]
format=wav49|gsm|wav
attach=yes ; Valider l'envoi de message par pièce jointe
serveremail=contact@dstel.com ; Pour eviter que votre message soit traité comme spam, il est important de mettre dans la variable "serveremail" votre adresse mailcorrespondant à votre compte
fromstring=Asterisk PBX ; Pour indiquer que l'expediteur du message vient du serveur asterisk
mailcmd=/opt/sbin/sendmail -t ; indique quel executable utiliser pour envoyer le mail (package esmtp installer précédemment)
language=fr ; la boite vocal ira cherché les fichiers vocaux dans le repertoire : /opt/var/lib/asterisk/sounds/fr

[default] ; c'est ici que nous allons déclarer les boites vocales
numéro de la boite => mot de passe, nom, email, email pager, options
15 => 1234,poste15,contact@dstel.com,,delete=yes
Dans cette exemple "15" correspond au numéro de la boite, "1234" est le mot de passe permettant d'accéder à la boite, "poste15" est le nom de mon poste sip declaré dans sip.conf, la boite mail de l'utilisateur du poste 15, "delete=yes" indique qu'une fois le mail fois, le message sera effacé sur serveur asterisk.

SIP.CONFDiskStation> vi voicemail.conf
[poste15]
type=friend
username=poste13
secret=poste13
context=test
directmedia=no
nat=no
host=dynamic
mailbox=15@default ; on lui affecte le numéro de boite vocale "15"

EXTENSIONS.CONF
exten => 6000,1,VoiceMailMain(${CALLERID(num)}) ; En composant le 6000 on pourra consulter sa boite vocale directement après avoir rentré son mot de passe. "${CALLERID(num)}"permet de récuperer le N° du poste appelant 
exten => 6000,2,Hangup

exten => 7000,1,VoiceMailMain ; En composant le 7000 on pourra consulter la boite vocale de n'importe quel autre poste en indiquant son numéro de boite et son mot de passe.
exten => 7000,2,Hangup


exten => 15,1,Answer()
exten => 15,2,Dial(SIP/poste15,20) ; le chiffre "20" correspond à la durer de sonnerie, après ces 20 secondes il passe à l'etape 3
exten => 15,3,Voicemail(15@default) ; L'appel passe sur la messagerie "15"
exten => 15,4,Hangup


5 commentaires:

  1. Bonjour, j'ai suivi votre tuto, malheureusement j'obtiens systématiquement des "Regstration for '09xxxxxxxx@freephonie.net' timed out, trying again (Attempt #1), puis #2, etc

    RépondreSupprimer
  2. Bonjour Marie-Pierre et Benoît,
    J'ai changé de Blog et me suis mis sur Wordpress.
    Je vous invite à revoir mon nouveau Tuto à cette adresse : www.dsblog.fr
    Dans votre cas, vous pouvez vérifier votre config avec le scénario 1.
    Si le problème persiste, contacter moi sur l'autre blog.
    @ bientot

    RépondreSupprimer
  3. message de chrome:" blog.ds-tel.com fournit du contenu provenant de goodstamp.ru, un site connu pour distribuer des logiciels malveillants. Votre ordinateur pourrait être infecté par un virus si vous consultez ce site.
    Google pense qu'un logiciel malveillant pourrait être installé sur votre ordinateur si vous continuez. Nous vous conseillons de ne pas continuer, même si vous avez déjà consulté ce site auparavant ou si vous avez confiance en celui-ci. Il se peut qu'il ait été piraté récemment. Réessayez demain ou utilisez un autre site.
    Le site goodstamp.ru a déjà été informé qu'un logiciel malveillant a été détecté sur ses pages. Pour plus d'informations concernant les problèmes rencontrés sur goodstamp.ru, consultez notre Page de diagnostic de navigation sécurisée Google."
    ???

    RépondreSupprimer
  4. Bonjour je suis très intéressé par Asterix sur un NAS, mais j'ai quelques manques d'infos. En effet je dois installer un Syno dans la PME de mon frère qui possède une seule ligne FT, car un PABX lui couterait trop cher afin d'avoir plusieurs lignes. Que dois je demander à FT pour avoir plus de lignes et mettre l'Asterix en place ? Est-ce facilement jouable ?

    Merci d'avance.

    RépondreSupprimer
  5. La maladie du vih au cours des 3 dernières années et des douleurs difficiles à manger et la toux sont des cauchemars, en particulier la première année. À ce stade, le système immunitaire est sévèrement affaibli et le risque de contracter des infections opportunistes est beaucoup plus grand. Cependant, tous les séropositifs ne développeront pas le sida. J'ai commencé à prendre des antirétroviraux pour éviter une mort prématurée, mais je croyais en Dieu qui me guérirait un jour. En tant que brevet pour le VIH, nous vous conseillons de prendre des traitements antirétroviraux pour réduire nos chances de transmission du virus à d'autres personnes, il y a quelques semaines, je suis allé à la recherche sur Internet si je pouvais obtenir des informations sur le traitement du VIH par la phytothérapie. Sur ma recherche, j'ai vu le témoignage d'une personne qui avait été guérie du VIH et qui s'appelait Achima Abelard. et un autre brevet concernant le virus de l'herpès, Tasha Moore, qui a également témoigné au sujet de ce même homme, appelé le Dr Itua Herbal Center. J'ai été ému par le témoignage et je l'ai contacté par son adresse Email.drituaherbalcenter@gmail.com OU info@drituaherbalcenter.com. Nous avons bavardé et il m'a envoyé une bouteille de médicament à base de plantes. Je l'ai bu comme il me l'avait demandé. Après l'avoir bu, il me demande de passer un test pour savoir comment j'ai mis fin à ma vie de souffrance du brevet relatif au VIH, je suis guéri et exempt d'arv. Je lui suis toujours reconnaissant Drituaherbalcenter.Voici son numéro de contact: +2348149277967 ... Il m'assure qu'il peut guérir la maladie suivante..Vers, Cancer, Herpès Virus, Hpv, Pile, Erection faible, Maladie de Lyme, Epilepsie, , Cancer de la vessie, Cancer colorectal, Cancer du sein, Cancer du rein, Leucémie, Cancer du poumon, Lymphome non hodgkinien, Cancer de la peau, Lupus, Cancer de l’utérus, Cancer de la prostate, Fibromyalgie, SLA, Hépatite, Dysme de Parkinson, Maladie de Parkinson, Maladie génétique, Fibrodysplasie, Fibrodysplasie ossifiante progressive, syndrome de toxicité de la fluoroquinolone, accident vasculaire cérébral, HPV, érection faible, inflammation du foie et des reins, stérilité masculine / féminine, maladie de l'intestin, maladie de Huntington, diabète, ...

    RépondreSupprimer