Вчера повторно столкнулся с уже практически забытой проблемой, связанной с 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 \\ теги: , , ,

  • BBV

    прописал просто ip всех на ком регистрируюсь в файле hosts, пока спасаюсь так, благо у sipnet и других провайдеров не меняется пока ip. А так действительно всё подвисает, тоже надеялся что 1.6 это исправили, если нет, плохо ...

  • Mr. KIM

    Спасибо огромное!

    Долго мучился с данной проблемой и никак не мог понять в чем дело! Надеюсь теперь данная проблема не будет меня доставать )))

  • Corruptor

    Да, работа с DNS у астериск очень шокирует, уже столько случаев было, что почти всегда сразу проверяю доступность DNS :) .

    Из последних случаев — задержка со сменой состояния экстеншена. Баг закрыли и теперь даже если нет днс, задержки нету :) .

  • Wind

    Господа, а не проще ли настроить более-менее полноценный DNS, для локальной машины, всего то делов:

    view «localhost_resolver»

    {

    match-clients { localhost; };

    match-destinations { localhost; };

    recursion yes;

    zone «.» IN {

    type hint;

    file «named.root»;

    };

    };

    Конечно, возможно будет чуть медленнее, но вы не зависите от DNS-серверов провайдеров, а положить всю систему DNS надо сильно постараться :)

  • http://www.pbxware.ru litnimax

    А разве активация DNS менеджера в dnsmgr.conf не помогает?

  • http://igorg.ru igorg

    Максим, спасибо за наводку. Я считал что использование dnsmanager разрешено по-умолчанию, поэтому и написал «думал, что возникновение подобных ситуаций исправлено в 1.6».

  • Oleh

    В dnsmgr.conf есть переменная refreshinterval, тоесть это интервал с кототрым астериск обновляет DNS-записи. Тогда если DNS лежит больше этого времени — астериск все равно заглючит? Или я что-то неправильно понял?

  • http://igorg.ru igorg

    Тут дело в другом. Перестанут работать пиры с DNS именами, но работа через dnsmanager не должна вызывать блокировок в chan_sip и chan_iax2. Поэтому ТАК глючить не будет, просто отвалятся всякие сипнеты

  • Oleh

    Спасибо, Игорь. Наверное все-таки придется ставить кеширующий DNS.

  • http://stroyinvestkomi.ru Серега

    Парни привет кому нибудь выше описанное помогло*????

    dnsmgr.conf нужно создать в /etc/asterisk и рестартануть *

    Реально эта проблема достала т.к. провайдер сейчас обновляет оборудование и инет падает на 5-10 минут раз 20 в день)))))) И сразу весь офис сидит с не работающими телефонами)))

    И постоянно приходится комментировать строчку регистрации на sipnet!!!!

    Может кто знает как зарегиться на sipnet без использованя dns????

    Раньше регистрация у них проходила по IP адресу.

    Потом они перешли на кластеризацию и по ip больше нельзя зарегиться!!!!

    Кто как с этим борится напишите если не трудно)))))

  • http://twitter.com/metrosvyaz Leonid Medvedev

    На 1.8.10.0 такая же проблема.

    Не пойму, на хрена * нужны DNS? Что он с ними делает-то?

  • http://igorg.ru IgorG

     Если какой-либо пир в sip.conf использует dns имя, то астериску нужен DNS сервер. Выход первый — не использовать DNS имя на в поле host и в строках регистрации. Второй способ — комбинация настроек астериска и локальный DNS.