Ansible : Freeswitch role : nouvelle version – v1.1

Je viens de publier la mise à jour du role FreeSwitch pour Ansible, le célèbre moteur d’orchestration. Ce role permet d’installer FreeSwitch à partir des sources sur les systèmes linux basés sur Debian/Ubuntu.

J’ai ajouté la gestion des variables, vous permettant d’utiliser une configuration collant au mieux de vos besoins.

L’utilisation est simple. Il faut dans un premier temps installer Ansible, puis ajouter mwolff44.freeswitch-mw à vos roles. Vous avez un exemple de configuration ci-dessous :

- hosts: all
  vars_files:
    - 'defaults/main.yml'
  tasks:
    - include: 'tasks/main.yml'
  handlers:
    - include: 'handlers/main.yml'

Le repository du role Ansible pour FreeSwitch est hébergé chez Github et est bien sûr validé en intégration continue grâce au service de travis-ci.org.

Si vous voyez des idées d’amélioration, n’hésitez pas.

Howto : comment configurer monit pour surveiller FreeSwitch

Guide détaillant la procédure de configuration de mont pour surveiller FreeSwitch et être alerter en cas de panne.

Il est essentiel de surveiller les services que nous déployons au sein de nos entreprises ou pour nos clients. Je vais vous présenter aujourd’hui comment superviser FreeSwitch avec Monit.

Monit est un outil léger open source (licence AGPL) permettant de superviser et de gérer les systèmes Unix. Il est capable d’exécuter des actions en cas de détection de défaillance.

Monit est disponible sous forme de paquet dans la plupart des distributions. L’installation sur un système basé sur Debian est très simple :

apt-get install monit

pour Centos, ce n’est pas plus compliqué :

yum install monit

La première chose à faire est de vérifier que la variable « START » a bien la valeur yes dans le fichier /etc/default/monit afin de permettre à Monit de démarrer.

Ensuite, la configuration centrale de Monit se fait au sein du fichier monitrc localisé sous /etc/monit. Dans ce fichier, vous pouvez notamment modifier l’adresse email qui recevra les alertes.

Ensuite, les configuration sont dans le répertoire /etc/monit/conf.d . Nous allons créer un fichier nommé freeswitch et y ajouter les lignes suivantes :

check process freeswitch with pidfile /usr/local/freeswitch/run/freeswitch.pid
  start program = "/etc/init.d/freeswitch start"
  stop program  = "/etc/init.d/freeswitch stop"

Nous allons simplement vérifier que FreeSwitch est bien démarré et si ce n’est pas le cas, nous demandons à Monit de le démarrer.

Avant de lancer Monit, vérifier bien que la syntaxe des fichiers de configuration est bonne avec la commande :

monit -t

Vous devez obtenir une belle réponse « Control file syntax OK ».

Nous allons maintenant compléter notre test afin de s’assurer que le process SIP est toujours fonctionnel. Pour cela, nous allons ajouter les lignes suivantes à notre fichier :

check host fs_server with address 127.0.0.1
   if failed port 5060 type udp protocol sip
      with target "localhost:5060" and maxforward 6
   then alert

En cas de dysfonctionnement, Monit vous enverra un mail d’alerte (attention à bien configurer votre mail et serveur dans le fichier monitrc).

Il possible de pousser aussi la supervision plus loin, selon le taux d’utilisation de votre machine, vérifier les process, les fichiers de log … et l’usage de la solution M/Monit permet un monitoring de vos serveurs centralisé simplement.

Ansible : freeswitch role – installation et compilation automatique

Je viens de publier mon nouveau role pour Ansible, le célèbre moteur d’orchestration. Ce role permet d’installer FreeSwitch à partir des sources sur les systèmes linux basés sur Debian/Ubuntu.

Je viens de publier mon nouveau role pour Ansible, le célèbre moteur d’orchestration. Ce role permet d’installer FreeSwitch à partir des sources sur les systèmes linux basés sur Debian/Ubuntu.

Il fait pour vous les tâches longues : installation des dépendances, téléchargement des sources, configuration et compilation, installation de FreeSwitch, sécurisation de l’installation (user et droits) et paramétrage du script de démarrage.

L’utilisation est simple. Il faut dans un premier temps installer Ansible, puis ajouter mwolff44.freeswitch-mw à vos roles. Vous avez un exemple de configuration ci-dessous :

- hosts: all
  vars_files:
    - 'defaults/main.yml'
  tasks:
    - include: 'tasks/main.yml'
  handlers:
    - include: 'handlers/main.yml'

Le repository du role Ansible pour FreeSwitch est hébergé chez Github et est bien sûr validé en intégration continue grâce au service de travis-ci.org.

Si vous voyez des idées d’amélioration, n’hésitez pas.

SIP : comment débugger ?

Introduction

Votre nouveau serveur VoIP est en place. Mais pour une raison que vous ignorez vos appels ne fonctionnent pas comme prévus. Pas de panique, je vais vous présenter quelques outils en ligne de commande qui vont vous aider à déterminer la source du problème. En effet, le protocole SIP n’est pas toujours aussi simple à l’usage que dans la théorie. Les informations fournies par les systèmes de téléphonie Open Source (Asterisk, Freeswitch, Yate …) ou propriétaires ne sont pas toujours d’une grande aide (manque de lisibilité, de souplesse …).

Pourquoi des outils en ligne de commande : l’installation est simple et très rapide, fonctionnent sur toutes les distributions linux, et l’information souhaitée est facilement et rapidement accessible. Il est tout à fait possible d’utiliser ces outils afin de sauvegarder les informations collectées dans un fichier afin de réaliser des analyses plus fines avec des logiciels intégrant une interface graphique, comme le renommé Wireshark.

Pré requis

Vous vous êtes assuré de la bonne configuration de vos comptes SIP (du moins sur le papier), que le routage (diaplan) est correctement fait et que les appels sont possibles (droits d’accès à la route bien affectés, balance financière positive …). Si pour vous, vous ne voyez pas de loup à cette étape, nous allons entrer dans le dur.

Procédure

Je vais maintenant vous expliquer comment trouver de manière efficace la source du problème. Nous allons du plus général vers le plus détaillé. Tout d’abord, vérifier que les échanges de messages SIP se passent comme prévus (je ne vais pas les rappeler ici, je vous laisse ressortir vos cours. J’écrirais peut-être un de ces jours un article les détaillants) : enregistrement, établissement d’un appel, raccroché de l’appel. Si une des étapes est manquantes, il va falloir trouver des informations détaillées. Nous allons voir ces étapes dans le paragraphe suivant.

Comment tracer les messages SIP

Nous allons dans un premier temps vérifier que les messages SIP échanger sont conforment. Nous n’avons pas besoin de tout le détail, juste du type de message SIP (100, 180, 407, 404 …). On va ainsi pouvoir voir très simplement à quelle étape le problème se pose. Le serveur distant souhaite que le compte soit enregistrer avant d’autoriser un appel (merde, on m’avait dit que c’était une authentification par IP ?), le serveur distant vous répond par un bon 404 ? …

Pour cela, je vais utiliser tshark, outil renommé de tout bon administrateur linux. Il utilise la librairie pcap pour capturer le traffic de l’interface déclarée (avec l’option -i) et affiche (ou enregistre dans un fichier avec l’option -w) les informations décodées de paquets capturés. Les fichiers de capture créés peuvent être lus par Wireshark.

Nous allons utiliser toute la puissance de filtrage de tshark afin de trouver l’information souhaitée. Par exemple, il faut vérifier que l’invite correspond bien au format attendu.

tshark -i eth0 -R "ip.addr==78.x.y.10 and sip.CSeq.method eq INVITE" (-V)

Si vous souhaitez capturer l’ensemble du traffic SIP d’une adresse ip spécifique et d’un port spécifique :

tshark -i eth0 -R "ip.addr==78.x.y.10 and port==5060" -z sip,stat

Un autre outil fort utile peut être utilisé, j’ai nommé tcpdump.

tcpdump est un analyseur de paquet. Il utilise libpcap, une librairie C/C++ afin de capturer les paquets.  Vous devez avoir les droits de super utilisateur afin de pouvoir l’utiliser.

Nous allons voir le détail de la commande à utiliser :

-i eth0 — le nom de l’interface à écouter

-n — afin de ne pas résoudre les hostnames

host 1.2.3.4 — filtre le traffic sur cette adresse IP (peut être remplacé par net pour capturer un réseau ex : net 1.2.3.0/24)

proto udp — en général on utilise de l’udp

-w /tmp/file.pcap — pour enregistrer la capture dans un fichier. Mais comme on souhaite avoir le retour en console, on ne vas pas ajouter cette option.

Vous trouverez le détail des options de la commande de tcpdump sur cette page.

Conclusion

Nous venons de voir de manière simple comment débugger un chance SIP entre 2 machines. Vous pouvez utiliser la capture afin de l’importer dans un GUI comme Wireshark afin de réaliser des recherches plus poussées, afficher une vue graphique des échanges ou générer des statistiques.

Il est aussi possible d’utiliser d’autres outils comme ngrep. Je vous présenterai dans un prochain article l’outil HOMER.

FreeSWITCH : problème avec git « merge error »

Vous rencontrez une erreur « merge error » lorsque vous souhaitez faire un pull sur la branche 1.4 de FreeSWITCH. Pas de panique, l’équipe de développement FreeSWITCH a réalisée quelques modifications. Pour corriger cette erreur impactant votre repo local, il vous suffit d’entrer cette commande :

git reset --hard origin/v1.4

Vous pouvez installer maintenant la dernière version stable 1.4.

Freeswitch : sortie de la version stable 1.4 (la 1.4.4 pour être précis)

Sortie de la version stable 1.4 de Freeswitch, célèbre plate-forme de téléphonie VoIP et TDM open source.

L’équipe de Freeswitch vient de libérer la première version stable de la branche 1.4, la 1.4.4, les autres étant des versions beta.

Les nouveautés sont nombreuses, les principales étant :

  • WebRTC
  • Séparation de la stack RTP du SIP
  • Suppression de nombreuses librairies tierces
  • Support des nouvelles versions de librairies comme SQLite, OpenSSL …
  • Optimisation du code apportant une plus grande stabilité et fiabilité.

La branche 1.2 va être déclarée en fin de vie. Aussi, je vous invite à tester vos applications avec la branche 1.4 dès maintenant et de planifier les migrations.

Pour ma part, PyFreeBilling est compatible avec la branche 1.4 depuis quelques mois déjà, donc ceux qui veulent migrer leur version de FreeSwitch peuvent le faire sans arrière pensée.

[PyFreeBilling] version 1.3

La nouvelle version du logiciel open source (GPL) de facturation et de routage VoIP basé sur Freeswitch, PyFreeBilling vient de sortir. La grosse nouveauté est la gestion des numéros entrants (SDA ou DID).

Je vous laisse découvrir les autres news sur le site du projet.

Pyfreebilling : lancement du site

Le site de Pyfreebilling , softswitch voip et plateforme de facturation pour l’activité d’opérateur Wholesale vient d’être lancé. Vous y trouverez une présentation du projet, des screenshots (je vais en ajouter d’autres, pas d’inquiétude), le détail des mise à jour et très important la licence du projet (GPL v3). Une section blog a aussi été créée et bien entendu un lien vers le repo bitbucket.

Et maintenant, ben c’est la nouvelle mise à jour, la 1.3 (vous avez le détail sur le site 😉 )

Pourquoi PyFreeBilling est un logiciel libre ?

Comment fonctionne le logiciel libre ? vous y trouverez les raisons de mon choix de la licence GPL pour PyFreeBilling.

On me pose souvent la question, pourquoi avoir choisi une licence libre pour PyFreeBilling. Pour rappel, PyFreeBilling est un logiciel permettant à un opérateur VoIP d’acheter et de revendre des minutes téléphoniques (et vidéo) s’appuyant sur le moteur Freeswitch.

Etant adhérant à l’APRIL, j’ai découvert une plaquette parfaitement réalisée expliquant précisément les raisons de mon choix.

comment marche logiciel libre

 

PyFreeBilling : new UI

I proud to annonce the release of the new UI. I take care of users and customers remarks and you will find now a more friendly menu and nice UI : less clicks, better looking, quicker menu.

Check on bitbucket the last sources.

Some captures :

New customer menu.

pyfreebilling customer detail

Customer detail view, with left nav.

Pyfreebilling customer rates

And customer rates.

Have a nice day.

Matt