Найти в Дзене
ezmax

Asterisk+FreePBX и NAT через Zyxel ZyWALL USG 50 на Ericsson-LG iPECS-LIK 600

Очередной опыт товарищи! Такого пушистого зверька давненько у меня не было! Итак...
Как начинающий Asteriskовод чудом получил подряд на создание АТС с некоторыми функциями, практически стандартными для любого предприятия. Есть провайдер у которого SIP раздается железякой Ericsson-LG iPECS-LIK 600 с прошивкой 6.0Bo, так в дебаге пакеты представлялись: "Мы мол от нее". Сеть предприятия выпускает в Интернет Zyxel ZyWALL USG 50, от Интернета он же и защищает.
Asterisk с вэб-мордой FreePBX установлен. Настраиваю SIP-транк для преодоления NAT силами Астера, для этого обязательно пишем в PEER Details:

nat=yes
qualify=yes
canreinvite=no

Этого всегда достаточно. В строке регистрации указываю учетные данные:
KryakozYabra:ItutKryakozYabrochka@XX.XX.XX.XX/1000 где:
KryakozYabra - ID
ItutKryakozYabrochka - пароль (secret)
XX.XX.XX.XX - IP SIP-сервера провайдера
/1000 - номер экстеншена под которым наша линия живет на стороне провайдера.
Запускаем, не регится. Плохо. Лезем в ZyWALL: Configuraton->ALG->SIP Settings и ставим галочку напротив Enable SIP ALG. Ниже стояла включенная Enable SIP Transformation и Enable Configure SIP Inactivity Timeout, как потом выяснилось зря. Ура! Все регится, все работает! Но...
Через час выяснилось, что регистрация отваливается. Извне звонки не приходят. Если позвонить с Астера наружу, то происходит регистрация, поднимается канал и через полчаса при отсутствии звонков опять умирает. Долго ломал голову, но дьявол как говорится кроется в деталях. Дружище подсказал, что строка регистрации должна быть вида 1000:KryakozYabra:ItutKryakozYabrochka@XX.XX.XX.XX/1000. Только с таким "крокодилом" возможна стабильная работа на стороне провайдера.
Проверяем безопасность:
sudo asterisk -vvvvvr
sip set debug on
Наблюдаем пакеты и читаем что в них приходит. Видим незнакомые совершенно IP адреса которые кучей валятся в пакетах не прошедших регистрацию и отвергнутых нашим *.
sip set debug off
Лезем опять по https в ZyWALL и в меню выбираем: Monitor-System Status-Session Monitor-Session. Применил фильтр sessions by source IP и наблюдаю неизвестные IP адреса пытающиеся достучатся на порт 5060. Адреса из Америки, Пакистана, Индии и Китая. Все хотят поиметь нашу связь и перебирают пароли и логины брутфорсом.
В фаерволе ZyWALLa прописываю жесткие правила для общения АТС только с нашим оператором связи и внутренней сетью, остальные идут лесом. Не тут-то было! Количество потенциальных нахлебников только растет!
После долгих мучений и боли в глазных яблоках от монитора, доперло, что необходимо в меню Зухеля ALG-Sip Settings вырубить  Enable SIP Transformation и Enable Configure SIP Inactivity Timeout. Тогда порт 5060 перестает светить в Интернет и телефонные флибустьеры отвалились. Но, едрит-карбид, телефония стала работать как-то неуверенно! То IVR после 8-й посылки вызова включится на входящем звонке, то не разберет, что вызываемый абонент положил трубку, то тональный донабор пропадет. Голова как котел кипящий, уже ни черта не соображает. К ночи удалось устаканить. В FreePBX дополнительно каждому Extensions установил nat=yes, и в Asterisk SIP settings тоже напротив nat нажал кнопку "yes". Только так все стало стабильно робить.
В сухом остатке: Ericsson-LG iPECS-LIK 600 - капризная и требовательная PBX, как и любая железяка. ZyWALL - довольно надежное и гибкое решение со своими странностями, которыми надо проникнуться. *+FreePBX-шайтан-машина, но очень одаренная.