Taille: 211
Commentaire:
|
Taille: 12040
Commentaire:
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
Décrire ici « Asterisk ». voir pour l'instant : * la page AncienWiki:Asterisk sur l'ancien wiki * ["/Stats"] : mise en place d'un système de statistiques pour Asterisk |
Cette page présente l'installation du logiciel Asterisk qui est un commutateur téléphonique privé (PABX) que nous utilisons à l'AUF pour notre système de voix sur IP (["VoIP"]). = Infrastructure matériel et réseau nécessaire = Installer une machine Debian sur la DMZ. Dans un premier temps, si possible, prendre une machine qui ne fait rien d'autre, cela permettrait de voir la charge (une petite machine de test suffit) et d'éviter de casser d'autres choses autour. Une fois que tout sera testé, vous pourrez déployer sur une machine de production qui fait éventuellement autre chose. La machine doit : * être accessible directement depuis le réseau local 10.x.x.x (pas de NAT), au moins pour les protocoles IAX (4569/UDP), SIP (5060/UDP) et RTP (7000 à 8000/UDP, selon les clients SIP que vous utilisez) * pouvoir acceder directement au réseau local 10.x.x.x, au moins pour le protocole IAX (4569/UDP). Si vous utilisez des clients SIP, le plus simple est de permettre l'envoie de paquet vers tous les ports UDP. Il faut en effet que le serveur puisse faire sonner les téléphones des postes clients... * recevoir et envoyer des paquets IAX vers Internet Note : si votre DMZ est en IP privée, ajoutez un DNAT vers cette machine pour le protocole IAX (4569/UDP). Note 2 : suivant les clients SIP que vous utilisez, vous pourrez fixer sur ces clients les ports SIP et RTP. Avec x-lite par exemple on peut forcer 5060 et 8000, ce qui simplifie un peu les règles de pare-feu. Ceci étant, avoir des clients IAX simplifie beaucoup la vie ! Si possible, '''évitez d'utiliser le protocole SIP'''. = Installation du système Asterisk de base = Debian Sarge ne dispose pas de la dernière version d'Asterisk, mais un backport est facile à réaliser. Nous l'avons fait, et pour installer Asterisk il faut : 1. Ajouter la source de paquets suivante dans le fichier `/etc/apt/sources.list`: {{{ # Source pour le système Asterisk à ajouter dans /etc/apt/sources.list : deb http://voip.ca.auf.org/asterisk ./ }}} 1. Comme après toute modification de `sources.list`, mettre à jour la liste des paquets disponibles dans les sources : {{{ # aptitude update }}} 1. Installer asterisk avec {{{ # aptitude install asterisk # aptitude install asterisk-prompt-fr # (optionnel, pour des messages en français) }}} Il faut maintenant le configurer pour l'intégrer au réseau VoIP de l'AUF. = Création d'une clé privée / clé publique pour l'interconnexion = Afin d'être intégré au système VoIP de l'AUF, vous devez disposer d'un couple de clés, privée et publique. La clé publique sera diffusée sur l'ensemble des autres noeuds VoIP de l'Agence afin qu'ils vous autorisent à appeler leurs postes. La clé privée sera, comme son nom l'indique, connue de votre serveur Asterisk seul. '''ATTENTION''' : si vous avez déjà vos clés Asterisk (par exemple dans le cas d'une migration ou d'une ré-installation), conservez-les ! Faites-en une copie quelque part. 1. Pour générer vos clés : {{{ $ /usr/sbin/astgenkey -q -n auf-implantation }}} Note : `astgenkey` nécessite `openssl`. Si astgenkey ne marche pas, faites un `aptitude install openssl` 1. Puis copiez vos clés pour que Asterisk les prennent en compte : {{{ # cp auf-implantation.pub auf-implantation.key /var/lib/asterisk/keys # chown -R root.asterisk /var/lib/asterisk/keys/* # chmod 644 /var/lib/asterisk/keys/*.pub # chmod 640 /var/lib/asterisk/keys/*.key }}} Conservez précieusement le fichier `auf-implantation.key` : sans cette clé privée vous ne pourrez plus appeler d'autres systèmes ! Indiquez votre clé publique sur ["/Clefs"] et prévenez-moi (ThomasNoël) afin que je l'ajoute à la liste des clés à distribuer. Notez bien : tant que votre clé publique n'a pas été distribuée vous ne pourrez pas appeler les sites distants car ils refuseront votre identification. = Interconnexion : installation de la configuration AUF d'Asterisk = Nous avons créée un paquet `asterisk-config-auf` qui va configurer pour vous toute la base du système. Il suffit donc de faire : {{{ # aptitude install asterisk-config-auf }}} Le système va alors vous demander le nom de votre noeud VoIP. Nous avons décidé de nommer les noeuds `auf-implantation`, où implantation peut être simplement le nom de la ville, ou bien un nom plus distinctif s'il y a plusieurs serveurs VoIP AUF dans cette ville. Quelques exemples : `auf-dakar`, `auf-paris`, `auf-bap1` et `auf-bap2`, `auf-caimaurice`, etc. Attention, choisissez bien votre nom car il sera compliqué de le changer ensuite. Quelques explications techniques sur le paquet `asterisk-config-auf` : - Ce paquet remplace `asterisk-config` qui est la configuration basique livrée d'Asterisk. - Il adapte les fichiers `/etc/asterisk/sip.conf`, `iax.conf` et `extensions.conf` à nos principes (codecs utilisés, langue, etc) - Il génère des fichiers `/etc/asterisk/auf/sip.local`, `iax.local` et `extensions.local` de base, dans lesquels il vous faudra ajouter la configuration des postes clients - Il dépend de `asterisk-config-auf-connexions` qui contient tout ce qui est nécessaire à l'interconnexion des noeuds (les clé publiques et préfixes correspondants) = Lancement du serveur = 1. Activer le démarrage automatique d'asterisk au démarrage de la machine dans `/etc/default/asterisk` : {{{ # A modifier dans /etc/default/asterisk : RUNASTERISK=yes }}} 1. Lancer le serveur : {{{ # /etc/init.d/asterisk start Starting Asterisk PBX: asterisk. }}} = Premiers tests = '''draft, à finir''' : connexion avec le compte "test" (mot de passe "test"), essayer d'appeler le 600. Si la clé publique a été distribuée auparavant, essayer d'appeler 0033600 (echo Paris) et 001600 (echo Montreal) et demander à quelqu'un d'essayer d'appeler votre echo puis votre poste (00xxx100 ou 00xxxtest). = Configuration des comptes clients = Pour chaque poste client qui sera installé dans votre implantation (softphone ou téléphone IP), vous devez créer un compte. Tout se passe dans `/etc/asterisk/auf`. Les fichiers dont le nom se termine par `.local` sont ceux que vous devez adapter. 1. `/etc/asterisk/auf/sip.local` : les comptes SIP locaux 1. `/etc/asterisk/auf/iax.local` : les comptes IAX locaux. Par défaut, c'est un lien symbolique vers `sip.local` car les comptes IAX et SIP sont similaires. Cependant, si un jour vous avez besoin d'une configuration différente, faites-en un fichier autonome... et expliquez-nous pourquoi vous avez eu besoin de faire la distinction (il y a des options qui différent). 1. `/etc/asterisk/auf/extensions.local` : les associations entre numéro de téléphone et compte local à appeler. Quand vous touchez à ces fichiers, n'oubliez pas ensuite de faire un `/etc/init.d/asterisk reload`. = Annexes = == Annexe 1 : suivi et débogage du serveur == Les commandes de base : * démarrer le serveur : `/etc/init.d/asterisk start` (mais cela est normalement fait au boot de la machine) * si vous avez modifié la configuration, demandez à Asterisk de la relire : `/etc/init.d/asterisk reload`. Attention : ne faites JAMAIS de `restart` sinon vous coupez les communications en cours !! Asterisk dispose d'un '''mode console''', en ligne de commande, très pratique et qu'il est conseillé d'approfondir si vous voulez vraiment vous amuser avec Asterisk. Ce mode console est disponible avec `asterisk -r` ou `rasterisk`. En ajoutant l'option `-v` vous pouvez de plus déboguer en direct (affichage des logs sur la console). Plus vous mettez de `-v` plus le niveau de débogage est élevé. Pour bien comprendre comment fonctionne Asterisk il est donc conseiller de lancer carrément la commande suivante : {{{ $ sudo asterisk -rvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv == Parsing '/etc/asterisk/asterisk.conf': Found == Parsing '/etc/asterisk/extconfig.conf': Found Asterisk , Copyright (C) 1999 - 2005 Digium. Written by Mark Spencer <markster@digium.com> ========================================================================= Connected to Asterisk currently running on gatekeeper (pid = 29958) Verbosity is at least 80 serveur-voip*CLI> }}} Vous êtes alors en mode ligne de commande. Ca fonctionne un peu comme un Cisco. Tapez `help` pour avoir la liste des commandes, la touche [Tab] ou `?` pour la complétion automatique, etc. Une commande extrémement utile est `reload` : {{{ gatekeeper*CLI> reload == Parsing '/etc/asterisk/extconfig.conf': Found (...) == Parsing '/etc/asterisk/cdr_pgsql.conf': Found gatekeeper*CLI> }}} qui va demander à asterisk de relire tous ses fichiers de configuration. Vous pouvez être plus précis en ne demandant que la recharge de certains modules, par exemple : * `reload pbx_config.so` rechargera le fichier extensions.conf (c'est à dire, grosso modo le plan de numérotation des postes) * `reload chan_iax2.so` ne re-chargera que ce qui concerne IAX == Annexe 2 : quand tout est cassé, réinstallation complète d'Asterisk == 1. Suppression complète (n'oubliez pas de copier au moins votre clé privée !) : {{{ # /etc/init.d/asterisk stop # mkdir -p /root/asterisk # cp -a /etc/asterisk /root/asterisk/etc # cp -a /var/lib/asterisk/keys /root/asterisk/keys # (on fait une copie des clés) # apt-get --purge remove asterisk asterisk-sounds-main # apt-get --purge remove asterisk-config-auf asterisk-config-auf-connexions # rm -rf /etc/asterisk /var/lib/asterisk /var/spool/asterisk /var/run/asterisk }}} 1. Reinstallation : {{{ # aptitude install asterisk asterisk-config-auf }}} 1. Reconfiguration : reprendre les clés et les configurations des postes clients (sip.local, iax.local, extensions.local) == Annexe 4: installation d'un timer pour Asterisk (notamment pour ""MeetMe"") == '''Note''' : avec un peu de chance, cela ne sera plus nécessaire en Asterisk 1.4. Espérons ! Pour certaines utilisations, Asterisk a besoin d'un système de timing précis. C'est le cas pour le chouette système de conférence !MeetMe (voir `/etc/asterisk/meetme.conf`). Il existe des timers matériels et des émulations logicielles. Nous allons utiliser cette dernière solution et installer le module `ztdummy` (un "faux périphérique zaptel"). La procédure la suivante : 1. vérifier que vous avez un noyau 2.6 (c'est une bonne idée car le 2.6 gère mieux les problèmatiques temps réel). Si vous ne compilez pas sur la machine où est installé Asterisk (ce qui serait mieux), vérifiez que vous avez bien exactement le même noyau sur les deux machines, et que la machine où vous allez compiler le module possède la source "`deb http://voip.ca.auf.org/asterisk ./`" dans son sources.list). 1. installer les sources du module : {{{ # aptitude install zaptel-source }}} 1. compiler les sources et installer le paquet : {{{ # module-assistant build zaptel ... patienter, ça peut durer quelques minutes. # module-assistant install zaptel (si vous avez compilé sur la machine Asterisk) }}} Note : si vous avec compilé sur une autre machine, copiez `/usr/src/zaptel-module*.deb` sur la machine avec Asterisk puis installez le paquet avec `dpkg -i zaptel-module-*.deb` 1. incorporer le module dans le noyau : {{{ # modprobe ztdummy }}} 1. vous devez voir une ligne `Zapata Telephony Interface Registered on major 196` dans les logs (visible avec `dmesg | tail`). 1. faites un test de !MeetMe si possible (vous n'aviez pas installé ztdummy sans savoir ce qu'était !MeetMe, n'est-ce pas ? ;) ) 1. si tout marche, ajouter `ztdummy` à la liste des modules à incorporer au noyau lors du démarrage du serveur (dans `/etc/modules`) == Annexe 4 : statistiques == Voir la sous page ["/Stats"] : mise en place d'un système de statistiques pour Asterisk |
Cette page présente l'installation du logiciel Asterisk qui est un commutateur téléphonique privé (PABX) que nous utilisons à l'AUF pour notre système de voix sur IP (["VoIP"]).
Infrastructure matériel et réseau nécessaire
Installer une machine Debian sur la DMZ. Dans un premier temps, si possible, prendre une machine qui ne fait rien d'autre, cela permettrait de voir la charge (une petite machine de test suffit) et d'éviter de casser d'autres choses autour. Une fois que tout sera testé, vous pourrez déployer sur une machine de production qui fait éventuellement autre chose.
La machine doit :
- être accessible directement depuis le réseau local 10.x.x.x (pas de NAT), au moins pour les protocoles IAX (4569/UDP), SIP (5060/UDP) et RTP (7000 à 8000/UDP, selon les clients SIP que vous utilisez)
- pouvoir acceder directement au réseau local 10.x.x.x, au moins pour le protocole IAX (4569/UDP). Si vous utilisez des clients SIP, le plus simple est de permettre l'envoie de paquet vers tous les ports UDP. Il faut en effet que le serveur puisse faire sonner les téléphones des postes clients...
- recevoir et envoyer des paquets IAX vers Internet
Note : si votre DMZ est en IP privée, ajoutez un DNAT vers cette machine pour le protocole IAX (4569/UDP).
Note 2 : suivant les clients SIP que vous utilisez, vous pourrez fixer sur ces clients les ports SIP et RTP. Avec x-lite par exemple on peut forcer 5060 et 8000, ce qui simplifie un peu les règles de pare-feu. Ceci étant, avoir des clients IAX simplifie beaucoup la vie ! Si possible, évitez d'utiliser le protocole SIP.
Installation du système Asterisk de base
Debian Sarge ne dispose pas de la dernière version d'Asterisk, mais un backport est facile à réaliser. Nous l'avons fait, et pour installer Asterisk il faut :
Ajouter la source de paquets suivante dans le fichier /etc/apt/sources.list:
# Source pour le système Asterisk à ajouter dans /etc/apt/sources.list : deb http://voip.ca.auf.org/asterisk ./
Comme après toute modification de sources.list, mettre à jour la liste des paquets disponibles dans les sources :
# aptitude update
- Installer asterisk avec
# aptitude install asterisk # aptitude install asterisk-prompt-fr # (optionnel, pour des messages en français)
Il faut maintenant le configurer pour l'intégrer au réseau VoIP de l'AUF.
Création d'une clé privée / clé publique pour l'interconnexion
Afin d'être intégré au système VoIP de l'AUF, vous devez disposer d'un couple de clés, privée et publique. La clé publique sera diffusée sur l'ensemble des autres noeuds VoIP de l'Agence afin qu'ils vous autorisent à appeler leurs postes. La clé privée sera, comme son nom l'indique, connue de votre serveur Asterisk seul.
ATTENTION : si vous avez déjà vos clés Asterisk (par exemple dans le cas d'une migration ou d'une ré-installation), conservez-les ! Faites-en une copie quelque part.
- Pour générer vos clés :
$ /usr/sbin/astgenkey -q -n auf-implantation
Note : astgenkey nécessite openssl. Si astgenkey ne marche pas, faites un aptitude install openssl
- Puis copiez vos clés pour que Asterisk les prennent en compte :
# cp auf-implantation.pub auf-implantation.key /var/lib/asterisk/keys # chown -R root.asterisk /var/lib/asterisk/keys/* # chmod 644 /var/lib/asterisk/keys/*.pub # chmod 640 /var/lib/asterisk/keys/*.key
Conservez précieusement le fichier auf-implantation.key : sans cette clé privée vous ne pourrez plus appeler d'autres systèmes !
Indiquez votre clé publique sur ["/Clefs"] et prévenez-moi (ThomasNoël) afin que je l'ajoute à la liste des clés à distribuer. Notez bien : tant que votre clé publique n'a pas été distribuée vous ne pourrez pas appeler les sites distants car ils refuseront votre identification.
Interconnexion : installation de la configuration AUF d'Asterisk
Nous avons créée un paquet asterisk-config-auf qui va configurer pour vous toute la base du système. Il suffit donc de faire :
# aptitude install asterisk-config-auf
Le système va alors vous demander le nom de votre noeud VoIP. Nous avons décidé de nommer les noeuds auf-implantation, où implantation peut être simplement le nom de la ville, ou bien un nom plus distinctif s'il y a plusieurs serveurs VoIP AUF dans cette ville. Quelques exemples : auf-dakar, auf-paris, auf-bap1 et auf-bap2, auf-caimaurice, etc. Attention, choisissez bien votre nom car il sera compliqué de le changer ensuite.
Quelques explications techniques sur le paquet asterisk-config-auf :
- Ce paquet remplace asterisk-config qui est la configuration basique livrée d'Asterisk. - Il adapte les fichiers /etc/asterisk/sip.conf, iax.conf et extensions.conf à nos principes (codecs utilisés, langue, etc) - Il génère des fichiers /etc/asterisk/auf/sip.local, iax.local et extensions.local de base, dans lesquels il vous faudra ajouter la configuration des postes clients - Il dépend de asterisk-config-auf-connexions qui contient tout ce qui est nécessaire à l'interconnexion des noeuds (les clé publiques et préfixes correspondants)
Lancement du serveur
Activer le démarrage automatique d'asterisk au démarrage de la machine dans /etc/default/asterisk :
# A modifier dans /etc/default/asterisk : RUNASTERISK=yes
- Lancer le serveur :
# /etc/init.d/asterisk start Starting Asterisk PBX: asterisk.
Premiers tests
draft, à finir : connexion avec le compte "test" (mot de passe "test"), essayer d'appeler le 600. Si la clé publique a été distribuée auparavant, essayer d'appeler 0033600 (echo Paris) et 001600 (echo Montreal) et demander à quelqu'un d'essayer d'appeler votre echo puis votre poste (00xxx100 ou 00xxxtest).
Configuration des comptes clients
Pour chaque poste client qui sera installé dans votre implantation (softphone ou téléphone IP), vous devez créer un compte. Tout se passe dans /etc/asterisk/auf. Les fichiers dont le nom se termine par .local sont ceux que vous devez adapter.
/etc/asterisk/auf/sip.local : les comptes SIP locaux
/etc/asterisk/auf/iax.local : les comptes IAX locaux. Par défaut, c'est un lien symbolique vers sip.local car les comptes IAX et SIP sont similaires. Cependant, si un jour vous avez besoin d'une configuration différente, faites-en un fichier autonome... et expliquez-nous pourquoi vous avez eu besoin de faire la distinction (il y a des options qui différent).
/etc/asterisk/auf/extensions.local : les associations entre numéro de téléphone et compte local à appeler.
Quand vous touchez à ces fichiers, n'oubliez pas ensuite de faire un /etc/init.d/asterisk reload.
Annexes
Annexe 1 : suivi et débogage du serveur
Les commandes de base :
démarrer le serveur : /etc/init.d/asterisk start (mais cela est normalement fait au boot de la machine)
si vous avez modifié la configuration, demandez à Asterisk de la relire : /etc/init.d/asterisk reload. Attention : ne faites JAMAIS de restart sinon vous coupez les communications en cours !!
Asterisk dispose d'un mode console, en ligne de commande, très pratique et qu'il est conseillé d'approfondir si vous voulez vraiment vous amuser avec Asterisk. Ce mode console est disponible avec asterisk -r ou rasterisk. En ajoutant l'option -v vous pouvez de plus déboguer en direct (affichage des logs sur la console). Plus vous mettez de -v plus le niveau de débogage est élevé. Pour bien comprendre comment fonctionne Asterisk il est donc conseiller de lancer carrément la commande suivante :
$ sudo asterisk -rvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv == Parsing '/etc/asterisk/asterisk.conf': Found == Parsing '/etc/asterisk/extconfig.conf': Found Asterisk , Copyright (C) 1999 - 2005 Digium. Written by Mark Spencer <markster@digium.com> ========================================================================= Connected to Asterisk currently running on gatekeeper (pid = 29958) Verbosity is at least 80 serveur-voip*CLI>
Vous êtes alors en mode ligne de commande. Ca fonctionne un peu comme un Cisco. Tapez help pour avoir la liste des commandes, la touche [Tab] ou ? pour la complétion automatique, etc.
Une commande extrémement utile est reload :
gatekeeper*CLI> reload == Parsing '/etc/asterisk/extconfig.conf': Found (...) == Parsing '/etc/asterisk/cdr_pgsql.conf': Found gatekeeper*CLI>
qui va demander à asterisk de relire tous ses fichiers de configuration. Vous pouvez être plus précis en ne demandant que la recharge de certains modules, par exemple :
reload pbx_config.so rechargera le fichier extensions.conf (c'est à dire, grosso modo le plan de numérotation des postes)
reload chan_iax2.so ne re-chargera que ce qui concerne IAX
Annexe 2 : quand tout est cassé, réinstallation complète d'Asterisk
- Suppression complète (n'oubliez pas de copier au moins votre clé privée !) :
# /etc/init.d/asterisk stop # mkdir -p /root/asterisk # cp -a /etc/asterisk /root/asterisk/etc # cp -a /var/lib/asterisk/keys /root/asterisk/keys # (on fait une copie des clés) # apt-get --purge remove asterisk asterisk-sounds-main # apt-get --purge remove asterisk-config-auf asterisk-config-auf-connexions # rm -rf /etc/asterisk /var/lib/asterisk /var/spool/asterisk /var/run/asterisk
- Reinstallation :
# aptitude install asterisk asterisk-config-auf
- Reconfiguration : reprendre les clés et les configurations des postes clients (sip.local, iax.local, extensions.local)
Annexe 4: installation d'un timer pour Asterisk (notamment pour ""MeetMe"")
Note : avec un peu de chance, cela ne sera plus nécessaire en Asterisk 1.4. Espérons !
Pour certaines utilisations, Asterisk a besoin d'un système de timing précis. C'est le cas pour le chouette système de conférence MeetMe (voir /etc/asterisk/meetme.conf). Il existe des timers matériels et des émulations logicielles. Nous allons utiliser cette dernière solution et installer le module ztdummy (un "faux périphérique zaptel"). La procédure la suivante :
vérifier que vous avez un noyau 2.6 (c'est une bonne idée car le 2.6 gère mieux les problèmatiques temps réel). Si vous ne compilez pas sur la machine où est installé Asterisk (ce qui serait mieux), vérifiez que vous avez bien exactement le même noyau sur les deux machines, et que la machine où vous allez compiler le module possède la source "deb http://voip.ca.auf.org/asterisk ./" dans son sources.list).
- installer les sources du module :
# aptitude install zaptel-source
- compiler les sources et installer le paquet :
# module-assistant build zaptel ... patienter, ça peut durer quelques minutes. # module-assistant install zaptel (si vous avez compilé sur la machine Asterisk)
Note : si vous avec compilé sur une autre machine, copiez /usr/src/zaptel-module*.deb sur la machine avec Asterisk puis installez le paquet avec dpkg -i zaptel-module-*.deb
- incorporer le module dans le noyau :
# modprobe ztdummy
vous devez voir une ligne Zapata Telephony Interface Registered on major 196 dans les logs (visible avec dmesg | tail).
faites un test de MeetMe si possible (vous n'aviez pas installé ztdummy sans savoir ce qu'était MeetMe, n'est-ce pas ?
)
si tout marche, ajouter ztdummy à la liste des modules à incorporer au noyau lors du démarrage du serveur (dans /etc/modules)
Annexe 4 : statistiques
Voir la sous page ["/Stats"] : mise en place d'un système de statistiques pour Asterisk