8 Ноя
2012
Рубрика: Asterisk
Автор:    Комментариев нет

Грабли, или 5 типичных ошибок настройки Asterisk

Эта статья написана для пользователей которые только начали пользоваться программой Asterisk , но тем не менее знающих как работают компьютерные сети на уровне CCNA иимеющих базовые знания IP-телефонии без спец курсов.

1) Вы забыли отключить анонимные звонки при этом используя контекст по умолчанию для плана нумерации или не знали что это надо сделать.
Проблема
В Asterisk по умолчанию, включены анонимные звонки, чтобы вы могли принять звонок из любой точки Земли напрямую,
указав номер@вашдомен в качестве назначения вызова и опираясь на работу DNS. Порой это весьма удобно и полезно, но
вы можете получить совсем не то что ожидали, если вы воспользуетесь контекстом по умолчанию для основной нумерации. Выйдет так что кто угодно может отправить запрос на номер_телефона@ваш_домен и к примеру сделать междугородний звонок используя деньги на вашем счету .
Решение
Запомните раз и навсегда первое правило которое в данном случае лучше не нарушать: не используйте контекст по умолчанию для нумерации. Помните, контекст «default» только для анонимных звонков из интернета, ему стоит доверять в последнюю очередь. Если вы не собираетесь принимать анонимные звонки, не забудьте отключить его.
sip.conf
[general]
allowguest=no

2) Вы отвечаете на запрос с неверным именем пользователя или на запрос регистрации с существующем именем и неправильным паролем по-разному
Проблема
В интернете достаточно много людей которые хотят звонить за чужие деньги, с этим надо бороться всеми доступными методами. Asterisk, по умолчанию (в случае если у вас не одна из последних версий), на регистрации с несуществующим именем пользователя или с существующим именем, но неправильным паролем отвечает по разному. Это дает взломщику возможность узнать существующие имена пользователей и после этого именно к ним подбирать пароли .
Решение
sip.conf
[general]
alwaysauthreject = yes

3) Вы не пользуетесь списками доступа ACL и средствами динамического ограничения доступа
Но все же, несмотря на предпринятые усилия в прошлом пункте, возможность подбора пароля все еще есть, по возможности лучше воспользоваться правилами контроля доступа (acl)
sip.conf
[my_user]
deny=0.0.0.0/0
permit=172.16.0.0/12 ; укажите сети, из которых может быть выполнена регистрация
Встречаются порой случаи, когда использовать acl невозможно — к примеру пользователь регистрируется из произвольной сети. В таком случае обязательно пользуйтесь средствами динамической блокировки, к примеру fail2ban — программа для обработки логов с целью нахождения и блокирования адресов, с которых было зарегестрированно определенное количество попыток неудачных регистрации.

4) Вы не поставили _ в плане нумерации и не можете понять почему не идут звонки.
Весьма встречаемая проблемма среди тех кто только начал пользоваться программой.
С ошибкой
[citycalls]
exten => XXXXXX,1,Dial(DAHDI/g1/${EXTEN})
Без ошибки
[citycalls]
exten => _XXXXXX,1,Dial(DAHDI/g1/${EXTEN})
В случае с ошибкой вы использовали не шаблон, а просто позвонили на номер XXXXXX. Когда хотите использовать шаблон не забудьте что для его запуска надо использовать _
5) Вы воспользовалист nat и при этом звук идет только в одну из сторон
Тема работы программы Asterisk и ее пользователей, которые в разных конфигурациях осуществляют трансляции адресов столь объемна, что легко может выйти за пределы данной статьи, но все же я дам несколько советов которые могли бы вас пригодиться:
В случае если нет звука, возьмите обычный бумажный лист и покажите как ходит трафик (не только SIP, но и RTP) между пользователями. Выполнив только этот шаг вы уже сможете понять многое, особенно в случае если вы умеете пользоваться NAT.
В случае когда клиенты потенциально находятся за натом, не давайте им делать reinvite (canreinvite=no в соответствующей секции sip.conf) и поставьте directmedia=nonat, если вам не нужно прохождение всего трафика через Asterisk, что может понадобиться если вы захотите записать разговоры. Остановите свой выбор на чем нибудь одном — поддержку nat в Asterisk или поддержку SIP в брэндмауэре вашей ОС: в Windows ISA Server поддержка SIP, включенная параллельно поддержке nat в Asterisk, дает полное отсутствие звука, поэтому если не можете повлиять на ОС, задавайте nat=no в соответствующих секциях sip.conf
Не забудьте, что кроме трафика на порту 5060/udp, аудио данные передаются по протоколу RTP через udp порты.Их диапазон указан в rtp.conf (по умолчанию 100005) -20000)
В случае если ничего из вышеперечисленного не помогло, включите debug в Asterisk и воспользуйтесь tcpdump — это даст вам возможность увидеть куда уходит аудио-трафик,ведь понять в чем состоит проблемма это уже больше половины от ее решения.
Удачной работы с Asterisk!

Что вы думаете об этом?