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
sngrep: examiner la lignec=du SDP dans l'INVITE et le 200 OK.rtp set debug on: vérifier dans quel sens circulent les paquets.- 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.