ITFabricLab ouvre bientôt : les labs, simulations et examens ne sont pas encore accessibles. Vous pouvez parcourir le catalogue et créer votre compte pour être prévenu de l'ouverture.
Sévérité : ÉlevéeProtocole SIP

Audio unidirectionnel sur les appels via Internet (NAT et SDP)

Aucune erreur SIP : `200 OK` et `ACK` sont échangés. `rtp set debug on` montre des paquets envoyés mais aucun reçu d'un côté.

Détecter

Les appels s'établissent, mais l'appelé n'entend pas l'appelant (ou l'inverse). Le problème ne concerne que les postes distants (télétravail) ou le trunk opérateur.

Symptômes

Les appels s'établissent, mais l'appelé n'entend pas l'appelant (ou l'inverse). Le problème ne concerne que les postes distants (télétravail) ou le trunk opérateur.

Environnement

IPBX Asterisk derrière un routeur NAT, trunk SIP opérateur, postes distants derrière des box domestiques.

Cause racine

Le SDP émis par Asterisk annonce son adresse privée (c=IN IP4 192.168.1.10). L'opérateur envoie le RTP vers une adresse non routable ; seul le sens sortant fonctionne.

Diagnostic

  1. sngrep : examiner la ligne c= du SDP dans l'INVITE et le 200 OK.
  2. rtp set debug on : vérifier dans quel sens circulent les paquets.
  3. Vérifier l'ouverture de la plage RTP UDP sur le pare-feu.

Solution

Dans le transport PJSIP :

[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
external_media_address=203.0.113.25
external_signaling_address=203.0.113.25
local_net=192.168.1.0/24

Sur les endpoints distants : rtp_symmetric=yes, force_rport=yes, rewrite_contact=yes. Désactiver l'ALG SIP du routeur.

Commandes

sngrep -d any port 5060
asterisk -rx "rtp set debug on"
asterisk -rx "pjsip show transports"

Prévention

SBC en périphérie, gabarit de configuration des transports validé, test d'appel automatisé bidirectionnel avec mesure MOS après chaque changement.