Vous êtes sur la page 1sur 8

Ressources Informatiques https://ressourcesinformatiques.com/article.php?artic...

Serveur Asterisk (VoIP)


Installer Asterisk

doe@debian:~$ su - root
Mot de passe :
root@debian:~# apt-get install asterisk

Accéder à la console d'Asterisk

root@debian:~# asterisk -r
...
debian*CLI>

Quelques commandes :

• help : liste des commandes


• quit : quitter la console

Configurer Asterisk
Documentation : Asterisk : Créer les utilisateurs | Asterisk : Créer le plan
de numérotation
Effectuons la configuration suivante :

• alice, numéro : 6001, mot de passe : bonjour


• bob,numéro : 6002, mot de passe : bonjour
• martin, numéro : 6003, mot de passe : bonjour

Créer les comptes sip


Sauvegarder (renommer) le fichier pjsip.conf

root@debian:~# mv /etc/asterisk/pjsip.conf /etc/asterisk/pjsip.conf.origin

Créer les comptes


Configuration à effectuer :

• Section transport
◦ protocol=udp : protocole de transport à utiliser -> UDP
◦ bind=0.0.0.0 : Le serveur pourra communiquer sur toutes ses
adresses réseaux
• Section endpoint
◦ context=from-internal : lorsqu'Asterisk recoit un appel, il fait le lien

1 sur 8 14/09/2023 14:31


Ressources Informatiques https://ressourcesinformatiques.com/article.php?artic...

entre l'utilisateur et son numéro à l'aide du fichier /etc/asterisk


/extensions.conf contenant le plan de numérotation.
◦ disallow=all : n'autorise aucun codec excepté celui indiqué dans la
directive allow
◦ allow=ulaw : autorise le codec ulaw

Utilisez un éditeur pour créer (ou modifier) le fichier /etc/asterisk/pjsip.conf.


Exemple : nano, ...

root@debian:~# nano /etc/asterisk/pjsip.conf

Résultat de la modification :

root@debian:~# cat /etc/asterisk/pjsip.conf


[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0

;Templates for the necessary config sections

[endpoint_internal](!)
type=endpoint
context=from-internal
disallow=all
allow=ulaw
language=fr

[auth_userpass](!)
type=auth
auth_type=userpass

[aor_dynamic](!)
type=aor
max_contacts=1

;Definitions for our phones, using the templates above

[alice](endpoint_internal)
auth=alice
aors=alice
[alice](auth_userpass)
password=bonjour; put a strong, unique password here instead
username=alice
[alice](aor_dynamic)

[bob](endpoint_internal)
auth=bob
aors=bob
[bob](auth_userpass)
password=bonjour ; put a strong, unique password here instead
username=bob
[bob](aor_dynamic)

[martin](endpoint_internal)
auth=martin
aors=martin
[martin](auth_userpass)
password=bonjour ; put a strong, unique password here instead
username=martin
[martin](aor_dynamic)

Créer le plan de numérotation

2 sur 8 14/09/2023 14:31


Ressources Informatiques https://ressourcesinformatiques.com/article.php?artic...

Sauvegarder (renommer) le fichier extensions.conf

root@debian:~# mv /etc/asterisk/extensions.conf /etc/asterisk


/extensions.conf.origin

Créer le plan de numérotation


Configuration à effectuer :

• alice a pour numéro 6001


• bob a pour numéro 6002
• martin a pour numéro 6003
• Leur téléphone sonnera pendant 10 secondes puis leur répondeur
répondra.
• Leur répondeur aura pour numéro 6099.

Syntaxe

exten => number,priority,application([parameter[,parameter2...]])

Utilisez un éditeur pour créer (ou modifier) le fichier /etc/asterisk


/extensions.conf. Exemple : nano, ...

root@debian:~# nano /etc/asterisk/extensions.conf

Résultat de la modification :

root@debian:~# cat /etc/asterisk/extensions.conf


[from-internal]
exten=>6001,1,Dial(PJSIP/alice,10)
exten=>6002,1,Dial(PJSIP/bob,10)
exten=>6003,1,Dial(PJSIP/martin,10) ; Après 10 secondes envoi vers la règle 2
exten=>6099,1,VoiceMailMain() ; 6099 Numéro de téléphone du répondeur

; Règles 2
exten=>6001,2,VoiceMail(6001) ; Appel répondeur compte 6001
exten=>6002,2,VoiceMail(6002) ; Appel répondeur compte 6002
exten=>6003,2,VoiceMail(6003) ; Appel répondeur compte 6003

Configurer la boîte vocale


Définir le code d'accès pour chaque boite vocale
Sauvegarder (renommer) le fichier voicemail.conf

root@debian:~# mv /etc/asterisk/voicemail.conf /etc/asterisk/voicemail.conf.origin

Effectuer la configuration
Chaque boîte vocale aurra pour code d'accès par défaut : 1234. Utilisez un
éditeur pour créer (ou modifier) le fichier /etc/asterisk/voicemail.conf.
Exemple : nano, ...

root@debian:~# cat /etc/asterisk/voicemail.conf


[general]
format=wav49|gsm|wav|ulaw
[default]
; Numéro de messagerie => mot de passe d’accès à la messagerie, nom d'utilisateur
6001 => 1234, alice

3 sur 8 14/09/2023 14:31


Ressources Informatiques https://ressourcesinformatiques.com/article.php?artic...

6002 => 1234, bob


6003 => 1234, martin

Installer le dépôt contenant les sons en français

root@debian:~# apt-get install asterisk-core-sounds-fr

Indiquez le fichier asterisk.conf d'utiliser la langue définie dans


pjsip.conf

root@debian:~# cp /etc/asterisk/asterisk.conf /etc/asterisk/asterisk.conf.origin

La ligne ci-dessous doit être décommentée (il faut supprimer le ;) dans le


fichier /etc/asterisk/asterisk.conf . Utilisez un éditeur effectuer cette
modification dans le fichier /etc/asterisk/asterisk.conf. Exemple : nano, ...
Résultat :

root@debian:~# cat /etc/asterisk/asterisk.conf | grep languageprefix


languageprefix = yes ; Use the new sound prefix path syntax.

----------------------------------------------------------------
Charger la configuration

root@debian:~# asterisk -rx "core restart now"

Effectuer les tests de validation


Visualiser les ports ouverts

root@debian:~# ss -nlut | grep -E '5060|State'


Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 0.0.0.0:5060 0.0.0.0:*

• Le protocole SIP qui utilise le port 5060/udp se charge de


l'établissement de la communication.

Valider l'installation à l'aide de la console


Lancer la console

root@debian:~# asterisk -rvvvvvv


Asterisk
...
Connected to Asterisk ... currently running on debian (pid = 851)
debian*CLI>

Visualiser les utilisateurs

debian*CLI> pjsip list aors


Aor: <Aor..............................................> <MaxContact>
==========================================================================================

Aor: alice 1
Aor: bob 1

4 sur 8 14/09/2023 14:31


Ressources Informatiques https://ressourcesinformatiques.com/article.php?artic...

Aor: martin 1

debian*CLI> pjsip list auths


I/OAuth:
<AAuthId/UserName.............................................................>
==========================================================================================

Auth: alice/alice
Auth: bob/bob
Auth: martin/martin

Configurer les postes des utilisateurs


Alice est équipée du Softphone microsip sur PC , Bob est équipée de
l'application MizuDroid sur Smartphone Android , Martin est équipe d'un
téléphone CISCO SPA303 .
Softphone microsip sur PC

• Téléchargez microsip (version portable Lite)


• Décompressez-le
• Configurez : flèche vers le bas en haut à droite -> Add account ...

Remarque : l'adresse IP de mon serveur Asterisk est 192.168.1.34. Il était

5 sur 8 14/09/2023 14:31


Ressources Informatiques https://ressourcesinformatiques.com/article.php?artic...

également possible d'utiliser un nom ou un alias définit dans un serveur


DNS si vous en possédez un actif dans votre réseau.
Sur la console Asterisk apparaît l'enregistrement du poste avec l'adresse IP
du PC sur lequel a été faite l'installation :

-- Added contact 'sip:alice@192.168.1.201:49637;ob' to AOR 'alice' with


expiration of 300 seconds
== Endpoint alice is now Reachable

Remarque : pour que l'application fonctionne, il faut qu'elle est


l'autorisation d'accéder au micro du PC. Pour activer cette autorisation :
Paramètres > Confidentialité > Microphone > Activé

Softphone MizuDroid sur Smartphone Android


Téléchargez l'application, puis effectuez la configuration :

Sur la console Asterisk apparaît l'enregistrement du poste avec l'adresse IP


de l'équipement Android sur lequel a été faite l'installation

-- Added contact 'sip:bob@192.168.1.65:18718' to AOR 'bob' with expiration of


90 seconds
== Endpoint bob is now Reachable

Téléphone IP 3 lignes Cisco SPA 303


Procédure de configuration minimale
Sur la console Asterisk apparaît l'enregistrement du poste avec l'adresse
IP du téléphone :

6 sur 8 14/09/2023 14:31


Ressources Informatiques https://ressourcesinformatiques.com/article.php?artic...

-- Added contact 'sip:martin@192.168.1.12:5060' to AOR 'martin' with


expiration of 3600 seconds
== Endpoint martin is now Reachable

Alice appelle Bob


Sur la console Asterisk :

== Setting global variable 'SIPDOMAIN' to '192.168.1.34'


-- Executing [6002@from-internal:1] Dial("PJSIP/alice-00000004",
"PJSIP/bob,10") in new stack
-- Called PJSIP/bob
-- PJSIP/bob-00000005 is ringing
-- PJSIP/bob-00000005 is ringing
> 0x73d24780 -- Strict RTP learning after remote address set to:
192.168.1.65:18720
-- PJSIP/bob-00000005 answered PJSIP/alice-00000004
...
-- Channel PJSIP/bob-00000005 joined 'simple_bridge' basic-bridge
-- Channel PJSIP/alice-00000004 joined 'simple_bridge' basic-bridge
...
-- Remotely bridged 'PJSIP/alice-00000004' and 'PJSIP/bob-00000005' - media
will flow directly between them
...
-- Channel PJSIP/bob-00000005 left 'native_rtp' basic-bridge
-- Channel PJSIP/alice-00000004 left 'native_rtp' basic-bridge

• Alice appelle Bob


• Le télephone de Bob sonne
• Bob répond
• Alice et Bob parle
• Bob raccroche
• Alice raccroche

Bob appelle Martin


Sur la console Asterisk :

== Setting global variable 'SIPDOMAIN' to '192.168.1.34'


-- Executing [6003@from-internal:1] Dial("PJSIP/bob-00000004",
"PJSIP/martin,10") in new stack
-- Called PJSIP/martin
-- PJSIP/martin-00000005 is ringing
-- PJSIP/martin-00000005 is ringing
-- PJSIP/martin-00000005 answered PJSIP/bob-00000004
...
-- Channel PJSIP/bob-00000004 left 'native_rtp' basic-bridge <86608b1f-
3b13-4bd5-aa84-e85029638fd1>
== Spawn extension (from-internal, 6003, 1) exited non-zero on 'PJSIP/bob-
00000004'
-- Channel PJSIP/martin-00000005 left 'native_rtp' basic-bridge <86608b1f-
3b13-4bd5-aa84-e85029638fd1>

Martin appelle Alice


Sur la console Asterisk :

== Setting global variable 'SIPDOMAIN' to '192.168.1.34'


-- Executing [6001@from-internal:1] Dial("PJSIP/martin-0000000a",
"PJSIP/alice,10") in new stack
-- Called PJSIP/alice
-- PJSIP/alice-0000000b is ringing
-- PJSIP/alice-0000000b is ringing

7 sur 8 14/09/2023 14:31


Ressources Informatiques https://ressourcesinformatiques.com/article.php?artic...

-- PJSIP/alice-0000000b answered PJSIP/martin-0000000a


...
-- Channel PJSIP/alice-0000000b left 'native_rtp' basic-bridge
-- Channel PJSIP/martin-0000000a left 'native_rtp' basic-bridge

Alice appelle Bob, Bob ne décroche pas


Sur la console Asterisk :

Setting global variable 'SIPDOMAIN' to '192.168.1.34'


-- Executing [6002@from-internal:1] Dial("PJSIP/alice-00000001",
"PJSIP/bob,10") in new stack
-- Called PJSIP/bob
-- PJSIP/bob-00000002 is ringing
...
-- Nobody picked up in 10000 ms
-- Executing [6002@from-internal:2] VoiceMail("PJSIP/alice-00000001", "6002")
in new stack

...
-- <PJSIP/alice-00000001> Playing 'vm-intro.gsm' (language 'fr')
...
-- <PJSIP/alice-00000001> Playing 'beep.gsm' (language 'fr')
-- Recording the message
...
-- User ended message by pressing #
-- Playing 'auth-thankyou.gsm' (language 'fr')

• Alice appelle Bob


• Le télephone de Bob sonne
• Bob ne répond pas
• La boîte vocale de Bob répond
• Alice enregistre un message
• Alice appui sur la touche #

Bob écoute sa messagerie


Sur la console Asterisk :

== Setting global variable 'SIPDOMAIN' to '192.168.1.34'


-- Executing [6099@from-internal:1] VoiceMailMain("PJSIP/bob-00000003", "") in
new stack
...
-- <<JSIP/bob-00000003> Playing 'vm-login.gsm' (language 'fr')
...
-- <&PJSIP/bob-00000010> Playing 'vm-password.gsm' (language 'fr')
-- <&PJSIP/bob-00000010> Playing 'vm-youhave.gsm' (language 'fr')
...

• Bob appelle sa messagerie vocale


• Il entre son numéro de téléphone
• Il entre son mot de passe
• Il suit les instruction de sa messagerie vocale pour écouter les
messages

BTS CIEL
Cybersécurité Lycée Edmond Michelet - Arpajon - Essonne

8 sur 8 14/09/2023 14:31

Vous aimerez peut-être aussi