3. Infrastructure Voip - gpk659/WoodyToys-Projet-VPS GitHub Wiki

Objectifs :

  • L'entreprise doit être accessible en Voip depuis internet => afin que les clients puissent les contacter.
  • Un appel vers le numéro du directeur aboutit sur le poste de la secrétaire qui peut le rediriger vers le poste du directeur.
  • Le directeur et la secrétaire peuvent appeler tout le monde.
  • Les employés disposent de softphones sur leurs ordinateurs, à l'exception des ouvriers qui ont un poste de téléphonie à leur disposition.
  • Les employés doivent pouvoir communiquer entre eux (intérieur et extérieur de l'entreprise).
  • Les employés doivent disposer d'une boite vocale.

Statuts et fonctions des employés

Service Description
Direction Un numéro qui peut joindre l'intérieur et l'extérieur. Ne peut peut être appeler directement. Les appels sont retransmis à le secrétaire, qui elle peut appeler la direction.
Secretaire Elle dispose d’un PC sur lequel se trouve un soft-phone, lui permettant de contacter n’importe quel service.
Service Comptable Réparti dans deux bureaux, il dispose d’un numéro unique permettant de joindre le premier comptable disponible, ainsi que d’un numéro spécifique par bureau. Les comptables peuvent joindre l’extérieur et tout le monde en interne à l’exception de la direction.
Commerciaux Réunis dans un même bureau, ils peuvent joindre l’extérieur et tout le monde en interne à l’exception de la direction. Ils disposent également de smartphones avec lesquels ils peuvent téléphoner en déplacement.
Ouvriers Ils disposent d’un poste de téléphonie IP dans leur atelier pour joindre les autres départements internes.

Installation

⚠️ Installation de fail2ban pour proteger son vps des attaques !

apt-get update
apt-get install fail2ban

Pour plus de facilité nous avons montés les logs asterisks dans un volume. Ensuite on crée une règle dans fail2ban et on crée un fichier asterisk.conf dans le dossier /etc/fail2ban/actions.d

[Definition]

actionstart =

actionstop =

actioncheck = iptables -n -L FORWARD | grep -q 'DOCKER[ \t]'

actionban = iptables -I DOCKER 1 -s <ip> -j DROP

actionunban = iptables -D DOCKER -s <ip> -j DROP

Ensuite dans le dossier jail.d un autre fichier asterisk.conf

[asterisk-docker]
enabled  = true
filter   = asterisk
action   = docker-action[name=asterisk, protocol=all]
logpath  = /var/log/asterisk/access.log 
maxretry = 5
bantime = 600

Pour l'installation d'un service VoIP, nous nous sommes tournés vers Asterisk.

Nous récuperons l'image via cette commande :

docker pull dougbtv/asterisk

Run the main asterisk container.

sudo docker run \
  --name asterisk \
  --net=host \
  -v /mnt/docker/asterisk/sounds:/var/lib/asterisk/sounds/en/ \
  -v /mnt/docker/asterisk/:/etc/asterisk \
  -v /var/log/asterisk:/var/log/asterisk/ \
  -d -t dougbtv/asterisk14

Les fichiers à modifier sont :

  • users.conf
  • extensions.conf
  • sip.conf
  • iax.conf

Ajout d'utilisateurs

Pour ajouter des utilisateurs, voici un exemple pour créer des utilisateurs dans le fichier users.conf

[commun](!)             ; Nom du template (ici commun)
type=friend             ; Type d'objet SIP (friend = utilisateur)
host=dynamic            ; On peut se connecter à ce compte SIP à partir de n'importe quelle adresse IP
dtmfmode=rfc2833        ; Mode du DTMF Lien https://fr.wikipedia.org/wiki/Code_DTMF
disallow=all            ; Désactiver tous les codecs
allow=ulaw              ;Activer les codecs ulaw
contect=work            ;Contexte (exploité par le fichier extensions.conf)

; Nouveau user
[6001](commun)          ; Numéro sip et template utilisé
fullname = Walter White ; Nom complet de l'utilisateur (ce qui s'affichera sur le téléphone)
username = wwhite       ; Nom de l'utilisateur
secret=secret           ; Mot de passe

Ajout de groupes

Les contextes sont définis dans le fichier extensions.conf.

Les contextes sont définis entre [ et ]. Pensez à toujours inclure au moins le contexte default.

Boites vocales

Les deux fichiers que nous allons éditer pour effectuer ceci sont les fichiers voicemail.conf et extensions.conf

Commençons par éditer le fichier voicemail, voici un exemple

[general]
format=wav49|gsm|wav
;[email protected]
;attach=yes
maxsilence=10
silencethreshold=128
maxlogins=3
sendvoicemail=yes

[work]
6001 => 1234,John DOE
6002 => 1234,Albert DUPONT
  • [work] : Contexte dans lequel se trouvent nos utilisateurs
  • 6001 => : Numéro de l’utilisateur
  • 1234 : Mot de passe pour accéder à la boite vocale
  • John DOE: Prénom et nom de l’utilisateur

Maintenant nous allons éditer le fichier extensions.conf pour configurer deux choses:

  • Le fait que au bout d’un certain temps Asterisk bascule sur la boite vocale de l’utilisateur si celui-ci ne répond pas
  • Création d’une extension pour créer le numéro qui servira à consulter la boite vocale.

Voici donc un exemple de la configuration du fichiers extensions.conf

[general]
static=yes
writeprotect=no
clearglobalvars=no
[globals]
CONSOLE=Console/dsp             ; Console interface for demo
IAXINFO=guest                   ; IAXtel username/password
TRUNK=DAHDI/G2                  ; Trunk interface
TRUNKMSD=1                  ; MSD digits to strip (usually 1 or 0)

[work]
exten => _6XXX,1,Dial(SIP/${EXTEN},20)
exten => _6XXX,2,VoiceMail(${EXTEN}@work)

;Numéro de la boite vocale
exten => 600,1,VoiceMailMain(${CALLERID(num)}@work)

J’ai donc remplacer la ligne

exten => _6XXX,2,Hangup()

Par celle-ci:

exten => _6XXX,2,VoiceMail(${EXTEN}@work)

Cette ligne permet donc de de basculer sur la boîte vocale de l’utilisateur appellé s’il n’y a pas de réponse au bout de 20 secondes.

Décorticons cette ligne:

  • exten => : On déclare l’extensions
  • _6XXX : Toujours les numéros de 6000 à 6999
  • 2 : Priorité
  • VoiceMail: On lance l’application Voicemail
  • ${EXTEN}@work : On récupère la numéro mis en variable et on se connecte a la boite vocale associé du contexte work (comme précisé dans le fichier voicemail.conf)

J’ai aussi rajouté la ligne suivante:

exten => 600,1,VoiceMailMain(${CALLERID(num)}@work)

Cette ligne sert a mettre en place un numéro pour que nos utilisateurs puissent consulter leurs boîtes vocales.

  • exten => : On déclare l’extension
  • 600 : On déclare le numéros 600 comme numéro de messagerie
  • 1 : Priorité
  • VoiceMailMain : On appelle l’application VoiceMailMain
  • ${CALLERID(num)} : On récupère le numéros de l’utilisateur qui appelle pour se connecter à sa boîte vocale
  • @work : on est toujours dans le contexte work

:bulb: A partir de maintenant, si vous faites un reload de votre serveur Asterisk vous pouvez déposer des messages vocaux entre vos utilisateurs et faires en sortes qu’ils consultent leurs messagerie en appelant le 600.