Пять распространённых неточностей при наладке Asterisk
Данная публикация рассчитана на тех, кто использует Asterisk в начальном уровне, используя опыт о производительности вычислительных сетевых окружений, на базовом уровне CCNA и имеющих представление об основных аспектах IP-телефонии, не обладая специальными сертификатами о прохождении обучения.
1. Не выключили звонки с неизвестных источников, а так же, использовали стандартные конфигурации.
Существующая проблема:
Путь решения проблемы:
Что нужно предпринять, чтобы избежать данной ситуации: не оставлять отладку в виде стандартной конфигурации, для набора номера. Важно! контекст - (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 — утилита для обработки логов Asterisk, целью которой является выявление и блокировка адресов, с которых осуществлялось большое количество неудачных попыток регистрации.
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 — это даст вам возможность понять куда уходят запросы и аудио-трафик, понимая проблему, считайте что у вас уже 90% ее решения.