Après quelques tâtonnements, voici la configuration contenue dans /etc/asterisk/sip.conf permettant à Asterisk d’accéder au service SIP offert par Freephonie :

[general]
defaultexpiry=1800
register => 0951727841:monsecret9@freephonie.net
dtmfmode=auto

[freephonie-out]
type=peer
host=freephonie.net
qualify=yes
username=0951727841
fromuser=0951727841
secret=monsecret
disallow=all
allow=alaw

Le codec G711 alaw est ma préférence personnelle : la qualité sonore avant tout en attendant G722. D’autes préférerons le libre et moderne speex ou l’universel gsm dont le rapport qualité/débit est meilleur.

Je parle de tâtonnements parce que j’ai au départ omis le contenu de la section [general] sus-citée. Le ‘register =>’ est toujours indispensable, mais dans le cas de Freephonie il faut également allonger le délai d’expiration par défaut pour accommoder les lenteurs de l’enregistrement auprès du serveur freephonie.net. Résultat lors d’une initiation de session SIP sans ces éléments de configuration, /var/log/asterisk/messages m’affichait ceci :

[Jun 2 23:10:30] NOTICE[13456] chan_sip.c: Peer ‘freephonie-out’ is now Reachable. (46ms / 2000ms)
[Jun 2 23:11:18] WARNING[13456] chan_sip.c: Received response: “Forbidden” from ‘”Jean-Marc Liotier” <sip:0951727841@81.57.93.188>;tag=as66e575c5’

Et vue par le salvateur Wireshark, la session SIP était comme suit :

81.57.93.188 212.27.52.5 Request: INVITE sip:0493498229@freephonie.net, with session description
212.27.52.5 81.57.93.188 Status: 100 Trying
212.27.52.5 81.57.93.188 Status: 403 not registered
81.57.93.188 212.27.52.5 Request: ACK sip:0493498229@freephonie.net

Avec la configuration ci-dessus, ces problèmes ont disparu. Il ne reste plus qu’à ajouter une route au contexte général dans /etc/asterisk/extensions.conf et vous pouvez émettre des appels. Un exemple simpliste mais fonctionnel qui routera vers Free tous les numéros commençant par zéro :

exten => _0.,1,Dial(SIP/freephonie-out/${EXTEN})

Seule mouche persistante dans le potage : les keepalives moisis transmis toutes les trois secondes par le Cirpack de Free – un bug de leur part connu depuis plus de deux ans. Free et/ou Cirpack ne font apparemment rien pour corriger ce défaut et le projet Asterisk a pour doctrine de ne pas accomoder les comportements déviants de ses pairs – les standards il n’y a que ça de vrai.

La solution pour ne plus entendre ce bavardage aussi déplorable qu’inoffensif à travers un lien de 17 Mb/s est probablement une simple règle iptablesque je publierai dès que je l’aurais mise au point. D’ici que les logs retrouvent la plénitude de leur silence originel il faudra se contenter de ‘grep -v’. Du côté de Wireshark le filtre d’affichage “!(data.data == 43:69:72:70:61:63:6b:20:4b:65:65:70:41:6c:69:76:65:20:50:61:63:6b:65:74:00:00:00:00:00:00:00:00)” restitue la lisibilité du dialogue.