VoIP avec Asterisk - AZERTY-Formation
Transcript of VoIP avec Asterisk - AZERTY-Formation
Asterisk 1 / 47 65120.net
VoIP avec AsteriskInstallation et mise en place d’asterisk
Auteur
Jean-François Casquet
Editeur
AZERTY Microsystem
2004 - 2014 © Tous droits réservés
copie interdite
www.65120.net
Asterisk 2 / 47 65120.net
Installation ASTERISK sur Linux UBUNTU
Installation de UBUNTU 12_______________________________________________________________________________________
Créons une machine virtuelle dans laquelle il y a un serveur Asterisk.
En cliquant sur « Nouvelle » ou « new » dans VirtualBox.L’assistant se lance.
Nommons la Machine virtuelle avec le type de système d’exploitation.
Asterisk 3 / 47 65120.net
Attribuons de la mémoire à cette machine virtuelle.512 Mo suffit largement pour un serveur Asterisk
Créons un nouveau disque pour installer Asterisk sur un disque virtuel
Asterisk 4 / 47 65120.net
Choisissons n’importe quel format. VDI est celui par défaut pourVirtualbox
En choisissant « dynamiquement » le disque prendra de l’espace petit àpetit suivant les besoins de remplissage d’Asterisk.
Asterisk 5 / 47 65120.net
Donnons une taille intéressante pour stocker LINUX mais aussi lesmessages vocaux … Emails …
Démarrage de la machine virtuelle – Virtualbox lance un assistant depremier lancement car le système n’est pas installé.
Asterisk 6 / 47 65120.net
Choisissons l’image ISO de linux. Avec l’icône à droite de la liste, nouspouvons parcourir pour trouver le fichier ISO de LINUX téléchargeable.
C’est parti pour l’installation
Asterisk 7 / 47 65120.net
Choisissons la langue pour l’installation
Installons LINUX en mode « normal » - il s’agit de la version SERVEUR (pro)
Asterisk 8 / 47 65120.net
Choisissons le pays de rattachement afin de pré sélectionner les optionssuivantes
Il n’est pas utile de détecter automatiquement le clavier.
Asterisk 9 / 47 65120.net
Choisir le clavier français (LATIN 9) convient pour les claviers
Nommons le serveur (n’importe quel nom puisqu’il ne sert pas à grandchose)
Créons un nom descriptif de connexion à LINUX (il n’est pas possible de seconnecter entant que « root » sur Ubuntu).
Asterisk 10 / 47 65120.net
Donnons le LOGIN qui aura le droit de se connecter en tant que Root
Donnons un mot de passe. Il faut le noter car se sera le seul moyen deconnexion à LINUX
Retapons le mot de passe
Si le mot de passe est trop simple, une alerte nous en informe.
Il est possible, sous LINUX, de crypter les informations de l’utilisateur. Ici,pour asterisk, nous ne cryptons généralement pas les informations.
Asterisk 11 / 47 65120.net
Choisissons un système de gestion de disque – le mieux, pour asterisk, estd’utiliser le disque entier sans LVM – car les fonctions du LVM n’ont pasvraiment d’intérêt pour la VoIP.
Partitionnons le disque choisi
Laissons LINUX partionner à ses besoins
Nous ne faisons pas de mises à jour
Asterisk 12 / 47 65120.net
Pas de mises à jour automatique – trop dangereux pour un système quidoit fonctionner 24h/24
Installons OpenSSh (pour se connecter au serveur par SSH)LAMP : Linux Apache Mysql PHP (pour la partie WEB d’Aterisk)SAMBA : pour accéder par partage de fichier (fonction NAS)
Mysql demande un mot de passe administrateur
Confirmation du mot de passe
Asterisk 13 / 47 65120.net
Installation du système de Boot (obligatoire dans notre cas)
Redémarrons le système – LINUX est installé
Pour que la machine virtuelle soit un serveur, il est nécessaire de la faireentrer dans le réseau.Allons sur le menu « Périphériques » puis « cartes réseau »
Il suffit de se mettre en mode « Bridge » ou « pont » avec la carte réseaude la machine physique.
Asterisk 14 / 47 65120.net
Installation de ASTERISK 1.8.10___________________________________________________________________________________
Pour se connecter à LINUX, il suffit de se connecter sur le serveur.
# analyse des packages
sudo bash
apt-get update
# installation d’asterisk et des modules qui permettent de faire du APACHE / PHP / Mysql
apt-get install asterisk asterisk-mysql php5-mysql php-db mysql-server libapache2-mod-php5 php5-gd php-pear sox curl
# installation des packages français
apt-get install asterisk-prompt-fr-proformatique
# gestionnaire de périphériques compatibles avec Asterisk
apt-get install dahdi-linux dahdi
Afin de fixer l’adresse IP du Serveur :
sudo bash
nano /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
#allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.0.0.1
network 192.0.0.0
netmask 255.255.0.0
broadcast 192.0.255.255
FIN_SCRIPT
Nous plaçons une adresse IP à 192.0.0.1 par exemple.
Asterisk 15 / 47 65120.net
Maintenant, il nous faut créer un serveur DHCP pour que les téléphones ToIP puissent avoir une adresse IP.
apt-get install dhcp3-server
cat > /etc/dhcp/dhcpd.conf << FIN_SCRIPT
ddns-update-style none;
ignore client-updates;
authoritative;
subnet 192.0.0.0 netmask 255.255.0.0 {
option routers 192.0.0.1;
option subnet-mask 255.255.0.0;
option domain-name "asterisk.65120.com.";
option domain-name-servers 8.8.8.8;
range 192.0.0.10 192.0.0.200;
default-lease-time 21600;
max-lease-time 43200 ;
}
Il nous faut redémarrer l’interface réseau : /etc/init.d/networking restart
Pour utiliser les Mails, installons POSTFIX :
apt-get install postfix
Dans le fichier /etc/postfix/main.cf mettons le relais SMTP : relayhost = smtp.free.fr
Asterisk 16 / 47 65120.net
Installation d’un Windows avec son Soft Phone_______________________________________________________________________
Installation d’un Windows – dans une machine virtuelle
Installation d’un Soft Phone : exemple Xlite
Asterisk 17 / 47 65120.net
Premiers pas vers la configuration de postes téléphoniques
Configuration d’Asterisk ________________________________________________________________________________________
Commençons par donner quelques indications à Asterisk dans un cadre général.
Dans le fichier /etc/asterisk/sip.conf se situent des sections de paramétrages du serveur SIP.
Par exemple, dans la section « [general] » nous trouvons :
Context = default.............................pour dire que les paramètres des comptes se trouvent dans la section « default ».
udpbindaddr=0.0.0.0.........................veut dire qu’ASTERISK accepte des clients UDP venus du réseau entier.
tcpbindaddr=0.0.0.0 .........................veut dire qu’ASTERISK accepte des clients TCP du réseau entier.
Les ports utilisés sont 5060 en UDP et TCP par défault.
language=fr....................................veut dire que la messagerie sera en français grace au package « asterisk-prompt-fr-
proformatique » installé avec Asterisk
Créons des sections à la suite de ce fichier sip.conf :
[JF]
type=friend
secret=azerty
host=dynamic
callerid="JF Casquet" <200>
[AZERTY]
type=friend
secret=azerty
host=dynamic
callerid="AZERTY Ms" <201>
Asterisk 18 / 47 65120.net
Chaque section correspond à un utilisateur :
[AZERTY] ...................................... le « login » de connexion sur le téléphone SIP
type=friend ................................... les droits associés à ce compte
secret=azerty................................. mot de passe de connexion
host=dynamic................................. adresse IP autorisée pour ce poste téléphonique
callerid="AZERTY Ms" <201> ................ le Call ID pour ce compte : nom affiché + numéro de téléphone (poste)
Ouvrons maintenant le fichier de fonctionnement et gestion des numéros d’appel. Ce fichier contient les comportements des
appels vers l'intérieur, extérieur, transfert d’appel, gestion des files d’attente, numéros sonnants en même temps, les
séquences de sonnerie entre les postes, la gestion de la messagerie …
Ouvrons donc le fichier /etc/asterisk/extensions.conf
Ajoutons-y , dans la section [default],
puisque nous avons dit à Asterisk d’ouvrir
cette section.
exten => 200, 1, Dial(SIP/JF, 10) .................. 200 = numéro d’appel (numero de poste)
1 = ordre de gestion du séquencement des actions
Asterisk 19 / 47 65120.net
Dial (SIP/<login> = appel local vers le compte JF
10 = laisser sonner 10 secondes puis passer à la séquence 2 (que nous n’avons
pas créée ici)
Exemple de fonctionnement d’appel qui passe d’un usager vers un autre :
exten => 200, 2, Dial(SIP/accueil, 10)............ pour faire sonner l’accueil si la séquence 1 n’a pas répondu
exten => 200, 3, goto (default, 200, 1) .......... pour sauter à la section « defaul » poste « 200 » séquence « 1 ». En clair, on
fait sonner le poste de JF si l’accueil ne répond pas, puis on recommence …
Exemple pour faire sonner 2 téléphones en même temps :
exten => 205, 1, Dial(SIP/JF&SIP/accueil, 10) . pour faire sonner JF et Accueil en même temps pendant 10 secondes.
Autoriser le Transfert d’appel durant une conversation en appuyant sur « # »
exten => 200,1,Dial(SIP/accueil,,tT)
Les options t et T permettent respectivement l’appelé et l’appelant à transférer les appels.
Pour transférer un appel, il suffit d’appuyer sur # pendant l’appel. Vous entendrez alors une voix disant « Tranfer » et vous
pourrez entrer le numéro vers lequel l’appel sera transféré.
Préparer la Mise en attente musicale
Le transfert d’appel se fait en rajoutant dans extensions.conf les paramètres suivants : dans la catégorie [default] ajoutez
Include=>parkedcalls
Maintenant le standardiste pourra mettre en attente un appel en tapant #700. L’appel sera donc placé dans un parc d’attente.
Si on laisse la configuration telle quelle, une fois l’abonné en attente il n’entendra rien et s’impatientera ou raccrochera car il
pensera que la ligne a été coupée. Il faut alors faire tourner une petite musique en fond. Pour cela il faut installer le paquet «
Asterisk-mp3 » et le lecteur de musique madplay de la sorte :
sudo apt-get install asterisk-mp3
sudo apt-get install madplay
Asterisk 20 / 47 65120.net
Une fois installés, il faut configurer asterisk afin qu’il diffuse la musique.
Allez dans la catégorie [default] du fichier musiconhold.conf cette fois ci et ajoutez-y les lignes suivantes.
[default]
mode=custom ......................................... spécifie qu’on utilisera un lecteur de musique externe à asterisk
directory = /usr/share/asterisk/moh ............. répertoire ou les musiques seront. Evidement vous pourrez mettre vos
musiques ou vous voulez mais il faudra modifier cette ligne sinon asterisk ne
les trouvera pas. Par défaut laissez la si vous n’êtes pas sur de ce que vous
faite.
application=/usr/bin/madplay –a -12 –mono –R 8000 –output=raw :- ; lecteur externe de musique utilisé.
Il reste plus qu’à mettre votre musique dans le fichier spécifié : ici c’est /usr/share/asterisk/moh.
Redémarrez asterisk et l’utilisateur mis en attente entendra une petite mélodie.
Interception d’appel par un collaborateur, dans un groupe
L’interception d’appel peut être utilisée au moment où le téléphone sonne. L’interception d’appel autorise la récupération
d’appel destiné à un poste qui sonne depuis un autre poste. Pour cela il faut que l’intercepté et l’intercepteur soient dans le
même groupe d’appel. Par contre, tous les membres d’un groupe n’ont pas forcément le droit d’intercepter.
Ici , JF et AZERTY font partie du même groupe. Seul AZERTY pourra intercepter les appels pour JF. Modifions donc le fichier
sip.conf
[JF]
type=friend
secret=azerty
host=dynamic
callerid="JF Casquet" <200>
callgroup=1
Asterisk 21 / 47 65120.net
[AZERTY]
type=friend
secret=azerty
host=dynamic
callerid="AZERTY Ms" <201>
pickupgroup=1
Comment intercepter un appel ? C’est simple, lorsque le téléphone sonne il suffit que AZERTY fasse *
Bien plus encore : http://bio-teckna.fr/?p=263
Messagerie avec Asterisk
Configuration de la messagerie ___________________________________________________________________________________
Pour configurer Asterisk avec la messagerie Vocal, il nous faut ouvrir le fichier de configuration /etc/asterisk/voicemail.conf
Nous y indiquons le Codec d’enregistrement des
messages dans la section :
« [general] » puis « format=gsm »
L’objet du mail peut convenir des variables :
VM_NAME........nom d'utilisateur
VM_DUR .........durée du message
VM_MSGNUM....numéro du message
VM_MAILBOX....numéro de l'utilisateur
VM_CIDNUM.....numéro du l'appelant
VM_CIDNAME....nom de l'appelant
VM_DATE ........date du message
\n................. retour à la ligne
\t ................. tabulation
Asterisk 22 / 47 65120.net
Envoi de Mail _________________________________________________________________________________________________
Il suffit de créer une ligne supplémentaire dans le fichier sip.conf :
[login du ToIP]
Puis, dans le fichier extensions.conf il suffit d’indiquer dans la séquence d’appel que l’appel sera dirigé vers la messagerie.
exten => 200, 1, Dial(SIP/JF, 10)
exten => 200, 2, VoiceMail(200)
Pour écouter la messagerie, nous utilisons la commande : VoiceMailMain()
Exemple : exten => 210, 1, VoiceMailMain(200@default) - en composant le 210, nous écoutons les messages de 200
Mise en place d’un serveur VOCAL
Réalisation des scénarii par événements____________________________________________________________________________
Le standard automatique permet à un utilisateur d’écouter un message lui indiquant les choix possibles.
Après, il lui suffit de presser une des touches pour effectuer l’action voulue. Il est possible de combiner les menus pour développer
une architecture plus complexe. Dans l’exemple suivant, quand l’utilisateur compose le 210, il entend un message vocal qui l’invite à
taper 1, 2 ou 9 sur son clavier. S’il tape 1, l’appel est envoyé à John. S’il tape 2, l’appel est envoyé à Fred. S’il tape 9, Asterisk
raccroche. Si l’utilisateur ne fait rien, le message est joué en boucle.
[local]
exten => 210, 1, Goto(Menu,s,1) ; appel du standard automatique
[Menu] ; standard automatique
exten => s, 1, Background(/var/msg/Menu) ; le message audio enregistré /var/msg/Menu.gsm et joue
exten => s, 2, WaitExten(2) ; on attend 2 sec
exten => s, 3, Goto(Menu,s,1) ; on recommence le tout
Asterisk 23 / 47 65120.net
exten => 1, 1, SayNumber(1)
exten => 1, 2, Goto(local,200, 1) ; 1 Appel John
exten => 2, 1, SayNumber(2)
exten => 2, 2, Goto(local,201, 1) ; 2 Appel Fred
exten => 9, 1, SayNumber(9)
exten => 9, 2, Hangup() ; 9 On raccroche
Astuce : pour enregistrer le message vocal au bon format, il vous suffit de laisser un message sur la boîte
vocale d’un utilisateur et de copier le fichier dans le répertoire /var/msg/ avec la commande suivante.
cp /var/spool/asterisk/voicemail/default/200/INBOX/msg0000.gsm /var/msg/Menu.gsm
Analyse de trames
Pour analyser les trames, utilisons le programme : Wireshark avec un
filtre lié à l’adresse IP du serveur asterisk
Les trames des registrar sont envoyées par le téléphone afin de
s’identifier avec le mot de passe en MD5.
Seules les trames SIP (en TCP) sont utilisées ici.
Asterisk 24 / 47 65120.net
Toutes les minutes, les téléphones se connectent au serveur pour
annoncer leur présence.
Les trames d’appel du poste 192.0.0.16 vers 192.0.0.14 montrent ici
les procédures de connexions.
Asterisk 25 / 47 65120.net
Durant l’appel, nous voyons les échanges entre les téléphones et le
serveur.
Plusieurs parties sont audibles entre le serveur et les postes
téléphoniques (tonalités et autres sons possibles).
Les échanges de voix entre les postes téléphoniques se fait en UDP
avec des trames UDP de statistiques RTCP (en UDP).
Nous y voyons les codecs utilisés.
Asterisk 26 / 47 65120.net
Installation XIVO
XIVO peut s’installer sur une machine virtuelle.
Asterisk 27 / 47 65120.net
Nommons la machine virtuelle avec la définition du systèmesur DEBIAN (32bits).
Nous créons un disque pour stocker les messages et lesconfigurations.. et, accessoirement, LINUX.
Asterisk 28 / 47 65120.net
Nous pouvons choisir un format de disque. Sans grandeimportance pour nous dans le cadre de la VoIP.
Choix libre
Asterisk 29 / 47 65120.net
Choisissons le lieu de stockage du disque virtuel – pour lessauvegardes.
Attention, pour que XIVO fonctionne, il faut un disque en IDEet pas en SATA.
Asterisk 30 / 47 65120.net
Il faut donc ajouter un disque à partir du fichier VDI qui vientd’être créé.
Puis supprimer l’image virtuelle du contrôleur SATA
Asterisk 31 / 47 65120.net
Maintenant, nous serons compatibles avec DEBIAN et XIVO
Choisissons le CD d’installation de XIVO ou l’image ISO.
Asterisk 32 / 47 65120.net
Installation de DEBIAN
Et XIVO démarre – LINUX Debian démarre
Asterisk 33 / 47 65120.net
En tapant « root » puis le mot de passe choisi lors del’installation, nous tapons la commande ifconfig pour obtenirl’adresse IP du LINUX
Entrons dans le réseau de ce serveur (si ce n’est pas déjà lecas) et pinguons-le pour être sûr qu’il est bien dans notreréseau et notre VLAN.
Asterisk 34 / 47 65120.net
Sinon, nous pouvons faire changer notre adresse IP commeindiqué si besoin.
Il suffit maintenant de se connecter à l’interface WEB en yentrant l’adresse IP du serveur dans la barre d’adresse (avechttp:// qui précéde).
Attention : certains navigateurs fonctionnent pas avec lesmenus déroulants.Utilisez Chrome par exemple.
Attention, le certificat SSL n’est pas authentique puisqu’il estprivé. Acceptons quand même la connexion.
Asterisk 35 / 47 65120.net
Login : rootMot de passe : celui que l’on a indiqué lors de l’installation
Maintenant, nous accédons aux fonctions en menus déroulants.
Asterisk 36 / 47 65120.net
Dans les fonctions, il y a la liste des utilisateurs
Avec la fonction en haut à droite, permet d’ajouter desutilisateurs
Asterisk 37 / 47 65120.net
En cliquant sur le nom à modifier , nous avons tous les détails.
Asterisk 38 / 47 65120.net
Des onglets permettent d’accéder à toutes les fonctions
Asterisk 39 / 47 65120.net
Nous pouvons ajouter des lignes associées à l’utilisateur
Dans le menu « lignes » à gauche, nous pouvons créer descomptes pour les téléphones.
Asterisk 40 / 47 65120.net
Ajoutons ou modifions les lignes
Le compte de la ligne (le téléphone SIP) est détaillé ici
Asterisk 41 / 47 65120.net
Configurons les téléphones
Mettons les codes dans la configuration du téléphone
Le nom de connexion et le mot de passe sont donnés par XIVO.
Asterisk 42 / 47 65120.net
Le téléphone est prêt
Avec l’utilisateur, nous pouvons associer une lignetéléphonique
Asterisk 43 / 47 65120.net
Asterisk 44 / 47 65120.net
Dans l’onglet « lignes » associons le numéro à la ligne.
Confirmons la ligne de l’utilisateur pour que le poste 1001 luisoit associé
Asterisk 45 / 47 65120.net
Voici la liste des lignes créées
Créons un second poste téléphonique
Asterisk 46 / 47 65120.net
Faisons des appels entre eux
Pour créer un groupe de lignes (les lignes sonnent en même temps ou chacun son tour, interception d’appel …)
Asterisk 47 / 47 65120.net
Il faut d’abord créer un contexte avec des plages de numérosattribués pour les groupes.
Dans le menu « groupe » se trouve en suite un onglet groupequi contient les numéros.
Maintenant, il suffit d’aller sur le menu « Groupes » pourajouter un groupe associé à un numéro de téléphone.Ce sera l’occasion d’y mettre les Utilisateurs dans l’onglet« utilisateurs »