среда, 1 марта 2017 г.

Подключение Free PBX к провайдерам связи за NATа на базе PFsence

Кроме базовых настроек ниже описаны особенности настройки подключения Вега (FARLEP) SIP Украина и MEGAFON Россия
Эти операторы по разному обрабатывают пакеты с NAT заголовками, а так же есть различия в работе с RTP трафиком. 

Исходные данные
1. Установленный Астериск (FreePBX)
2. Несколько локальных подсетей (192.168.0.0/24; 10.1.0.0/16; 10.2.0.0/16)
3. NAT настроенный на PFsence
4. Cтатический внешний IP (пусть будет 1.1.1.1)
5. 2 провайдера связи (IP-телефонии), у которых разный режим подключения
А) с регистрацией
Б) без регистрации с привязкой по IP
FreePBX имеет адрес 192.168.0.2, PFsence как шлюз имеет два интерфейса, на внутреннем интерфейсе 192.168.0.1, на внешнем 1.1.1.1 и VPNы 10.1.0.1, 10.2.0.1
Начнем с настроек самого FreePBX (далее будут настройки с названиями из русского WEB-интерфейса)
Идем в меню как показано на риснуке ниже и выполняем следующий набор действий:
- жмем кнопку «определить IP», адрес автоматом подтянется
- прописываем все наши внутренние подсети с маской


 Далее справа в верху выбираем меню chan SIP



Режим NAT устанавливаем YES, и для его корректной работы конфигурация IP адреса устанавливаем параметр  "Статический ИП".
Далее следует настройка внешних линий, они же trunk.

Первым будем настраивать линию от Вега (FARLEP) Украина. Он работает с привязкой к IP-адресу, без регистрации. Но первая и главная его проблема, если не прописать внутренние сети или не включить NAT, как указано выше то не будет либо регистрации, либо голоса, ну и естественно если нет регистрации, то голоса то же.

FARLEP

Идем в меню подключения => Транки и жмем добавить SIP(chan_sip) транк.
В новом окне начинаем заполнять:
1. Название транка и Исходящий CallerID прописываем номер телефона выданный провайдером в полном формате (пусть это будет 380445554433)
2. Опции CallerID – форсировать разрешить любые CID.
3. Максимально каналов – ставим не меньше чем заказали у провайдера
4. Название транка - 380445554433
5. опции для PEER
type=peer
qualify=yes
host=62.221.34.22
fromuser=380445554433
fromdomain=1.1.1.1
disallow=all
allow=alaw
6. Установки входящих соединений
Все пустое
7. Строка регистрации – пустая.
Жмем сохранить, а после вверху - применить.

Далее настроим входящие и исходящие правила для этой внешней линии.

Идем в Подключения => Исходящая маршрутизация.

1. Даем понятное нам название транка
2. Caller ID (CID) для маршрута – 380445554433 и ставим галочку перезаписать внутренний номер (что бы в линию подавался именно номер линии, иначе провайдер отбросит звонок)
3. Шаблоны номеров используемые на маршруте. Распишу самый простой шаблон, кому необходимо может делать свои, в интернете море информации:
Приставка – оставляем пустой
Префикс – 9 (9-ка используется как показатель выхода на внешнюю линию, можно назначить любую другую цифру, но надо обратить внимания, что бы она не пересекалась с первой цифрой номера).
Совпадение шаблона – 380. (38 – код страны Украина, на 0 начинаются все телефонные номера, символ «.» заменяет любое кол-во любых цифр)
Последовательность транков для совпадающих маршрутов – в выпадающем меню выбираем наш транк 380445554433
4. Жмем сохранить, после вверху появившуюся кнопку применить.

Далее будем настраивать входящую маршрутизацию

Идем Подключения => Входящая маршрутизация
1. Описание – любое понятное нам описание (обращаю внимание, что поддерживаются только символы латиницы), пусть будет 380445554433 Ukraine
2. Номер DID – 380445554433 (что бы система поняла, при звонке на какой номер будет работать правило).
3. По желанию можно поставить галочку (я советую так сделать) Сигнализация вызова (КВП), это будет посылать гудки в линию при звонке на этот номер.
4. Установить направление – тут выбираем нужный нам вариант (например, внутренний номер, на который придет входящий звонок).
5. Жмем сохранить, применить.
Таким образом на АТС настроена внешняя линия от Вега (услуга называется SIP trunk).

MEGAFON

Начнем настройку внешней лини от Мегафон (услуга мультифон).
Первым делом переключаем  услугу в режим только PC, пусть наш номер от мегафона будет 79265554433
  
Идем Подключения => Транки и жмем добавить SIP(chan_sip) транк.
В новом окне начинаем заполнять:
1. Название транка и Исходящий CallerID прописываем номер телефона выданный провайдером в полном формате (79265554433)
2. Опции CallerID – форсировать разрешить любые CID.
3. Максимально каналов – ставим не меньше чем заказали у провайдера
4. Название транка – 79265554433
5. Опции peer
username=79265554433
type=peer
secret=пароль
qualify=yes
port=5060
nat=yes
insecure=port,invite
host=sbc.megafon.ru
fromuser=79265554433
fromdomain=multifon.ru
dtmfmode=inband
context=from-trunk

6. Контекст USER – 79265554433/1
7. Опции USER
type=user
insecure=port,invite
host=sbc.megafon.ru
8. Строка регистрации
79265554433@multifon.ru:пароль: 79265554433@sbc.megafon.ru:5060/79265554433
9. Жмем сохранить, применить.


Идем – Подключения => Исходящая маршрутизация.

1. Даем понятное нам название транка
2. Caller ID (CID) для маршрута – 79265554433 и ставим галочку перезаписать внутренний номер Шаблоны номеров используемые на маршруте. Распишу самый простой шаблон, кому необходимо может делать свои, в интернете море информации:
Приставка – оставляем пустой
Префикс – 9
Совпадение шаблона – . (точка заменить любое количество, любых цифр, но в этом случае номер придется набирать в полном формате, например 89265554433)
Последовательность транков для совпадающих маршрутов – в выпадающем меню выбираем наш транк 79265554433
3. Жмем сохранить, после вверху появившуюся кнопку применить.

Идем Подключения => Входящая маршрутизация

Идем Подключения => Входящая маршрутизация
1. Описание – любое понятное нам описание (обращаю внимание, что поддерживаются только символы латиницы), пусть будет 79265554433 Megaphone
2. Номер DID – 79265554433
3. По желанию можно поставить галочку .
4. Установить направление – тут выбираем нужный нам вариант (например, внутренний номер, на который придет входящий звонок).
5. Жмем сохранить, применить.

Особенности работы.
На этом настройка внешних линий завершена. Далее необходимо настроить наш Pfsence.
Итак, какая информация имеется у нас о провайдерах:
1. Вега – Принимает регистрацию только с порта 5060, а вот наш NAT может порт поменять на свой (PFSenсe v2 и выше делает именно так), надо будет настроить выход порт в порт. Сама АТС провайдера настроена таким образом, что если в пакете, в заголовках от нашей АТС проскользнет наш внутренинй IP ни чего работать не будет, по этому включение NAT обязательно на АТС.
2. Мегафон – работает с регистрацией, поэтому тут все проще…кроме одного, регистрацию он принимает на один IP адрес (193.201.229.35), а голосовой трафик у него идет с другого IP (193.201.229.19), по этому плохо настроенный NAT наш трафик на АТС не пропустит.

Переходим к наcтроqке Pfsence.

Для ВЕГА.

В Firewall=> NAT=>Port forward делаем правило :
Interface – WAN
Protocol – TCP
Source – Single host or alias 62.221.34.22
Redirect target IP - 192.168.0.2
Redirect target port – SIP
Сохранить, Применить

В Firewall=> NAT=>Outbound
Interface – WAN
Source – network 192.168.0.2/32 port 5060
Destination – ANY, port 5060
Translation
Port 5060
Сохранить, Применить. 

По умолчанию при создании правил NAT PFsense создает сразу правила в FireWall

Таким образом были сделаны настройки необходимые для работы фарлепа. Проверяем в командной строке Freepbx командой seep show peers и sip show registry что линия доступна и что она зарегистрировалась. Далее совершаем звонок, проверяем что он проходит и что есть голос в обе стороны.

Для MEGAFON.

Идем в Firewall=>Aliases=>Ports
Жмем добавить, Имя - RTP, Type – ports, Port – 10000:20000
Сохраняемся.
Далее идем Firewall=> NAT=>Port forward делаем правило :
Interface – WAN
Protocol – TCP
Source – Single host or alias 193.201.229.35
Redirect target IP - 192.168.0.2
Redirect target port – SIP

Сохраняем, применяем и тут же создаем еще одно правило:

Interface – WAN
Protocol – UDP
Source – Single host or alias 193.201.229.19
Destination port range – port other, а в окошке custom пишем RTP
Redirect target IP - 192.168.0.2
Redirect target port – port other, а в окошке custom пишем RTP
Жмем сохранить, применить.

Далее проверяем что все работает. Регистрация успешна и голос проходит.






Комментариев нет: