Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

PJSIP_ENDPOINT_NOT_FOUND IP-Телефония и СКУД

Asterisk PJSIP: Endpoint not found in endpoint table (Траблшутинг)

Обновлено: 24.08.2026 · Официальная документация ↗
  • В логах фиксируется ошибка WARNING res_pjsip.c: Endpoint 'anonymous': Endpoint not found in endpoint table.
  • Входящие вызовы от оператора или междугородних транков сбрасываются со статусом 404 Not Found или 401 Unauthorized.
  • АТС не может сопоставить входящий запрос с конкретным контекстом диалплана.
  • Команда pjsip show endpoints не выводит созданный транк.

1. Архитектура сопоставления эндпоинтов в res_pjsip

В отличие от chan_sip, драйвер res_pjsip использует модульную систему идентификации. Когда на сервер приходит входящий SIP-запрос, PJSIP последовательно опрашивает модули-идентификаторы в порядке их приоритета:

  1. res_pjsip_endpoint_identifier_ip (по IP-адресу и порту источника);
  2. res_pjsip_endpoint_identifier_user (по заголовку From / Digest Username);
  3. res_pjsip_endpoint_identifier_anonymous (гостевой доступ).

Если совпадений нет, запрос отклоняется сообщением Endpoint not found.

2. Настройка идентификации транка по IP в `/etc/asterisk/pjsip.conf`

Для операторских транков со статическим IP-адресом обязательно создайте секцию identify:

[my_trunk_endpoint]
type=endpoint
context=from-trunk
disallow=all
allow=alaw,ulaw
aors=my_trunk_aor

[my_trunk_aor]
type=aor
contact=sip:198.51.100.1:5060

; Секция привязки IP-адреса оператора к эндпоинту
[my_trunk_identify]
type=identify
endpoint=my_trunk_endpoint
match=198.51.100.1
match=198.51.100.2 ; Дополнительные сигнальные IP оператора

3. Настройка идентификации абонентов с динамическими IP

Для внутренних телефонов идентификация выполняется по имени пользователя в заголовке From:

[101]
type=endpoint
context=from-internal
disallow=all
allow=alaw,ulaw
auth=101_auth
aors=101

[101_auth]
type=auth
auth_type=userpass
username=101
password=VeryStrongPassword!45

[101]
type=aor
max_contacts=2

4. Проверка модулей идентификации и перезагрузка

asterisk -rx "module show like identifier"
asterisk -rx "pjsip show identifies"
asterisk -rx "pjsip reload"
💡 Практика специалистов: Если ваш оператор использует пул из десятка IP-адресов для балансировки входящих вызовов, обязательно внесите все адреса в секцию type=identify через запятую, иначе часть входящих вызовов будет циклически падать с ошибкой 404.

Частые вопросы (FAQ)

Почему входящие звонки от транка попадают в endpoint 'anonymous'?

Это означает, что для транка не настроена секция type=identify с директивой match=<IP_оператора>, либо модуль res_pjsip_endpoint_identifier_ip.so не загружен.

Можно ли сопоставлять эндпоинты по подсети (CIDR)?

Да, директива match поддерживает маски подсетей: match=192.168.0.0/24 или match=10.0.0.0/8.

Как включить идентификацию по заголовку Line (Outbound Registration)?

В секции type=registration включите параметр line=yes и endpoint=<имя_эндпоинта>. Провайдер будет возвращать специальный токен line в заголовке Contact/URI.

Что делать, если оператор шлет вызовы с разных портов?

В секции type=identify укажите match_header=To: /.../ или задайте IP без указания порта (match=1.2.3.4), чтобы матчились любые порты источника.

Полезные материалы
Рекомендуем