SIP ошибка 400 Bad Request на IP-телефоне: причины и исправление
- При попытке набрать номер на экране IP-телефона появляется надпись
400 Bad Request. - В трубке раздаются частые короткие гудки ошибки сразу после нажатия кнопки вызова.
- В логах АТС Asterisk регистрируется статус ответа
SIP/2.0 400 Bad Request (Unable to parse SIP message).
1. Что означает ошибка SIP 400 Bad Request
Код ответа 400 Bad Request (Неверный запрос) означает, что телефон отправил серверу АТС (или провайдеру) SIP-пакет с синтаксической ошибкой, которую сервер не может прочитать и обработать. Это не поломка оборудования, а ошибка в настройках или в набранном номере.
2. Главные причины появления ошибки 400
- Недопустимые символы в набранном номере: В номере присутствуют пробелы, скобки, тире или русские буквы (например, скопированный номер из базы
+7 (495) 123-45-67). - Кириллица в поле CallerID / Display Name: В настройках телефона имя сотрудника написано русскими буквами (например, «Иван Иванов»), а сервер АТС не поддерживает кодировку UTF-8 в заголовках SIP.
- Слишком длинный SIP-заголовок (превышение MTU): В запрос включено слишком много поддерживаемых кодеков или громоздких заголовков, из-за чего размер UDP-пакета превысил 1500 байт и был поврежден при фрагментации.
- Неправильный SIP URI / Port: В настройках телефона указан неверный домен или порт назначения (например, пропущен символ
@).
3. Пошаговый план устранения ошибки
- Проверьте имя учетной записи (CallerID): Откройте веб-интерфейс телефона, зайдите в настройки аккаунта и временно замените русское имя в поле Display Name на латиницу (например,
Ivan Ivanovили просто номер101). - Настройте план набора (Dial Plan): Убедитесь, что телефон автоматически очищает номер от скобок и плюсов. В настройках Dial Plan телефона укажите стандартную маску:
[x*#]+. - Уменьшите список кодеков: В меню Account → Codec отключите все неиспользуемые кодеки, оставив только
PCMA (alaw)иG.729. Это сократит размер пакета INVITE в несколько раз. - Переключите транспорт с UDP на TCP: Если заголовки слишком большие, в настройках аккаунта измените Transport с
UDPнаTCP(при условии поддержки на стороне АТС).
Частые вопросы (FAQ)
Почему ошибка 400 возникает только при наборе внешних номеров через восьмерку?
Вероятно, в правилах исходящей маршрутизации (Outbound Routes) на АТС настроен жесткий шаблон набора (например, шаблон ожидает строго 11 цифр 7XXXXXXXXXX, а телефон отправляет 8XXXXXXXXXX без модификации префикса).
Может ли роутер быть причиной появления 400 Bad Request?
Да. Если на роутере включен кривой SIP ALG, он может исказить заголовки Via, Contact или Content-Length, превратив корректный SIP-запрос в невалидный с точки зрения сервера мусор.
Чем отличается ошибка 400 от ошибки 404?
400 Bad Request означает поврежденный или некорректно оформленный запрос, а 404 Not Found означает, что запрос понятен, но набранный номер или учетная запись не существуют на сервере.
Как увидеть тело некорректного SIP-пакета для точной диагностики?
В консоли Asterisk CLI выполните команду 'pjsip set logger on' (или 'sip set debug on') и сделайте звонок. В консоли отобразится точный текст отклоненного пакета с указанием проблемной строки.