Pour approfondir mes compétences en administration système et réseaux, j’ai décidé de me lancer un défi pratique : construire mon propre serveur téléphonique (PBX) avec Asterisk. C’est un projet passionnant qui permet de démystifier le fonctionnement de la téléphonie sur IP (VoIP) et de manipuler des configurations réseau concrètes. Voici le récit de cette aventure technique, de la machine virtuelle vierge aux premiers appels.
Phase 1 : Mise en Place de la Fondation
Tout projet solide commence par une base saine.
- Création de la VM : J’ai d’abord monté une machine virtuelle dédiée avec Ubuntu 22.04 LTS dans VirtualBox.
- Mise à jour et Installation : Une fois la VM prête, j’ai mis à jour les paquets et installé Asterisk avec deux commandes simples :
sudo apt-get update -y sudo apt-get install asterisk -y
- Premier Contact : J’ai ensuite lancé l’interface en ligne de commande (CLI) d’Asterisk pour vérifier que l’installation s’était bien déroulée. Voir l’invite
Connected to Asterisk...
était le premier signe de succès !sudo asterisk -r
Phase 2 : Configuration du Cœur d’Asterisk
Le vrai travail commence dans le dossier /etc/asterisk/
, où résident les fichiers qui pilotent le serveur. Pour chaque fichier, la règle d’or est de toujours créer une sauvegarde avant toute modification.
2a. sip.conf
: L’Annuaire des Clients
Ce fichier définit les appareils (softphones) autorisés à se connecter.
- Points clés de ma configuration :
[general]
: Définit les règles pour tous, comme lecontext=internal
qui dirige les appels vers mon dialplan local, etallowguest=no
pour la sécurité.nat=yes
etlocalnet=192.168.1.0/255.255.255.0
: C’est une section capitale. Elle permet à Asterisk de gérer correctement les appareils qui, comme les miens, sont derrière un routeur (NAT). J’ai dû m’assurer que la plagelocalnet
correspondait bien à celle de mon réseau local.[7001]
et[7002]
: Ces sections définissent mes deux clients.host=dynamic
indique qu’ils n’ont pas d’IP fixe et doivent s’enregistrer, etsecret
définit leur mot de passe.
2b. extensions.conf
: Le Cerveau du Routage
C’est ici que la magie opère. Ce fichier est le “dialplan” ; il contient la logique qui décide quoi faire lorsqu’un numéro est composé.
- Logique de mon dialplan :
- Quand on compose
7001
: le script répond à l’appel (Answer
), essaie de faire sonner le client SIP7001
pendant 60 secondes (Dial
), et s’il n’y a pas de réponse, il joue un message d’indisponibilité (Playback
) avant de renvoyer vers la boîte vocale (VoiceMail
). - Le même principe s’applique pour l’extension
7002
. - Les extensions
8001
et8002
sont des raccourcis pour que chaque utilisateur puisse accéder directement à sa messagerie vocale (VoicemailMain
).
- Quand on compose
2c. voicemail.conf
: Les Boîtes Vocales
Ce dernier fichier crée les boîtes vocales référencées dans le dialplan. Ma configuration était simple :
[main]
7001 => 7001
7002 => 7002
Chaque ligne crée une boîte vocale (7001
) et lui associe un code PIN (7001
). C’est simple pour un labo, mais il faudrait des mots de passe robustes en production !
Phase 3 : Activation et Connexion des Clients
Avec la configuration en place, il était temps de donner vie au système.
-
Recharger Asterisk : J’ai appliqué les nouvelles configurations avec la commande
reload
dans la CLI d’Asterisk. -
Vérifier les “Peers” : La commande
sip show peers
m’a montré que le serveur connaissait mes deux extensions, mais qu’aucun client n’était encore connecté. Le statut(Unspecified)
est normal à ce stade.État initial : Asterisk attend que les clients se connectent.
-
Mise en Réseau de la VM : Étape cruciale : j’ai basculé la carte réseau de la VM en mode “Accès par pont” (Bridged Adapter). Cela lui assigne une IP sur mon réseau local, la rendant accessible par mes autres appareils. J’ai récupéré cette nouvelle IP (
192.168.1.75
dans mon cas) avec la commandeip addr show
.La VM est maintenant sur le réseau local avec l’IP 192.168.1.75.
-
Configuration du Client 1 (MicroSIP sur Windows) : J’ai configuré le softphone MicroSIP en utilisant l’IP de la VM comme serveur SIP et les identifiants de l’extension
7001
. Le voyant “Online” est passé au vert, confirmant la connexion !La configuration est simple : l’IP du serveur et les identifiants du client suffisent.
-
Configuration du Client 2 (Zoiper sur iOS) : J’ai répété le processus sur mon iPhone avec l’application Zoiper, en utilisant les identifiants de l’extension
7002
. L’application s’est enregistrée avec succès.
Phase 4 : Le Moment de Vérité !
Le test final. J’ai composé 7001
depuis mon iPhone, et mon PC a sonné. J’ai composé 7002
depuis mon PC, et mon iPhone a sonné. Le retour à la console Asterisk a confirmé la réussite : les deux clients étaient bien enregistrés, chacun avec son adresse IP locale.
Succès ! Les deux clients SIP sont en ligne et prêts à passer des appels.
Conclusion
Ce projet a été un excellent exercice pratique. J’ai non seulement réussi à monter un serveur téléphonique fonctionnel, mais j’ai surtout solidifié ma compréhension des fondamentaux de la VoIP, de la configuration SIP en environnement NAT, et de la logique de routage d’appels avec Asterisk. C’est une compétence précieuse pour tout administrateur système qui touche au réseau.