Auteur Sujet: [CONFIGURATION SIP SFR] sur Free PBX - Fonctionnel  (Lu 43 fois)

0 Membres et 1 Invité sur ce sujet

SepuLeVrai68

  • Abonné SFR fibre FttH
  • *
  • Messages: 33
  • 68
Configuration d’un trunk SFR IMS sur FreePBX 16 / Asterisk PJSIP

Bonjour à tous,

Je partage ici une configuration fonctionnelle permettant d’utiliser une ligne fixe SFR IMS directement sur FreePBX, sans passer par la gateway/box opérateur pour la partie voix.

Configuration validée sur :

  • FreePBX : 16.0.45
  • Asterisk : 15.7.4
  • Trunk : PJSIP
  • Transport : UDP
  • Appels sortants : OK
  • Appels entrants : OK
  • Audio bidirectionnel : OK

Attention :
Cette configuration suppose que vous avez récupéré les vrais identifiants SIP/IMS de votre ligne. Sans le mot de passe SIP IMS réel, la configuration ne pourra pas s’enregistrer.

Les informations personnelles sont volontairement anonymisées dans ce tutoriel.

----------------------------------------

1. Informations nécessaires côté opérateur

Il faut disposer au minimum des éléments suivants :

Numéro public au format E.164 : +33XXXXXXXXX
Numéro national               : 0XXXXXXXXX
Identifiant IMS / Auth User   : NDI0XXXXXXXX.ALL.THD@sfr.fr
Mot de passe SIP              : ***************
Domaine IMS / Realm           : ims.mnc010.mcc208.3gppnetwork.org

P-CSCF / Outbound Proxy :
trappes.p-cscf.sfr.net:5062
mitry.p-cscf.sfr.net:5062
corbas.p-cscf.sfr.net:5062

Dans la suite du tutoriel, j’utilise les variables suivantes :

<NUMERO_E164>       = +33XXXXXXXXX
<NUMERO_NATIONAL>   = 0XXXXXXXXX
<AUTH_USERNAME_IMS> = NDI0XXXXXXXX.ALL.THD@sfr.fr
<SIP_PASSWORD>      = mot de passe SIP IMS
<DOMAIN_IMS>        = ims.mnc010.mcc208.3gppnetwork.org

----------------------------------------

2. Préparation FreePBX

Avant de modifier quoi que ce soit :

  • Faire un backup FreePBX.
  • Faire un snapshot de la VM si FreePBX est virtualisé.
  • Vérifier que PJSIP est actif.
  • Vérifier que le port PJSIP UDP utilisé est bien 5060.

Dans FreePBX :

Settings > Asterisk SIP Settings

Dans la partie NAT, renseigner :

External Address : votre IP publique ou votre FQDN public
Local Networks   : vos réseaux LAN/VLAN internes

Exemple :

External Address : X.X.X.X
Local Networks   : 192.168.1.0/24
                  192.168.2.0/24

Vérifier également que le transport UDP est bien actif :

Transport : 0.0.0.0-udp
Port      : 5060

----------------------------------------

3. Création du trunk PJSIP SFR IMS

Aller dans :

Connectivity > Trunks > Add Trunk > Add SIP (chan_pjsip) Trunk

Nommer le trunk :

SFR_IMS

Important :
Une fois le trunk créé et fonctionnel, éviter de le renommer.

FreePBX/Asterisk peut générer plusieurs objets PJSIP liés au nom du trunk :

  • Endpoint
  • AOR
  • Auth
  • Registration
  • Identify

Un renommage peut créer des incohérences entre ces objets.

----------------------------------------

3.1. Onglet General du trunk

Renseigner :

Trunk Name        : SFR_IMS
Outbound CallerID : <NUMERO_E164>
CID Options       : Force Trunk CID
Maximum Channels  : 1 ou 2 selon le besoin

Exemple anonymisé :

Trunk Name        : SFR_IMS
Outbound CallerID : +33XXXXXXXXX
CID Options       : Force Trunk CID
Maximum Channels  : 1

----------------------------------------

3.2. Onglet pjsip Settings > General

Renseigner exactement :

Username         : <NUMERO_E164>
Auth Username    : <AUTH_USERNAME_IMS>
Secret           : <SIP_PASSWORD>

Authentication   : Outbound
Registration     : Send

SIP Server       : ims.mnc010.mcc208.3gppnetwork.org
SIP Server Port  : 5060

Context          : from-pstn
Transport        : 0.0.0.0-udp

Exemple anonymisé :

Username      : +33XXXXXXXXX
Auth Username : NDI0XXXXXXXX.ALL.THD@sfr.fr
Secret        : ***************

SIP Server    : ims.mnc010.mcc208.3gppnetwork.org
Port          : 5060
Context       : from-pstn
Transport     : 0.0.0.0-udp

Point important :

Ne pas mettre l’identifiant IMS complet dans le champ Username si celui-ci contient déjà un @.

Il faut éviter ce genre de construction invalide :

sip:NDI0XXXXXXXX.ALL.THD@sfr.fr@ims.mnc010.mcc208.3gppnetwork.org

Le champ Username doit être le numéro public :

+33XXXXXXXXX

L’identifiant IMS complet doit aller dans :

Auth Username

----------------------------------------

3.3. Onglet pjsip Settings > Advanced

Renseigner :

Outbound Proxy : sip:trappes.p-cscf.sfr.net:5062\;lr
AOR Contact    : sip:ims.mnc010.mcc208.3gppnetwork.org:5060

Contact User   : <NUMERO_E164>
From Domain    : ims.mnc010.mcc208.3gppnetwork.org
From User      : <NUMERO_E164>

Client URI     : sip:<NUMERO_E164>@ims.mnc010.mcc208.3gppnetwork.org
Server URI     : sip:ims.mnc010.mcc208.3gppnetwork.org:5060

Exemple anonymisé :

Outbound Proxy : sip:trappes.p-cscf.sfr.net:5062\;lr
AOR Contact    : sip:ims.mnc010.mcc208.3gppnetwork.org:5060

Contact User   : +33XXXXXXXXX
From Domain    : ims.mnc010.mcc208.3gppnetwork.org
From User      : +33XXXXXXXXX

Client URI     : sip:+33XXXXXXXXX@ims.mnc010.mcc208.3gppnetwork.org
Server URI     : sip:ims.mnc010.mcc208.3gppnetwork.org:5060

Si FreePBX retire l’antislash dans le champ Outbound Proxy, ce n’est pas forcément bloquant. Le résultat côté Asterisk peut apparaître ainsi :

sip:trappes.p-cscf.sfr.net:5062;lr

Renseigner également :

Direct Media     : No
Rewrite Contact  : Yes
RTP Symmetric    : Yes
Force rport      : Yes
Send PAI         : Send P-Asserted-Identity header
Trust RPID/PAI   : Yes
DTMF Mode        : inband
Media Encryption : None

----------------------------------------

3.4. Onglet Codecs

Pour commencer, activer uniquement :

alaw
ulaw

Mettre de préférence :

alaw en premier
ulaw en second

Correspondance :

alaw = G.711A / PCMA
ulaw = G.711U / PCMU

----------------------------------------

4. Match Permit pour les appels entrants

Sans cette étape, les appels entrants peuvent arriver sur FreePBX mais être vus comme des appels anonymes :

from-sip-external
unknown peer
Rejecting unknown SIP connection

Il faut donc associer les IP des P-CSCF SFR au trunk PJSIP.

Depuis FreePBX en SSH :

dig +short trappes.p-cscf.sfr.net
dig +short mitry.p-cscf.sfr.net
dig +short corbas.p-cscf.sfr.net

Exemple de résolution observée :

trappes.p-cscf.sfr.net :
92.91.129.152
92.91.129.200
92.91.129.168
92.91.129.184
92.91.129.136

mitry.p-cscf.sfr.net :
92.91.129.40
92.91.129.72
92.91.129.8
92.91.129.56
92.91.129.24

corbas.p-cscf.sfr.net :
92.91.179.24
92.91.179.8

Dans :

Connectivity > Trunks > SFR_IMS > pjsip Settings > Advanced

Renseigner le champ :

Match (Permit)

avec les IP au format CIDR :

92.91.129.152/32,92.91.129.200/32,92.91.129.168/32,92.91.129.184/32,92.91.129.136/32,92.91.129.40/32,92.91.129.72/32,92.91.129.8/32,92.91.129.56/32,92.91.129.24/32,92.91.179.24/32,92.91.179.8/32

Conseil :
Refaire régulièrement les commandes dig pour vérifier que SFR n’a pas modifié les IP associées aux P-CSCF.

----------------------------------------

5. Création de la route sortante

Aller dans :

Connectivity > Outbound Routes > Add Route

Créer une route :

Route Name : SFR_OUT

Dans :

Trunk Sequence for Matched Routes

sélectionner :

SFR_IMS

----------------------------------------

5.1. Dial Patterns de la route sortante

Pour autoriser les appels nationaux français, les appels déjà au format +33, et les appels internationaux au format 00 :

Prepend   Prefix   Match Pattern
+33       0        ZXXXXXXXX
          vide     +X.
+         00       X.

Explication :

0612345678     devient +33612345678
0712345678     devient +33712345678
0312345678     devient +33312345678
+33612345678   reste +33612345678
0033612345678  devient +33612345678

Le pattern :

ZXXXXXXXX

correspond à 9 chiffres après le 0 initial, avec le premier chiffre de 1 à 9.

La ligne :

+33 / 0 / ZXXXXXXXX

transforme donc tous les numéros français classiques :

01
02
03
04
05
06
07
08
09

en format international +33.

----------------------------------------

6. Route d’urgence

Il est conseillé de créer une route séparée pour les numéros d’urgence.

Aller dans :

Connectivity > Outbound Routes > Add Route

Créer :

Route Name : SFR_URGENCES
Route Type : Emergency
Trunk      : SFR_IMS

Dial Patterns :

15
17
18
112
114

Placer cette route au-dessus de la route générale SFR_OUT.

----------------------------------------

7. Ordre recommandé des routes sortantes

Dans :

Connectivity > Outbound Routes

Placer les routes dans cet ordre :

1. SFR_URGENCES
2. SFR_OUT

Puis cliquer sur :

Apply Config

----------------------------------------

8. Création de la route entrante

Aller dans :

Connectivity > Inbound Routes > Add Inbound Route

Créer une route :

Description : SFR_IN
DID Number  : <NUMERO_E164>
CID Number  : vide
Destination : Extension, Ring Group, IVR, etc.

Exemple anonymisé :

Description : SFR_IN
DID Number  : +33XXXXXXXXX
Destination : Ring Group principal

Dans les traces SIP entrantes, SFR présente généralement le DID au format :

+33XXXXXXXXX

Il est possible de créer temporairement une route entrante sans DID pour tester :

Description : SFR_IN_TEST
DID Number  : vide
CID Number  : vide
Destination : extension de test

Une fois le format du DID confirmé dans les logs, il est préférable de remettre une route propre avec le DID exact.

----------------------------------------

9. Firewall / NAT

Côté firewall/routeur, prévoir au minimum :

UDP 5060         -> FreePBX
UDP 10000-20000  -> FreePBX

Le range RTP dépend de la configuration Asterisk/FreePBX. Par défaut, il est souvent :

10000-20000 UDP

Il est fortement recommandé de restreindre l’accès SIP entrant aux IP des P-CSCF SFR lorsque le firewall le permet.

Ne pas exposer :

Interface Web FreePBX
SSH
ARI 8088/8089
AMI 5038
Base de données

Le trunk utilise les P-CSCF SFR en 5062, mais FreePBX écoute localement en 5060.

----------------------------------------

10. Commandes de vérification

En SSH sur FreePBX :

asterisk -rx "pjsip show registrations"

Résultat attendu :

Registered

Vérifier l’endpoint :

asterisk -rx "pjsip show endpoint SFR_IMS"

Vérifier l’AOR :

asterisk -rx "pjsip show aor SFR_IMS"

Vérifier les contacts :

asterisk -rx "pjsip show contacts"

Le contact SFR doit apparaître disponible :

SFR_IMS/sip:ims.mnc010.mcc208.3gppnetwork.org:5060    Avail

----------------------------------------

11. Debug SIP

Pour activer les logs SIP en temps réel :

asterisk -rvvvvv

Puis dans la console Asterisk :

pjsip set logger on

Pour désactiver :

pjsip set logger off

----------------------------------------

12. Comportement REGISTER attendu

Lors de l’enregistrement SIP, il est normal de voir d’abord un challenge :

REGISTER
401 Unauthorized
REGISTER avec Authorization
200 OK

Le 401 initial n’est pas une erreur. C’est le fonctionnement normal du digest SIP.

Ce qui compte, c’est l’état final :

Registered

----------------------------------------

13. Problèmes courants

Erreur : appels sortants impossibles avec URI invalide

Exemple :

Could not create dialog to invalid URI

Vérifier :

AOR Contact : sip:ims.mnc010.mcc208.3gppnetwork.org:5060
Username    : +33XXXXXXXXX
Auth User   : NDI0XXXXXXXX.ALL.THD@sfr.fr

Ne pas mettre l’identifiant IMS complet dans le champ Username.

----------------------------------------

Erreur : appels entrants rejetés comme anonymes

Exemple :

from-sip-external
Rejecting unknown SIP connection

Vérifier le champ :

Match (Permit)

Il doit contenir les IP des P-CSCF SFR.

----------------------------------------

Erreur : REGISTER en échec

Vérifier :

Auth Username
Password SIP
Domain IMS
Outbound Proxy
AOR Contact
DNS
Firewall
NAT / External Address

----------------------------------------

Audio dans un seul sens

Vérifier :

External Address dans Asterisk SIP Settings
Local Networks
RTP Symmetric : Yes
Rewrite Contact : Yes
Force rport : Yes
Direct Media : No
Ports RTP UDP ouverts vers FreePBX

----------------------------------------

Trunk renommé et comportement instable

Si le trunk a été renommé après création, FreePBX peut conserver ou générer des objets PJSIP incohérents.

Vérifier :

asterisk -rx "pjsip show registrations"
asterisk -rx "pjsip show endpoint SFR_IMS"
asterisk -rx "pjsip show aor SFR_IMS"

Il est préférable de choisir un nom stable dès le départ, par exemple :

SFR_IMS

Puis ne plus le renommer.

----------------------------------------

14. Configuration finale résumée

Trunk PJSIP :

Trunk Name       : SFR_IMS
Username         : +33XXXXXXXXX
Auth Username    : NDI0XXXXXXXX.ALL.THD@sfr.fr
Secret           : ***************
Domain           : ims.mnc010.mcc208.3gppnetwork.org
SIP Server       : ims.mnc010.mcc208.3gppnetwork.org
SIP Server Port  : 5060
Outbound Proxy   : sip:trappes.p-cscf.sfr.net:5062\;lr
AOR Contact      : sip:ims.mnc010.mcc208.3gppnetwork.org:5060
From User        : +33XXXXXXXXX
From Domain      : ims.mnc010.mcc208.3gppnetwork.org
Contact User     : +33XXXXXXXXX
Transport        : UDP
Codecs           : alaw, ulaw
DTMF             : inband
Direct Media     : No
RTP Symmetric    : Yes
Rewrite Contact  : Yes
Force rport      : Yes

Route sortante :

Route Name : SFR_OUT
Trunk      : SFR_IMS

Dial Patterns :
+33 / 0  / ZXXXXXXXX
vide/vide/+X.
+   / 00 / X.

Route entrante :

DID         : +33XXXXXXXXX
Destination : extension, groupe d’appel ou IVR

----------------------------------------

15. Validation

Tests réalisés :

  • Enregistrement IMS : OK
  • Appels sortants : OK
  • Appels entrants : OK
  • Audio bidirectionnel : OK
  • Routage vers groupe d’appel FreePBX : OK

Pensez à refaire un backup FreePBX une fois la configuration validée.