SIP Error 400 Bad Request: причины ошибки и методы устранения
- АТС (Asterisk / FreePBX / Kamailio) отклоняет вызов с кодом
SIP/2.0 400 Bad Request. - IP-телефон или софтфон не может зарегистрироваться на SIP-сервере.
- Сброс сессии сразу после отправки пакета
INVITEилиREGISTER.
1. Трассировка SIP-диалога через sngrep / tcpdump
sngrep -c port 5060
# или сбор в pcap для Wireshark
tcpdump -nnvv -s 0 -i any port 5060 -w /tmp/sip_400.pcap2. Проверка критических заголовков RFC 3261
Убедитесь, что SIP-пакет содержит все обязательные поля:
Via: корректный IP/порт и параметр branch (начинающийся сz9hG4bK).FromиTo: валидные SIP URI видаsip:user@domain.com.Call-IDиCSeq: уникальный идентификатор и номер шага последовательности.Content-Length: точный байтовый размер тела SDP.
3. Исправление синтаксиса в Asterisk (pjsip.conf)
Если софтфон передает нестандартные символы или пробелы в Display Name, настройте нормализацию заголовков:
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0:5060
[endpoint_template](!)
type=endpoint
force_rport=yes
rewrite_contact=yes Частые вопросы (FAQ)
Что чаще всего вызывает ошибку SIP 400?
Несоответствие значения заголовка Content-Length фактическому размеру SDP-пакета, некорректный формат Call-ID или отсутствие обязательного тега branch в заголовке Via.
Может ли NAT вызывать SIP 400?
Да, если роутер с включенным SIP ALG некорректно модифицирует текстовые заголовки и портит контрольную длину пакета. Всегда отключайте SIP ALG на маршрутизаторах.