Linux:Configuration d'un central téléphonique sur 2 sites géographiques
Sommaire
- 1 But
- 2 Nomenclature
- 3 Préparation de la carte microSD
- 4 1er démarrage du Raspberry Pi
- 5 Configuration du Raspberry Pi
- 6 Configuration de l'envoi de mails
- 7 Accès à FreePBX
- 8 Ajouter un poste
- 9 Ajouter un groupe de sonneries
- 10 Connexion des 2 sites géographiques
- 11 Connexion à l'opérateur Freephonie
But
Installer un autocommutateur téléphonique privé (PABX) sur 2 sites géographiques en utilisant le service SIP de l'opérateur Free.
Dans mon cas, il s'agissait d'avoir un réseau téléphonique privé couvrant mes 2 domiciles qui sont chacun dans des pays différents (France et Côte d'Ivoire). Mes domiciles seront reliés via le protocole SIP transitant sur internet (donc aucune communication internationale entre la France et la Côte d'Ivoire). Ainsi, tout mes appels vers la France seront routé directement vers mon opérateur Français, Free. De même, tout mes appels vers la Côte d'Ivoire seront routé vers mon opérateur Ivoirien, Côte d'Ivoire Télécom (Orange).
Chaque site géographique aura son PABX installé sur un Raspberry Pi.
Nomenclature
Avant de commencer, il est impératif d'être en possession d'un Raspberry avec ses accessoires:
- 2 Raspberry Pi 2 model B;
- 2 boitier pour Raspberry Pi 2 model B;
- 2 bloc d'alimentation micoUSB 5 V 3A;
- 2 carte microSD de classe 10 avec 8 Go minimum (Samsung Pro 16 Go 90/60 MB/s);
- 2 câble réseau Ethernet RJ45;
Mais aussi:
- 1 abonnement à l'opérateur téléphonique Free;
- au moins 2 téléphones IP;
Pour l'installation et la configuration de système:
- 1 ordinateur Linux comportant un lecteur de cartes microSD;
- 1 câble HDMI/HDMI ou HDMI/DVI pour le branchement à une TV ou un moniteur;
- 1 clavier USB.
Préparation de la carte microSD
Sur votre ordinateur Linux:
- commencer par récupérer la dernière version de la Raspbx;
- insérer votre carte microSD dans le lecteur de votre ordinateur;
- exécuter la commande suivante pour relever les partitions de la carte microSD (pour moi c'était /dev/sdf1):
df -h
- démonter la ou les partitions avec la commande:
umount /dev/sdf1
- copier l'image système récupéré vers votre carte microSD en faisant bien attention de mentionner le disque et non une partition (/dev/sdf1 sans le numéro):
sudo dd bs=4M if=~/raspbx-22-09-2016.img of=/dev/sdf
- une fois la copie terminée, votre carte microSD est enfin prête à être insérée dans votre Raspberry Pi.
1er démarrage du Raspberry Pi
- Insérer la carte microSD dans le lecteur de votre Raspberry;
- brancher le clavier sur un port USB de votre Raspberry;
- brancher votre Raspberry à votre réseau local via un câble réseau Ethernet RJ45;
- brancher l'alimentation de votre Raspberry (entrée microUSB): le Raspberry démarre;
- se connecter via SSH en tant que root et avec le mot de passe raspberry.
Configuration du Raspberry Pi
- Commencer par changer le mot de passe root:
passwd
- taper la commande suivante pour commencer la mise à jour de votre Raspbx:
raspbx-upgrade
- taper la commande suivante pour configurer le fuseau horaire:
configure-timezone
- taper la commande suivante:
raspi-config
- puis:
- Advanced Options / Expand Filesystem pour que Raspbx utilise toute la carte;
- Hostname pour changer le nom de votre Raspberry;
- cliquer sur le bouton Finish;
- un reboot est proposé: répondre Yes;
- taper la commande suivante pour générer les pairs de clés:
regen-hostkeys
- taper la commande suivante pour ajouter les langues fr_FR, fr_FR.UTF-8, fr_FR@euro à votre Raspbx:
dpkg-reconfigure locales
- taper la commande suivante pour sélectionner le bon clavier (Generic 105-keys (Intl) PC et French pour moi):
dpkg-reconfigure keyboard-configuration
Configuration de l'envoi de mails
- Taper la commande suivante pour configurer l'envoi de mails:
dpkg-reconfigure exim4-config
- puis:
- sélectionner internet site;
- System mail name: noreply.minetti.org;
- IP-addresses to listen on for incoming SMTP connections: 127.0.0.1 ; ::1;
- Other destinations for which mail is accepted: seth.sjdv.minetti.org;sjdv.minetti.org;
- Domain to relay mail for: minetti.org;
- Machines to relay mail for: laisser vide;
- Keep number of DNS-queries minimal (Dial-on-Demand)?: No;
- Delivery method for local mail: mbox format in /var/mail/;
- Split configuration into small files?: No;
- Root and postmaster mail recipient: user@minetti.org;
- éditer le fichier /etc/email-addresses pour avoir le contenu suivant:
root: user@minetti.org asterisk: user@minetti.org
- activer la configuration en tapant la commande suivante:
update-exim4.conf
- tester l'envoi de mail en tapant la commande suivante:
send_test_email user@minetti.org
Accès à FreePBX
- Avec un navigateur web, taper le nom de la machine;
- cliquer sur FreePBX Administration;
- taper admin comme nom d'utilisateur et admin comme mot de passe.
Ajouter un poste
Il s'agit d'enregistrer des postes de téléphones IP auprès d'Asterisk qu'ils soient matériel ou software. Certains postes peuvent gérer plusieurs combinés à travers une base. Pour connecter chaque combiné, il lui faut:
- un nom d'utilisateur et/ou nom d'enregistrement qui est généralement le numéro de poste (ex: 900);
- un mot de passe;
- l'adresse IP du serveur où réside Asterisk.
Pour ajouter un nouveau poste IP, sous FreePBX:
- cliquer dans le menu Applications / Postes;
- dans le bouton Ajouter un poste, cliquer sur Add New Chan_SIP Extension;
- dans l'onglet Général, renseigner les champs:
- Extension Utilisateur qui est le numéro de poste (ex: 900);
- Nom affiché qui est le nom donné au poste (ex: Salon France);
- Secret qui est le mot de passe (le générer et le relever);
- Link to a Default User à positionner sur Aucun;
- cliquer sur le bouton Soumettre pour ajouter le nouveau poste;
- cliquer sur le bouton Appliquer la configuration pour prendre en compte le nouveau poste;
- configurer le poste IP:
- faire un test entre 2 combinés.
Ajouter un groupe de sonneries
Un groupe de sonneries permet de donner un numéro pour faire sonner plusieurs postes. Dans notre cas, nous allons créer un numéro (le 999) pour faire sonner tous les postes des 2 sites géographiques.
Sous FreePBX:
- cliquer dans le menu Applications / Groupes de Sonnerie;
- cliquer sur le bouton Add Ring Group et renseigner les champs;
- Numéro de Groupe de Sonnerie = 999;
- Description du Groupe = Tous les postes;
- Liste d'Extension = ajouter tous vos postes;
- cliquer sur le bouton Soumettre pour ajouter le nouveau groupe de sonnerie;
- cliquer sur le bouton Appliquer la configuration pour prendre en compte le nouveau groupe de sonnerie;
- faire un essai pour s'assurer que tout fonctionne.
Connexion des 2 sites géographiques
Le but va être de connecter 2 centraux téléphoniques entre-eux en utilisant le protocole IAX d'Asterisk. Avant de commencer, il faut définir les accès pour chaque central téléphonique:
Central téléphonique | Adresse | Utilisateur | Mot de passe |
---|---|---|---|
France | pabx.sjdv.minetti.org | iax | MyPasswordFrance |
abidjan | pabx.abidjan.minetti.org | iax | MyPasswordCoteDIvoire |
Sous FreePBX du PABX France:
- cliquer dans le menu Connectivité / Trunks;
- dans le bouton Ajout Trunk, cliquer sur Ajout d'un Trunk IAX2;
- dans l'onglet Général, renseigner les champs:
- Nom de la jonction qui est le nom qu'aura le trunk (ex: Abidjan);
- Outbound CallerID qui sera le numéro de l'appelant venant de ce trunk (ex: 095xxxxxxx);
- Nombre maximal de canaux = 2
- dans l'onglet iax2 Paramètres et Outgoing, renseigner les champs:
- Nom de la jonction = abidjan;
- Détails du PEER:
username=iax type=peer trunk=yes secret=MyPasswordFrance qualify=yes host=pabx.abidjan.minetti.org
- dans l'onglet iax2 Paramètres et Incoming, renseigner les champs:
- Contexte Utilisateur = iax;
- Détails de l'utilisateur:
type=user secret=MyPasswordCoteDIvoire context=from-internal
- puis cliquer sur le bouton Soumettre pour enregistrer le nouveau Trunk.
Puis on ajoute une route sortante pour router tous les appels du domicile France vers le domicile de Côte d'Ivoire:
- cliquer ensuite dans le menu Connectivité / Routes Sortantes;
- cliquer sur le bouton Add Outbound Route;
- dans l'onglet Route Settings, renseigner les champs:
- Nom de la Route = Domicile Abidjan;
- Route Type = Intra-Company
- Trunk Sequence for Matched Routes = ajouter le trunk Abidjan;
- dans l'onglet Dial Patterns, ajouter le masque de numérotation suivant:
- ()|[91x/];
- ()225|[XXXXXXXX/]
- puis cliquer sur le bouton Soumettre pour enregistrer la nouvelle route sortante;
- cliquer sur le bouton Appliquer la configuration pour prendre en compte le nouveau Trunk et la route sortante;
Recommencer la même opération avec le PABX d'Abidjan.
Connexion à l'opérateur Freephonie
L'idée est de se connecter au service SIP de Free pour pouvoir rediriger les appels entrants vers le PABX et les appels sortants vers l'opérateur téléphonique.
Sous FreePBX, commencer par ajuster certains paramètres:
- cliquer dans le menu Paramètres / Paramètres SIP d'Asterisk;
- dans l'onglet Paramètres SIP généraux:
- dans la rubrique NAT Settings, cliquer sur le bouton Detect Network Settings;
- dans sur l'onglet Paramètres Chan SIP, renseigner les champs:
- IP Configuration = Static IP;
- Override External IP = votre adresse IP publique;
- Registration Default Expiry = 1800;
Ajouter la connexion SIP vers Free:
- cliquer ensuite dans le menu Connectivité / Trunks;
- dans le bouton Ajout Trunk, cliquer sur Ajout d'un Trunk SIP (chan_sip);
- dans l'onglet Général, renseigner les champs:
- Nom de la jonction = Freephonie;
- Outbound CallerID = 095xxxxxxx;
- Nombre maximal de canaux = 2;
- ne rien mettre dans l'onglet Dialed Number Manipulation Rules;
- dans l'onglet sip Paramètres et Outgoing, renseigner les champs:
- Nom de la jonction = freephonie;
- Détails du PEER:
host=freephonie.net username=095xxxxxxx secret=<Votre mot de passe> type=peer allow=all dtmfmode=inband context=from-trunk fromdomain=freephonie.net insecure=very qualify=yes fromuser=095xxxxxxx
- dans l'onglet sip Paramètres et Incoming, renseigner les champs:
- Contexte Utilisateur = 095xxxxxxx;
- Chaîne d'enregistrement = 095xxxxxxx:<Votre mot de passe>@freephonie.net
- Détails de l'utilisateur:
allow=all context=from-trunk fromdomain=freephonie.net fromuser=095xxxxxxx host=freephonie.net insecure=very qualify=yes secret=<Votre mot de passe> type=friend username=095xxxxxxx
- puis cliquer sur le bouton Soumettre pour enregistrer le nouveau Trunk.
Puis, on ajoute une route entrante pour router tous les appels entants dans notre réseau privé vers tous les postes (999):
- cliquer ensuite dans le menu Connectivité / Routes Entrantes;
- cliquer sur le bouton Add Inbound Route;
- dans l'onglet Général, renseigner les champs:
- Description = Freephonie;
- Choix Destination = Groupe de Sonnerie / 999 Tous les postes
- puis cliquer sur le bouton Soumettre pour enregistrer la nouvelle route entrante.
Et enfin, on ajoute une route sortante pour router tous les appels de notre réseau privé vers l'extérieur:
- cliquer ensuite dans le menu Connectivité / Routes Sortantes;
- cliquer sur le bouton Add Outbound Route;
- dans l'onglet Route Settings, renseigner les champs:
- Nom de la Route = Freephonie;
- Route CID = 095xxxxxxx;
- Trunk Sequence for Matched Routes = ajouter le trunk Freephonie;
- dans l'onglet Dial Patterns, ajouter le masque de numérotation suivant:
- (0) 0|[./];
- puis cliquer sur le bouton Soumettre pour enregistrer la nouvelle route sortante;
- cliquer sur le bouton Appliquer la configuration pour prendre en compte le nouveau Trunk et les 2 nouvelles routes;
Maintenant, vous devriez pouvoir passer et recevoir des appels extérieurs à partir de vos téléphones IP.