Вчера повторно столкнулся с уже практически забытой проблемой, связанной с Asterisk и падением указанных в системе DNS серверов. Для новичка поведение системы при недоступности DNS будет просто шокирующим:

  • Внутренние телефоны теряют регистрацию, вне зависимости используют они DNS или нет
  • Нет регистрации на внешних серверах
  • Перезагрузка chan_sip происходит долго и «рвано»

Я как решение предлагаю настроить кэширование DNS запросов на сервере с астериском и отслеживать работоспособность указанных в системе DNS серверов.

Я думал, что возникновение подобных ситуаций исправлено в 1.6, но это казалось не так. Если такая ситуация встретилась, то рекомендую настроить локальный кэширующий DNS-сервер. При отказе внешних серверов Астериск продолжит получать кэшированные результаты с локального DNS.

В named.conf прописать или раскомментировать строки:

forwarders { 208.67.222.222; 208.67.220.220; };

listen-on port 53 { 127.0.0.1; };

После этого рестартовать BIND и посмотреть на результат. Естественно не забыть в настройках системы заменить уже прописанные DNS на 127.0.0.1.

В примере указаны серверы проекта OpenDNS. Можно конечно не настраивать локально DNS сервер, а прописать большее количество серверов в системе, на практике практически невозможна ситуация когда они откажут одновременно. Однако на на той же практике, канал в интернет бывает достаточно нестабилен и при каждом его отказе внешние DNS сервера будут недоступны, со всеми вытекающими.

PS. Включение enable=yes в dnsmgr.conf так же исправляет проблему. Спасибо litnimax'у за подсказку.

автор igorg \\ теги: , , ,