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

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

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

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

SIP ошибка 500 Server Internal Error в Asterisk: синтаксис extensions.conf и базы данных

Обновлено: 26.08.2026 · Официальная документация ↗
  • При попытке совершить звонок телефон мгновенно выдает ошибку SIP 500 Server Internal Error или короткие гудки занятости.
  • Все внутренние телефоны внезапно теряют возможность звонить между собой и наружу.
  • В консоли Asterisk при наборе номера появляются красные строки: WARNING: ast_expr2.y: syntax error или ERROR: res_config_mysql: MySQL server has gone away.
  • Сервер телефонии не обрабатывает правила диалплана и сбрасывает соединение.

Что означает SIP ошибка 500?

Код 500 Server Internal Error — это «крик о помощи» сервера IP-АТС. Это значит, что телефон сформировал правильный запрос, но сам сервер Asterisk столкнулся с внутренней непредвиденной ошибкой (упал процесс, зависла база данных, переполнился диск или в файле маршрутизации звонков допущена грубая синтаксическая ошибка) и не смог продолжить вызов.

Пошаговая диагностика и устранение сбоя:

Шаг 1. Проверка статуса базы данных (MySQL / MariaDB / AstDB)

В 90% систем FreePBX и Issabel логика звонков и учетные записи завязаны на базу данных SQL. Если база упала — сервер вернет ошибку 500:

  1. Подключитесь к серверу по SSH.
  2. Проверьте статус службы СУБД:
    sudo systemctl status mariadb || sudo systemctl status mysql
  3. Если сервис остановлен (Failed), запустите его:
    sudo systemctl restart mariadb
  4. Проверьте внутреннюю встроенную базу данных Asterisk (AstDB):
    sudo asterisk -rx "database show"

Шаг 2. Поиск синтаксических ошибок в диалплане (extensions.conf)

Если вы недавно редактировали файлы маршрутизации вручную:

  1. Откройте консоль Asterisk:
    sudo asterisk -rvvvv
  2. Выполните команду проверки и перезагрузки диалплана:
    dialplan reload
  3. Внимательно изучите вывод. Если в файлах extensions.conf или extensions_custom.conf пропущена скобка, запятая или неверно указан приоритет (например, две одинаковые цифры n или опечатка в имени приложения Dail вместо Dial), консоль укажет точный номер сбойной строки.
  4. Исправьте ошибку в конфигурационном файле и снова сделайте dialplan reload.

Шаг 3. Проверка свободного места на жестком диске

Если на сервере включена запись разговоров, диск может заполниться на 100%. При невозможности создать временный аудиофайл или записать лог Asterisk отвечает ошибкой 500:

df -h

Если раздел /var/log или корневой / заполнен на 100%, удалите старые ненужные записи или архивы логов:

sudo rm -rf /var/log/asterisk/full.*.gz

Шаг 4. Проверка модулей кодеков и транскодинга

Если в диалплане задействован кодек (например, G.729), но соответствующий модуль codec_g729.so не загружен или не имеет лицензии, попытка направить звонок в этот канал вызовет моментальный сбой 500 Internal Error.

💡 Практика специалистов: Перед любой ручной правкой extensions.conf всегда делайте резервную копию файла (cp extensions.conf extensions.conf.bak). Одна незакрытая фигурная скобка ${EXTEN} способна положить связь всего предприятия.

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

Почему ошибка 500 возникает только при звонке на один конкретный номер?

Это означает, что ошибка содержится в конкретной ветке диалплана для этого номера (например, переход на несуществующий голосовой ящик VoiceMail или опечатка в названии группы вызова Queue).

Как перезапустить процесс Asterisk без перезагрузки всего сервера?

Выполните команду sudo systemctl restart asterisk или через консоль телефонии: sudo asterisk -rx 'core restart gracefully'.

Что делать, если MariaDB не запускается из-за повреждения таблиц?

Выполните автоматическое восстановление баз данных FreePBX: mysqlcheck -u root -p --auto-repair --check --all-databases.

Может ли ошибка 500 быть вызвана переполнением оперативной памяти (RAM)?

Да. Если сервер испытывает жесткий дефицит RAM, системный процесс OOM Killer может завершить дочерние потоки Asterisk, что приводит к отказу обработки звонков.

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