Как соединить 2 FreePBX сервера между собой

Такая задача может возникнуть по разным причинам, но самое частое использование — это объединение двух офисов находящихся в разных городах. Выполнив такую настройку пользователи смогут звонить друг другу по внутренним номерам как-будто они находятся в одном офисе.

Самым удобным решение будет использование протокола IAX2. Он работает через один порт (по умолчанию 4569) и обеспечивает более надежное соединение, особенно если сервера находятся за NAT. Так же, обычно, он расходует меньше трафика за счет исключения сервисных заголовков.

Описание имеющейся инфраструктуры

Имеем два сервера в Москве и Санкт-Петербурге. Оба видят друг друга через интернет и имеют статические адреса:

192.168.0.100 — Москва (внутренние номера 100-199)

192.168.0.200 — Санкт-Петербург (внутренние номера 200-299)

Между серверами проброшена шифрованная VPN сеть (поэтому адреса внутренние) для обеспечения безопасности соединений. Конечно можно и без неё, но тогда все наши звонки потенциально могут быть перехвачены.

Настройка серверов

Оба сервера настраиваются одинаково. Меняется только ip адрес и название контекста транка. Создадим новый транк на сервере в Москве

Создание нового IAX2 транка

В первом окне оставляем все по умолчанию, вводим только любое удобное название транка.

Далее переходим к самой ответственной части. На кладке «iax Общие настроки» нужно прописать конфигурацию для входящих и исходящих соединений. Различаться она будет только названием контекста. В параметре host указываем ip адрес сервера в Санкт-Петербурге.

Исходящий контекст
Входящий контекст
type=friend
host=192.168.0.200
qualify=yes
insecure=invite,port
nat=no
context=from-internal
disallow=all
allow=ulaw&alaw&g729

Первый сервер настроен, на сервере в Санкт-Петербугре прописывает все аналогичным образом, только меняем host на 192.168.0.100.

Если все сделано правильно, то на обоих серверах если в консоли прописать «iax2 show peers» увидим по два (входящий и исходящий) соединения со статусом OK.

Так как мы объединяем два сервера с фиксированными статическими ip адресами, то можно настроить аутентификацию по адресу. Если адрес одной или обеих машин не фиксированы, то можно настроить аутентификацию через логин и пароль. Тогда настройка будет такой и на втором сервере надо будет прописать строку регистрации

type=friend
secret=длинный_пароль
qualify=yes
nat=no
insecure=invite,port
host=dynamic
fromuser=from_spb
disallow=all
defaultuser=from_spb
context=from-internal
allow=alaw&ulaww&g729

Настройка строки регистрации:

Register String: user:password@host
Register String: from_spb:длинный_пароль@192.168.0.200

Настройка маршрутизации звонков

После того как два сервера установили связь им необходимо объяснить правила переадресации звонков между собой.

На московском сервере настроим маршрутизацию звонков для номеров 200 (2XX) в наш новый настроенный транк. Для этого во вкладке «Подключения» выберем пункт «Исходящая маршрутизация»

Кнопка настройка исходящей маршрутизации

На открывшейся странице нажимаем кнопку «Добавить маршрут». Необходимо заполнить поле «Название маршрута» любым удобным названием. Выбрать тип маршрута — «Внутрикорпоративный» и в пункте » Последовательность транков для совпавших маршрутов» выбрать наш настроенный транк. Все остальное оставляем по-умолчанию.

Создание нового исходящего маршрута

Далее переходим на вкладку Правила набора. В поле «совпадение шаблона» вбиваем шаблон номеров второго сервера — это 200-299. В качестве шаблона он будет выглядеть как 2XX, где X будет определяться как любая цифра.

Шаблон транка

Создаем новый маршрут и на общей странице исходящей маршрутизации переместим его на самый верх чтобы он проверялся раньше других. Теперь все запросы на номера 2XX будут отправляться в транк to_spb и пересылаться на соответствующий сервер.

Связь трех и более серверов

Принципиальной разницы сколько серверов объединять нет, настройки каждого сервера не отличаются от настроек описанных ранее. Единственное, надо выбрать из двух возможных вариантов объединения (или, возможно, их комбинацию).

Первый вариант — линейное объединение, когда сервера связываются последовательно и вызов проходит через все сервера пока не найдет нужного абонента. При этом трафик звонка так же будет идти через все сервера, что может создать большую задержку при их большом количестве. Сервер один связывается по протоколу IAX2 с сервером два, сервер два с сервером 3 и так далее. Настройками маршрутизации выбирается связанный сервер и вызов по цепочке передается пока не найдет нужного абонента.

Второй вариант — соединение каждого сервера с каждым. Такой вариант может быть сложен из за обилия настроек, так как на каждом из них придется настроить связь со всеми остальными. Но зато вызов не будет проходить через длинную цепочку серверов и сразу будет попадать на нужный, что уберет лишнюю задержку и нагрузку на сервера.

Для простых сетей и малого количества серверов стоит выбирать первый вариант, в другом же случае возможна настройка некого комбинированного варианта.

Запись опубликована в рубрике Телефония с метками , , . Добавьте в закладки постоянную ссылку.