AP1 - Téléphonie IP

Qu'est-ce que la téléphonie IP?

La téléphonie IP, utilisant le protocole VoIP (Voice over Internet Protocol), est une méthode de communication pour transmettre de la voix entre interlocuteurs. Son application est principalement dans les entreprises afin de limiter les surcharges et problèmes de réseau cellulaire lors d'appels internes à cette dite entreprise.
Une similarité existe. Il est appelé VoWIFI et permet de faire la même chose que le VoIP en utilisant le Wi-Fi au lieu d'une connexion câblée.

Comment cela fonctionne?

La téléphonie IP sert à communiquer par téléphone à travers un réseau local. Des téléphones IP sont nécessaires afin de capturer la voix et le son des interlocuteurs. Ces téléphones vont ensuite transmettre la voix en plusieurs trames VoIP à travers le réseau jusqu'à un serveur spécial appelé IPBX, celui-ci permettra de faire transiter les informations de bout en bout. Étant le centre de ces communications, l'IPBX permettra de gérer les numéros internes (quatre chiffres de 1 à 9 sous cette forme : XXXX), de leur assigner un lieu (exemple : département des ressources humaines) et de gérer ces appels.

Sur certains types d'IPBX, la communication externe est possible sur des numéros habituels. Dans notre cas, nous allons limiter l'utilisation de l'IPBX dans une utilisation interne. (Service fonctionnant en local uniquement.)

Le service que nous allons mettre en place pour l'IPBX s'appelle Asterisk. Celui-ci est un service installable sur un système d'exploitation Debian.

Le réseau que nous allons utiliser sera 172.30.216.0/24 et sera disposé de cette manière : 

L'IPBX sera une VM et les deux softphones seront des postes physiques raccordés au réseau de l'IPBX. Pour les tests suivants avec de vrais téléphones, le schéma changera et sera indiqué.

Installation et configuration du premier contexte

Nous allons utiliser Debian 11 sans interface graphique pour installer la machine. Asterisk est un service installable par une commande apt-get.

En première étape, on va installer asterisk par la commande "apt install asterisk". Pour être sûr que le service fonctionne, on entre la commande "asterisk -rvvvv" qui permet de lancer la console d'asterisk dans son mode le plus avancé (logs, avertissements, etc). Elle se lance, donc aucun problème. Ainsi, on peut lancer un "service asterisk status" pour s'assurer de la bonne installation du service.

En deuxième étape, on va créer l'agencement des numéros de l'organisation que nous allons utiliser. Deux départements seront crées, "finance" et "comptabilité".

Ces trois fichiers de configuration sont cruciaux pour le fonctionnement de l'IPBX. Ceux-ci ce trouvent dans le répertoire /etc/asterisk et seront modifiés pour assurer le bon fonctionnement de la machine :

- users.conf - Configuration des utilisateurs (numéros, départements dans lequel ils sont inscrits...)
- extensions.conf - Configuration de la finalité des appels (si un service peut en appeler un autre...)
- voicemail.conf - Configuration du fonctionnement des boîtes vocales

Pour mettre en place le premier contexte, nous allons configurer trois numéros internes dans le fichier de configuration "users.conf". Dans le fichier "voicemail.conf", on configure la messagerie de chaque numéro.

users.conf
Chaque numéro dispose d'un nom complet, d'un nom d'utilisateur, d'un mot de passe d'accès à la messagerie, d'un numéro de téléphone et d'un département (appelé "context" par Asterisk). Le département correspond au domaine dans lequel se place ce numéro. Par exemple, un service comptabilité aura "comptabilité" en tant que contexte. En somme, ce sera le numéro pour joindre la comptabilité.

Ici, on crée trois numéros (7101, 7102, 7103) afin de tester tout cela plus tard.

voicemail.conf
Le champ [général] permet de configurer la messagerie vocale. On peut laisser un message de 100 secondes maximum avec trois personnes pouvant laisser un message simultanément.

Pour le département finance, le numéro de messagerie est 1234.

users.conf

voicemail.conf

En résumé, trois numéros ont été créés dans le département de la finance. Ces numéros peuvent communiquer entre eux et se laisser des messages. On peut interpréter ça comme trois ordinateurs sur un même réseau qui communiquent entre eux.

On prendra soin de faire un "service asterisk restart" pour redémarrer le service et prendre en compte les changements.

Test du premier contexte d'appel

Pour tester les numéros créés juste avant, on nécessite des téléphones pour transmettre de la voix. Pour ce premier test, on pourrait utiliser des téléphones physiques VoIP. Dans notre cas, nous allons utiliser ce qu'on appelle un "softphone" qui est un téléphone virtuel. 

Communication

Nous allons utiliser une application Windows appelée Ekiga, elle peut recevoir, gérer et émettre des appels IP comme un téléphone IP physique. Cela est appelé un "softphone". Nous allons configurer ceci avec les informations ci-jointes.

L'image sur la gauche concorde avec les informations précisés juste avant dans les explications.

Ici, on veut que le softphone (172.30.216.11 /24) soit assigné à l'utilisateur "dsici", cela va inclure son numéro de téléphone et son mot de passe d'accès. 
On inscrit donc cet utilisateur en précisant le nom, l'adresse de l'IPBX, son numéro de téléphone et son mot de passe.

Pour réaliser le test, un autre softphone est nécessaire. Pour ce faire, nous allons utiliser un autre poste connecté au réseau (172.30.216.12 /24) et configurer son numéro (utilisateur dsici2, numéro 7202).

Après les avoir enregistrés, on peut tenter un appel vocal.

Dans la capture ci-contre, on voit la méthode de connexion. Il faut renseigner l'adresse SIP du correspondant qu'on veut appeler.

Dans notre cas, on veut appeler le numéro 7102 par le serveur 172.30.216.66 qui gère les numéros par Asterisk.

On précise donc le numéro SIP suivant :
sip:172.30.216.66@7202

Dès que le second poste (7202) est connecté et inscrit avec le deuxième softphone, il devrait sonner si on l'appelle de l'autre poste (7201).

Un échange commencera entre les deux machines, on peut tester la communication en parlant et en écoutant de l'autre côté. On vérifiera bien que la configuration des casques audio est bonne, auquel cas l'échange ne marchera pas.

Et voilà, nous avons réalisé un test de téléphonie dans un même département. Maintenant, nous allons créer un autre département et configurer sa communication inter-départements.

Configuration du deuxième contexte

Le deuxième contexte contiendra un nouveau département comptabilité qui nécessitera deux nouveaux téléphones. Nous allons les configurer en modifiant un autre fichier : extensions.conf
Nous devrons également modifier les deux fichiers édités précédemment pour ajouter les numéros et configurer leur boite vocale.

extensions.conf

users.conf

voicemail.conf

Le fichier extensions.conf est très important pour la communication entre deux départements. Si nous ne disposons pas de celui-ci, la communication entre les deux départements est impossible. Comme on le voit dans la capture de gauche, celle d'extensions.conf, on remarque que le département finance dispose d'un lien vers celui de la comptabilité. Ainsi, la connexion entre les deux se réalise.

Test du deuxième contexte d'appel

Dans ce test-ci, on va utiliser de vrais téléphones VoIP. On va utiliser la même IP que les softphones, en prenant soin de changer leurs IP avant le test. Ces téléphones seront raccordés directement au réseau par un commutateur appelé PoE (Power Over Ethernet). Ils sont nécessaires car les téléphones ne disposent pas d'alimentation externe.

Le principe est le même que le test précédent, sauf qu'a la place de configurer les softphones, on configurera les téléphones physiques. Cela peut varier en fonction des modèles, mais en principe, il suffit de changer l'IP avec son interface web adaptée. 

Après configuration, on peut regarder l'écran des téléphones. Le nom entré dans la configuration de celui-ci apparaît, cela indique qu'il à bien reçu sa configuration. 

On teste avec un téléphone qui aura le numéro 7102 (dsici2) et l'autre avec le numéro 7202 (dsici4). On tente de les faire s'appeler. On tape le numéro 7202 sur le téléphone 7102.

Le téléphone sonne et peut décrocher. On sait qu'a ce point, le fichier extensions.conf a bien été configuré puisque l'échange est inter-département. Si l'on tente de rappeler, et qu'on ne décroche pas, le téléphone qui appelle tombera sur la messagerie. On devine donc que le fichier de configuration voicemail.conf fonctionne lui aussi.  

Au niveau des messages vocaux, ceux-ci sont forcément sauvegardés dans le serveur pour ensuite qu'ils soient lus par le destinataire de l'appel. Asterisk dispose d'un dossier "voicemail" dans lequel sont stockés les messages vocaux reçus récemment (ceux-ci sont triés par contexte et par numéros). Pour les anciens messages ils seront stockés dans un dossier "old". 

Notre cas pratique fonctionne. Le service asterisk fonctionne lui-aussi.

Bonus - analyse de trame

Le service que nous avons configuré est certes fonctionnel, mais n'est pas sécurisé. Il est donc possible d'intercepter le signal et de regarder les échanges. 
La téléphonie VoIP fonctionne avec le protocole SIP (Session Initiation Protocol) et RTP (Real Time Protocol), que le logiciel Wireshark peut lire et même écouter les échanges.

Lorsqu'un échange se produit, celui-ci se découpe en plusieurs parties pour privilégier la vitesse de fonctionnement. L'appel se produit par une succession de plusieurs trames SIP. Après avoir lancé Wireshark et l'avoir configuré avec un ordinateur connecté au même réseau que le serveur et les téléphones, on devrait obtenir ceci :  

Au dessus, une capture d'écran montrant la tentative d'un appel entre deux correspondants. On voit les différentes étapes de connexion :

Register : Le softphone s'identifie sur l'IPBX
Trying : L'appel est en cours (c'est à ce moment que ça sonne.)
Invite : Une invitation d'appel est envoyé au téléphone distant.
OK : Le téléphone distant a décroché
ACK : L'échange SIP (audio) peut débuter.

Pour capturer ces trames, on utilise un poste connecté au réseau qui aura Wireshark d'installé dessus. Quand la capture est lancée, on pourra voir les différents échanges du réseau ainsi que les trames SIP et RTP qui nous intéressent.
Pour récupérer de la donnée audio, il suffit de sélectionner les trames relatives à l'appel puis d'utiliser le "RTP Player" de Wireshark pour obtenir de l'audio. Cela devrait ressembler à la capture ci-dessous.

Le spectrogramme visible est celui de l'appel, il est utile pour savoir quand les échanges se sont produits ou retrouver certaines parties de la conversation.

La présentation de cet AP est terminé. Utilisez la barre de navigation ci-dessus pour vous déplacer sur le site.

Créez votre site web gratuitement ! Ce site internet a été réalisé avec Webnode. Créez le votre gratuitement aujourd'hui ! Commencer