Back to projects
Apr 11, 2025
5 min read

De la VM à l'Appel : Mon Projet de Serveur VoIP avec Asterisk

Guide pratique et retour d'expérience sur la création d'un standard téléphonique (PBX) fonctionnel avec Asterisk sur Ubuntu, de l'installation à la connexion de clients Windows et iOS.

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.

  1. Création de la VM : J’ai d’abord monté une machine virtuelle dédiée avec Ubuntu 22.04 LTS dans VirtualBox.
  2. 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
    
  3. 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 le context=internal qui dirige les appels vers mon dialplan local, et allowguest=no pour la sécurité.
    • nat=yes et localnet=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 plage localnet 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, et secret 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 SIP 7001 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 et 8002 sont des raccourcis pour que chaque utilisateur puisse accéder directement à sa messagerie vocale (VoicemailMain).

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.

  1. Recharger Asterisk : J’ai appliqué les nouvelles configurations avec la commande reload dans la CLI d’Asterisk.

  2. 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.

    Peers configurés mais non connectés État initial : Asterisk attend que les clients se connectent.

  3. 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 commande ip addr show.

    Obtention de l'adresse IP de la VM La VM est maintenant sur le réseau local avec l’IP 192.168.1.75.

  4. 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 !

    Configuration du client MicroSIP La configuration est simple : l’IP du serveur et les identifiants du client suffisent.

  5. 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.

Tous les clients sont connectés et enregistrés 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.