Qu’est-ce que le SIP ALG et pourquoi le désactiver

Vous installez un nouveau téléphone VoIP, il s’enregistre correctement, et le premier appel test se connecte. Puis l’audio est unidirectionnel, ou l’appel se coupe à exactement trente secondes, ou le téléphone affiche « Aucun service » une heure plus tard sans raison apparente. Vous vérifiez le fournisseur SIP, les identifiants, les codecs, les règles du pare-feu, et tout semble correct. La cause n’est presque jamais dans aucun de ces éléments. Il s’agit d’un seul paramètre sur le routeur situé devant le téléphone, activé par défaut, appelé SIP ALG.
Le SIP ALG (Application Layer Gateway) est une fonctionnalité intégrée à la plupart des routeurs grand public et de petites entreprises qui inspecte le trafic SIP en transit et réécrit certaines parties du message. L’intention est de faciliter le fonctionnement de la VoIP à travers la traduction d’adresses réseau (NAT). En pratique, c’est la cause la plus courante de pannes VoIP inexpliquées sur les réseaux d’entreprise, et la recommandation standard de l’industrie est de le désactiver. Dans les sections ci-dessous, nous verrons ce que le SIP ALG tente de faire, pourquoi il corrompt le SIP au lieu de l’aider, comment reconnaître et confirmer les symptômes, comment le désactiver sur les routeurs courants, et ce qui gère correctement le problème sous-jacent une fois qu’il est désactivé.
Ce que le SIP ALG fait réellement
Pour comprendre pourquoi le SIP ALG pose problème, il faut commencer par le problème qu’il a été conçu pour résoudre. Le SIP transporte les adresses IP et les ports à l’intérieur du corps du message, pas uniquement dans les en-têtes de paquets, ce qui découle de la façon dont le standard SIP (RFC 3261) et le payload SDP décrivent une session. Un téléphone sur un réseau privé (par exemple 192.168.1.50) inscrit cette adresse privée dans sa signalisation SIP et dans le SDP qui décrit où il souhaite recevoir l’audio. Lorsque le routeur effectue le NAT et envoie le paquet sur l’internet public, il réécrit l’en-tête IP pour que la source apparaisse comme l’adresse publique du routeur. L’adresse privée enfouie dans le message SIP reste inchangée, car le NAT ordinaire ne modifie que les en-têtes de paquets, pas les payloads.
Le résultat est un message SIP qui indique à l’autre partie d’envoyer la signalisation et l’audio vers 192.168.1.50, une adresse qui n’a aucune signification sur l’internet public. Les réponses et l’audio ne vont nulle part. Le SIP ALG a été créé pour combler cette lacune. Il lit l’intérieur du message SIP lorsqu’il traverse le routeur, trouve les adresses privées dans les en-têtes et le SDP, et les réécrit avec l’adresse publique du routeur afin que l’autre partie ait une destination joignable pour répondre. Sur le papier, c’est une idée raisonnable, et c’est la raison pour laquelle les fabricants de routeurs l’activent par défaut : cela permet à un seul téléphone VoIP derrière un routeur basique de fonctionner sans configuration supplémentaire.
Le problème est que pour le faire correctement, il faut analyser le SIP de manière complète et cohérente, un protocole avec de nombreux types de messages, des en-têtes optionnels, le pliage de lignes, des formes d’en-têtes compactes et des variations propres à chaque fabricant. Les firmwares de routeurs grand public en font une analyse rapide et superficielle, et c’est là que tout dérape.
Pourquoi le SIP ALG perturbe le SIP
Le SIP ALG échoue non pas parce que réécrire les adresses est une mauvaise idée, mais parce que les implémentations le font de manière incomplète et incohérente. Quelques modes de défaillance distincts reviennent systématiquement.
Réécritures d’adresses incomplètes et incohérentes
Un ALG qui réécrit l’adresse dans un en-tête mais la manque dans un autre laisse le dialogue SIP décrire deux chemins de retour différents. L’en-tête Via peut être corrigé tandis que l’en-tête Contact ne l’est pas, ou l’adresse de signalisation est corrigée tandis que l’adresse média du SDP est oubliée. Les deux côtés de l’appel ne sont alors plus d’accord sur la destination des paquets, et les symptômes dépendent de l’en-tête qui a été altéré.
SDP altéré et audio unidirectionnel ou absent
Le SDP contient l’adresse et le port où chaque partie s’attend à recevoir l’audio RTP. Lorsqu’un ALG réécrit l’adresse SDP de manière incorrecte, ou réécrit la signalisation mais pas le SDP, l’appel se connecte et les téléphones sonnent, mais l’audio n’a nulle part où aller. Cela produit le défaut classique d’audio unidirectionnel, où une partie peut entendre et l’autre non, ou des appels qui se connectent dans un silence complet. La même famille de symptômes est couverte du côté opérateur dans le guide de dépannage VoIP.
Enregistrement et réécriture du Contact défaillants
Lorsqu’un téléphone s’enregistre, l’en-tête Contact indique au fournisseur où envoyer les appels entrants. Un ALG qui réécrit l’adresse Contact de manière incohérente, ou qui perd le suivi de l’enregistrement lorsqu’il réécrit la gestion de l’expiration, provoque l’échec des enregistrements ou leur expiration silencieuse. Le téléphone affiche « Aucun service », les appels entrants ne sonnent jamais parce que le fournisseur les envoie à une adresse qui ne fonctionne plus, et les enregistrements se rétablissent et tombent selon un cycle qui semble aléatoire vu de l’extérieur.
Appels qui coupent après environ trente secondes
Un appel qui s’établit correctement puis coupe à un intervalle constant, souvent autour de trente secondes, est une signature caractéristique d’une signalisation en cours de dialogue altérée. Le rafraîchissement de session ou l’acquittement qui devrait maintenir l’appel actif est envoyé à une adresse que l’ALG a réécrite incorrectement, il n’arrive donc jamais et l’un des côtés met fin à l’appel.
Le SIP chiffré le rend inutile et nuisible
Lorsque la signalisation SIP est protégée par TLS, le routeur ne peut pas lire le corps du message du tout, l’ALG n’a donc rien à inspecter ou réécrire. Au mieux, il n’apporte aucune assistance utile à la signalisation ; au pire, il interfère avec la gestion du NAT ou l’état de session d’une manière qui perturbe l’appel. Tout déploiement utilisant TLS et SRTP, ce qui inclut Microsoft Teams Direct Routing et la plupart des interconnexions opérateur modernes, ne tire aucun bénéfice du SIP ALG et n’en hérite que les effets secondaires.
Symptômes qui indiquent le SIP ALG
Le SIP ALG s’annonce rarement. Il se manifeste par un ensemble de pannes intermittentes, difficiles à reproduire, qui survivent à chaque modification que vous apportez au téléphone, au fournisseur et aux identifiants. Les symptômes suivants, surtout combinés, pointent fortement vers un ALG dans le chemin :
- Audio unidirectionnel où une partie peut entendre l’autre mais pas l’inverse, ou des appels qui se connectent dans le silence.
- Appels qui coupent à un intervalle constant, fréquemment autour de trente secondes, après un établissement réussi.
- Échecs d’enregistrement où les téléphones affichent « Aucun service » ou alternent entre enregistré et hors ligne sans schéma apparent.
- Appels entrants qui ne sonnent pas tandis que les appels sortants fonctionnent, parce que le fournisseur ne peut pas joindre l’adresse annoncée par l’ALG.
- Transfert d’appel, mise en attente ou DTMF défaillants, où la signalisation en cours d’appel qui modifie la session est la partie corrompue.
- Pannes qui suivent le routeur, où les mêmes téléphones et le même fournisseur fonctionnent parfaitement sur un autre réseau.
Comment confirmer que le SIP ALG est en cause
Les symptômes se recoupant avec des défauts ordinaires de NAT et de pare-feu, il vaut la peine de confirmer spécifiquement le SIP ALG plutôt que de désactiver des paramètres au hasard. La méthode fiable consiste à comparer les messages SIP de chaque côté du routeur. Capturez le trafic SIP tel que le téléphone l’envoie côté privé, puis capturez les mêmes messages tels qu’ils sortent du routeur côté public, et comparez les adresses Contact, Via et SDP.
Si les adresses à l’intérieur du message ont été modifiées entre les deux captures, et modifiées de manière incohérente ou pointant vers une adresse inaccessible, un ALG réécrit le trafic. Un équipement NAT propre laisse le payload SIP intact et ne réécrit que les en-têtes de paquets. La lecture de ces captures est un savoir-faire en soi, et la même technique localise la plupart des défauts de signalisation, pas seulement le comportement de l’ALG. Pour l’outillage côté opérateur couvrant les traces d’appels et la capture de paquets, le guide de dépannage VoIP détaille le processus de diagnostic.
Comment désactiver le SIP ALG
Le SIP ALG se cache sous différents noms selon les équipements, ce qui explique en partie pourquoi il passe si souvent inaperçu. Selon le fabricant, il apparaît sous le nom de SIP ALG, SIP Transformations, SIP Helper, SIP Inspection, VoIP passthrough, ou comme une entrée SIP dans une page de paramètres NAT ou de couche application. Sur les passerelles Linux, il s’agit du module de suivi de connexion nf_conntrack_sip. Le tableau ci-dessous indique où le trouver sur les plateformes courantes.
| Plateforme | Où se trouve le paramètre |
|---|---|
| Cisco ASA | L’inspection SIP est activée par défaut dans la politique globale. Désactivez-la en CLI : sous policy-map global_policy, class inspection_default, entrez no inspect sip, puis enregistrez. |
| Fortinet FortiGate | Désactivation via le CLI plutôt qu’un simple interrupteur dans l’interface graphique ; le SIP session helper et le profil VoIP doivent tous deux être traités. Appliquez chaque étape CLI dans l’ordre. |
| Netgear | Dans l’interface web du routeur, sous les paramètres WAN ou avancés. Si l’option est absente sur un modèle ancien, mettez d’abord à jour le firmware, puis désactivez-la. |
| TP-Link | Sur les systèmes mesh Deco, ouvrez l’application Deco et allez dans Plus, Avancé, Transfert NAT, SIP ALG, puis désactivez-le. Sur les modèles standard, le paramètre se trouve sous NAT ou paramètres de transfert. |
| DrayTek | Sous les paramètres SIP ALG ou VoIP NAT dans l’interface web ; désactivez l’ALG et vérifiez qu’aucun assistant NAT compatible SIP ne reste activé. |
| pfSense / OPNsense | Aucun des deux ne fournit de SIP ALG, il n’y a donc rien à désactiver. Les problèmes VoIP derrière ces pare-feu sont des problèmes NAT ordinaires, pas de la corruption par ALG. |
Après avoir désactivé le SIP ALG, redémarrez le routeur si la modification ne prend pas effet immédiatement, réenregistrez les téléphones et passez des appels tests dans les deux sens pour confirmer l’audio bidirectionnel et que l’appel tient au-delà de l’intervalle où il coupait auparavant. Si les symptômes persistent, la cause est un problème de NAT ou de pare-feu distinct plutôt que l’ALG.
Quand désactiver le SIP ALG ne suffit pas
Désactiver le SIP ALG supprime ce qui corrompt votre signalisation, mais ne fait pas disparaître le problème de NAT d’origine. Les adresses privées à l’intérieur des messages SIP doivent encore être réconciliées avec les adresses publiques que l’autre partie voit réellement. Pour un seul téléphone derrière un routeur basique, le keep-alive NAT du téléphone et la détection de NAT distant du fournisseur comblent généralement cette lacune une fois l’ALG écarté. À l’échelle d’un opérateur, d’un MSP ou de tout fournisseur terminant des trunks SIP provenant de nombreux réseaux qu’il ne contrôle pas, le problème de NAT doit être résolu délibérément en bordure de réseau plutôt que laissé à l’estimation d’un routeur.
C’est le rôle que joue un Session Border Controller (SBC). Un SBC se situe à la frontière entre les réseaux et gère la signalisation et le média de chaque côté en tant que fonction conçue à cet effet. Parce qu’il fonctionne comme un back-to-back user agent, il termine le dialogue de signalisation entrant et en initie un nouveau vers l’autre côté, contrôlant ainsi chaque adresse dans chaque en-tête sur les deux segments de manière déterministe, au lieu de modifier un paquet en transit. Il effectue la détection de NAT distant sur les adresses d’où le trafic provient réellement, ancre le média pour que l’audio transite par sa propre adresse publique joignable, et applique la manipulation des en-têtes SIP sous forme de règles configurées plutôt qu’une estimation figée. C’est la différence entre un ALG de routeur et un SBC : la même catégorie de travail, réalisée comme un contrôle délibéré de la signalisation plutôt qu’une réécriture opaque. Pour voir comment cela s’inscrit dans le tableau plus large de pourquoi un ALG de pare-feu ne remplace pas un SBC, consultez la comparaison approfondie dans le guide sur la sécurité des SBC.
Foire aux questions
Le SIP ALG est-il parfois utile ?
Pour un seul softphone ou téléphone VoIP derrière un routeur domestique basique, un ALG bien implémenté peut occasionnellement le faire fonctionner sans aucune autre configuration. En pratique, les implémentations sont suffisamment peu fiables pour que le risque de corruption l’emporte sur la commodité, ce qui explique pourquoi le conseil standard est de le désactiver et de laisser le téléphone ou le réseau en amont gérer le NAT à la place.
Désactiver le SIP ALG expose-t-il mon réseau aux attaques ?
Non. Le SIP ALG est un assistant NAT, pas un contrôle de sécurité. Le désactiver n’ouvre pas de ports et ne supprime pas la protection du pare-feu ; le routeur filtre toujours le trafic exactement comme avant. La sécurité du SIP relève d’un équipement conçu à cet effet, pas d’un ALG grand public.
Un SBC remplace-t-il le SIP ALG ?
Un SBC remplit les fonctions que le SIP ALG tente d’assurer, mais en tant que politique de signalisation et de média explicite plutôt qu’une réécriture de paquets en transit. Il gère la traversée du NAT, l’ancrage média et la réécriture des adresses SIP comme des fonctions déterministes sur chaque segment d’appel. Lorsqu’un SBC se trouve dans le chemin, le SIP ALG sur tout routeur en amont doit être désactivé afin que les deux n’essaient pas de réécrire le même trafic.
Pourquoi le SIP ALG est-il activé par défaut s’il cause des problèmes ?
Les fabricants de routeurs l’activent pour qu’un téléphone VoIP basique derrière le routeur fonctionne immédiatement sans que l’utilisateur comprenne le NAT. La valeur par défaut est optimisée pour le cas le plus simple, pas pour la VoIP d’entreprise, les déploiements multi-postes ou le SIP chiffré, où il fait plus de mal que de bien.
J’ai désactivé le SIP ALG et le problème persiste. Que faire ?
Si les symptômes persistent après la désactivation de l’ALG, la cause est un problème de NAT ou de pare-feu distinct : un délai d’expiration de binding UDP trop court, des ports RTP bloqués, ou le SDP qui annonce une adresse que l’autre partie ne peut pas joindre. Capturez le SIP des deux côtés du routeur pour voir quelle adresse est incorrecte, et gérez le NAT en bordure de réseau plutôt que de compter sur le routeur pour corriger le SIP à votre place.
Conclusion
Le SIP ALG est une fonctionnalité bien intentionnée qui tente de résoudre un vrai problème (le SIP transporte des adresses privées que le NAT ne réécrit pas) et le résout mal en modifiant la signalisation en direct sur la base d’une analyse superficielle du protocole. Le résultat : audio unidirectionnel, appels qui coupent à intervalle régulier, enregistrements qui expirent et appels entrants qui ne sonnent jamais, autant de symptômes qui survivent à toutes les autres étapes de dépannage. Sur presque tous les réseaux d’entreprise, la bonne démarche est de trouver le paramètre, quel que soit le nom que le fabricant lui a donné, et de le désactiver.
Le désactiver supprime la corruption mais laisse le problème de NAT sous-jacent. Pour un seul téléphone, le réseau s’en accommode généralement ; à l’échelle d’un fournisseur, le travail relève d’un Session Border Controller qui gère la traversée du NAT, le média et l’adressage SIP comme des fonctions délibérées et configurées plutôt qu’une estimation transparente. Connaître la différence, c’est ce qui transforme un après-midi passé à chasser un fantôme en une correction de cinq minutes.
Gérez le NAT et le SIP correctement en bordure de réseau avec ProSBC
ProSBC est un Session Border Controller logiciel de classe opérateur qui accomplit le travail qu’un ALG de routeur ne fait qu’esquisser. Il fonctionne comme un back-to-back user agent complet, terminant chaque appel et le réinitiant vers l’autre côté, contrôlant ainsi chaque adresse de signalisation et de média sur les deux segments de manière déterministe au lieu de réécrire des paquets en transit. La détection de NAT distant, l’ancrage média et la manipulation des en-têtes SIP basée sur des règles sont des fonctions conçues, pas une estimation figée qui échoue à la prochaine variation de fabricant.
Parce qu’il ancre le média et présente sa propre adresse publique joignable, ProSBC résout les défauts d’audio unidirectionnel et d’enregistrement que les ALG créent, que ce soit en SIP sur UDP, TCP ou TLS, sans demander à votre opérateur ou à vos terminaux de changer quoi que ce soit. Il se déploie sur VMware, KVM, AWS, Azure et baremetal, là où votre bordure de réseau se situe réellement.
Vous préférez évaluer par vous-même d’abord ? Commencez votre essai gratuit de 30 jours.