Диагностика и отключение SIP ALG на роутерах Cisco, MikroTik, Zyxel
- Случайная потеря входящих вызовов и сбои повторной регистрации телефонов.
- Искажение полей
Call-ID,Via,Contactи подмена портов в теле SDP. - Ошибки SIP 400 Bad Request или 404 Not Found из-за некорректной длины Content-Length.
- Невозможность установления защищенных TLS/SRTP сессий (роутер пытается переписывать зашифрованные пакеты).
1. Идентификация работы SIP ALG в дампе пакетов
Сравните дамп на клиенте и сервере. Если на пути роутер модифицировал порты SDP или некорректно переписал заголовки Contact — включен SIP ALG.
2. Отключение SIP ALG на MikroTik (RouterOS)
/ip firewall service-port disable sip
/ip firewall connection tracking set loose-tcp-tracking=yes3. Отключение SIP Inspection на Cisco IOS / ASA
Для Cisco IOS:
configure terminal
no ip nat service sip tcp port 5060
no ip nat service sip udp port 5060
end
clear ip nat translation *Для Cisco ASA:
configure terminal
policy-map global_policy
class inspection_default
no inspect sip
end
write memory4. Отключение SIP ALG на Zyxel Keenetic / ZLD
Для Keenetic (CLI):
no service sip-alg
system configuration saveДля Zyxel USG / ATP:
Router(config)# no ip alg sip
Router(config)# write5. Отключение на FortiGate
config system settings
set default-voip-alg-mode kernel-helper-based
set sip-helper disable
set sip-nat-trace disable
end Частые вопросы (FAQ)
Почему SIP ALG по умолчанию включен на большинстве роутеров?
Исторически SIP ALG разрабатывался для помощи устаревшим SIP-клиентам без поддержки STUN/rport в прохождении NAT. В современных протоколах он ломает логику работы PBX и вносит ошибки в заголовки.
Помогает ли переход на SIP over TLS избежать влияния SIP ALG?
Да. Поскольку TLS шифрует сигнальный трафик, роутер не может анализировать и модифицировать заголовки пакетов 5061/TCP.
Нужно ли сбрасывать таблицу трансляций NAT после отключения SIP ALG?
Да, обязательно. Активные трансляции, созданные модулем ALG, продолжают действовать до истечения таймаута или принудительного сброса таблицы NAT (conntrack).
Как SIP ALG влияет на вычисление Content-Length?
Роутер изменяет IP-адреса внутри SDP-тела на более короткие или длинные строки, но забывает пересчитать поле Content-Length, из-за чего АТС отбрасывает пакет как поврежденный.