Вынос телефонных линий с помощью VoIP-шлюзов Audiocodes

В одной из наших предыдущих статьях мы рассматривали вопрос выноса абонентских телефонных линий при помощи пары голосовых шлюзов Grandstream. За время, прошедшее с момента её выхода, многие наши клиенты отмечали, что данная статья оказалась для них весьма полезной и помогла им легко и быстро решить поставленную задачу. При этом другая часть клиентов просила нас написать аналогичные статьи-инструкции для других популярных моделей шлюзов. Выполняя данные им обещания, сегодня мы рассмотрим, каким образом организовать вынос части номерной ёмкости при помощи оборудования известной израильской фирмы AudioCodes.

db42ddd5240a4f7083711199aa0680bd.jpg


Вкратце напомним постановку задачи — есть головной офис с аналоговой АТС и внутренней нумерацией 401, 402 и так далее. Также есть удаленный офис (в другом здании, городе или стране), в который невозможно протянуть телефонные линии от головной АТС, но требуется подключить к ней четыре абонента с номерами 601 — 604.

В головной офис мы устанавливаем VoIP шлюз AudioCodes с портами FXO — например, MP-114/FXO или MP-118/FXO. В удаленном офисе мы будем использовать шлюз с портами FXS — MP-114/FXS или MP-118/FXS. На телефонной станции головного офиса мы выделяем четыре внутренних порта, которым даем номера 601 — 604 и соединяем эти порты с четырьмя портами FXO-шлюза (для простоты изложения здесь и далее будем использовать модель MP-114/FXO). На стороне удаленного офиса пока просто подключим к портам FXS шлюза MP-114/FXS четыре обычных телефонных аппарата. Оба шлюза должны быть подключены к локальной сети и иметь статические IP-адреса.

6fdb96e8c7994c88a9e41f3f1aa20d3d.jpg

Теперь нам необходимо решить две задачи:

  1. Разрешить абонентам головного офиса (№401, №402 и т.д.) звонить абонентам удаленного офиса (№601 — 604)
  2. Разрешить абонентам удаленного офиса звонить абонентам головного офиса компании


Задача 1. Звонки из головного офиса в удаленный


Этап 1. Активация линий на FXO-шлюзе


Шлюзы AudioCodes помимо таких понятий, как порт или канал, также оперируют понятием Hunt Group — то есть логическим объединением нескольких каналов в одну группу. С помощью Hunt Group в дальнейшем можно настраивать довольно сложную логику маршрутизации вызовов. Для нас же этот функционал является избыточным, так как используемая нами схема — это точка-точка и все вызовы пришедшие с АТС на FXO-шлюз в любом случае не могут быть отправлены никуда, кроме как на FXS-шлюз в удаленном офисе. Тем не менее, для активации линий, нам требуется дать им уникальный номер и объединить в какую-нибудь Hunt Group, иначе данная схема работать не будет.

Идем в раздел Configuration — VoIP — GW and IP to IP — Hunt Group — Endpoint Phone Number и назначаем линиям 1–4 номера 601 — 604 и объединяем все линии в Hunt Group с номером 1.

a9e78e4c820544c6ba4adebd47de890a.jpg

Этап 2. Включение таблицы маршрутизации на FXO-шлюзе


Теперь нам необходимо, чтобы для маршрутизации звонков FXO-шлюз использовал таблицу маршрутизации, которую мы заполним на следующем этапе. Идем в раздел Configuration — VoIP — SIP Definitions — Proxy & Registration. Выставляем опции: Enable Fallback to Routing Table в положение Enable и Prefer Routing Table в положение Yes. Нажимаем Submit в нижнем левом углу для сохранения настроек.

ec7119686c9d474592b968db7c5b73d4.jpg

Этап 3. Заполнение таблицы маршрутизации вызовов на FXO-шлюзе


На прошлом этапе мы настроили наш FXO-шлюз AudioCodes MP-114/FXO на приоритетное использование таблицы маршрутизации, теперь нам эту таблицу необходимо заполнить. Для этого переходим в раздел Configuration — VoIP — GW and IP to IP — Routing — Tel to IP Routing. Как мы уже отмечали выше, данная таблица маршрутизации будет иметь довольно примитивный вид. А именно: все вызовы из любой Hunt Group (а у нас она всего одна), с любого номера (порта) на любой номер должны быть направлены на IP-адрес FXS-шлюза, установленного в удаленном офисе.

9f7fa83ea93c4f1ba4181bd1667abe33.jpg

Этап 4. Подставляем номер звонящего на FXO-шлюзе


На настоящий момент мы добились того, что все вызовы, пришедшие от АТС на FXO-шлюз будут перенаправляться на IP-адрес удаленного FXS-шлюза. Однако, есть небольшая проблема, которая состоит в том, что по умолчанию, FXO-шлюз будет подменять оригинальный CallerID, пришедший от АТС, номером своей линии, на который данный вызов пришел. То есть, все вызовы, пришедшие на первую линию шлюза будут отправлены на удаленный FXS-шлюз с CallerID 601, на вторую — с 602 и так далее. То есть, вместо городского номера или внутреннего номера коллеги, абонент в удаленном офисе будет всегда видеть свой собственный номер, что не есть хорошо.

Для того, чтобы избежать этого, перейдем в раздел Configuration — VoIP — GW and IP to IP — Analog Gateway — Caller ID Permissions. И на всех четырех портах выставляем Enable.

000ed11104fa4e2fb9d5ac80dea3c398.jpg

Этап 5. Автоматический набор удаленного номера на FXO-шлюзе


Теперь впору задаться следующим вопросом: если все телефонные вызовы FXO-шлюз без разбору будет отправлять на удаленный FXS-шлюз, да еще и с сохранением оригинального CallerID, то как же нашему удаленному FXS-шлюзу разобраться, для какого из подключенных к нему телефонов предназначается тот или иной вызов?

Для решения этого вопроса мы задействуем поле Destination Phone Number, то есть номер назначения, который настраивается в разделе Configuration — VoIP — GW and IP to IP — Analog Gateway — Automatic Dialing. Если вызов поступает на порт №1 шлюза, то он подставит в это поле номер 601 и передаст вызов на FXS-шлюз. Для вызова на порт №2 — в поле Destination Phone Number будет подставлен номер 602 и так далее. На основе этого поля, FXS-шлюз, как мы увидим в дальнейшем, и будет распределять вызовы между подключенными к нему аппаратами.

36c9598ce5dc4b10b830ecc4f946a65b.jpg

Этап 6. Активация линий на FXS-шлюзе


Все работы в части подзадачи №1 на FXO шлюзе нами выполнены, и мы можем смело переходить в удаленный филиал для настройки шлюза FXS. Тут нам тоже придется начать с активации линий и объединения их в одну Hunt Group. Переходим в раздел Configuration — VoIP — GW and IP to IP — Hunt Group — Endpoint Phone Number и заполняем его совершенно аналогичным FXO-шлюзу образом: линиям 1–4 даем уникальные номера 601–604 и объединяем их в одну Hunt Group с номером 1. Однако, следует отметить, что если объединение всех номеров в одну Hunt Group носит довольно формальный характер, то назначение номеров линиям — настройка, как мы увидим дальше, принципиальная.

d2d9542fc09943a1ae468000277e2bc6.jpg

Этап 7. Маршрутизация входящих вызовов на FXS-шлюзе


Тоже довольно формальная настройка — в разделе Configuration — VoIP — GW and IP to IP — Routing — IP To Hunt Group Routing Table указываем, что вызовы с любых номеров на любые номера с IP-адреса нашего FXO-шлюза, следует направлять в Hunt Group с номером 1. Она у нас и так одна и объединяет все четыре порта.

9d431c5ef89f44098b8da106a7c99f7d.jpg

Этап 8. Настройка поведения группы поиска на FXS-шлюзе


А вот эта настройка, напротив, является самой важной: ранее мы настроили FXO-шлюз таким образом, чтобы он заполнял поле Destination Phone Number в зависимости от линии, на которую пришел вызов. Теперь мы должны настроить FXS-шлюз, чтобы он на основе этой информации распределял вызовы между своими телефонами. Идем в раздел Configuration — VoIP — GW and IP to IP — Hunt Group — Hunt Group Settings и зададим правило работы нашей единственной Hunt Group: в опции Hunt Group ID выставляем значение 1 (это ID нашей единственной группы), в опции Channel Select Mode нужно выбрать вариант By Dest Phone Number, что означает выбирать линию по номеру назначения, а в опции Registration Mode нужно выбрать режим Don«t Register.

То есть, получив вызов с номером назначения, к примеру — 603, FXS-шлюз отправит этот вызов на свою линию с номером 603. Поэтому назначение номеров линиям на этапе 6 является принципиальным — эти номера должны совпадать с номерами, заданными на этапе 5. Что касается опции Don«t Register — то тут все просто, мы используем наш шлюз не совместно с IP-АТС, а в режиме точка-точка с другим шлюзом, поэтому вся работа у нас ведется в режиме без регистрации.

04127990b6694bb2ba3e91a325e9bb1a.jpg

Этап 9. Проверка


Берем любой внутренний телефон из головного офиса и набираем на нем 601 — вызов должен пойти на телефон, подключенный к первому порту FXS-шлюза. При наборе 602 — на второй и так далее. Если все корректно работает, то работы по задаче №1 можно считать выполненными и переходить ко второй задаче.

Задача 2. Звонки из удаленного офиса в головной


Этап 1. Маршрутизация исходящих вызовов на FXS-шлюзе


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

Переходим в раздел Configuration — VoIP — GW and IP to IP — Routing — Tel to IP Routing на FXS-шлюзе и создаем правило, которое гласит, что вызовы из любой Hunt Group, с любого и на любой номер следует отправлять на IP-адрес FXO-шлюза. Как видно, заполнение таблицы маршрутизации на FXS-шлюзе полностью аналогично таблице маршрутизации на FXO-шлюзе. В принципе, на этом настройка шлюза MP-114/FXS заканчивается, и мы можем вернуться к шлюзу MP-114/FXO в головном офисе компании.

4ea27b9119724d62b9ddbdfcf4233cf6.jpg

Этап 2. Маршрутизация входящих вызовов на FXO-шлюзе


Помним, что главной сущностью в маршрутизации вызовов на шлюзах AudioCodes является так называемая Hunt Group. Поэтому первым делом нам необходимо настроить FXO-шлюз так, чтобы все вызовы со стороны FXS-шлюза поступали в нашу единственную Hunt Group с номером 1. Идем в раздел Configuration — VoIP — GW and IP to IP — Routing — IP To Hunt Group Routing Table и создаем единственное правило. В опциях Dest. Phone Prefix и Source Phone Prefix ставим символ »*», в опции Source IP Address указываем IP адрес FXS шлюза, а в опции Hunt Group ID — номер 1. Все, теперь все вызовы с любого и на любой номер, пришедшие от FXS-шлюза попадут на обработку в Hunt Group №1. А как они там будут обработаны, мы настроим на следующем этапе.

00017fced7924ff99173ae614470f1f7.jpg

Этап 3. Настройка поведения группы поиска на FXO-шлюзе


Итак, все вызовы с FXS-шлюза мы без разбору отправляем в Hunt Group №1 шлюза FXO. Однако последнему необходимо понимать, через какую из своих линий ему следует отправить вызов дальше на АТС, ведь каждому из абонентов в удаленном офисе соответствует определенная линия на FXO-шлюзе и, как следствие, порт на АТС. Для этого нам необходимо перейти в раздел Configuration — VoIP — GW and IP to IP — Hunt Group — Hunt Group Settings и указать, что все вызовы, пришедшие на Hunt Group 1 должны быть отправлены на АТС через линию в соответствии с номером источника. Технически это делается следующим образом: в опции Hunt Group ID выставляем значение 1 (это ID нашей группы поиска), в опции Channel Select Mode выбираем вариант By Source Phone Number, а в опции Registration Mode выбираем режим Don«t Register.

d12afc1eb95a4902a157953fd4e83241.jpg

Для того, чтобы лучше эту логику, рассмотрим часть SIP-сообщения метода INVITE, которое получает FXO-шлюз от FXS-шлюза при попытке удаленного абонента набрать какой-либо номер:

INVITE sip:401@192.168.4.21;user=phone SIP/2.0
Via: SIP/2.0/UDP 192.168.4.22:5060;branch=z9hG4bKac2108928548
Max-Forwards: 70
From: ;tag=1c2108923745
To: 


Как можно увидеть, в SIP-сообщении присутствуют два поля From и To. В поле From указан номер 601 — с этого номера совершается вызов из удаленного офиса, и именно на основе этого поля FXO-шлюз задействует свою линию 601 для передачи этого вызова на АТС. Если вернуться к самому первому этапу первой задачи, мы увидим, что номер 601 соответствует первому порту FXO-шлюза. Поле To определяет, на какой номер будет отправлен вызов — в данном случае это номер 401 — номер внутреннего абонента головного офиса. 192.168.4.21 — это IP-адрес FXO шлюза, а 192.168.4.22 — IP-адрес FXS шлюза.

Этап 4. Настройка вызова в одной действие


Шлюз Audiocodes MP-114 FXO имеет два режима совершения вызовов из IP-сети в сторону аналоговых линий: вызов в 2 действия (Two Stages) и вызов в одно действие (One Stage). Разница между ними следующая: в режиме вызова в два действия, вызов пришедший на шлюз будет отвечен самим шлюзом и скоммутирован на порт АТС, а звонящий услышит привычный гудок, как будто бы он только поднял трубку своего телефона, после чего потребуется набрать номер телефона, который требуется вызвать. В режиме вызова в одно действие шлюз сразу перенаправит вызов на аналоговый порт в соответствии с заданными настройками.
Нам для нашего примера понадобится режим в одно действие (One Stage), так как номер звонящего и номер вызываемого абонента у нас формируются на стороне FXS шлюза. Для этого в разделе Configuration — VoIP — GW and IP to IP — Analog Gateway — FXO Settings в опции Dialing Mode выбрать режим One Stage.

82bd97d432ed41b1bf3e32bcc85683f7.jpg

Этап 5. Проверка и диагностика


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

325414c80af540bca3d155aa956b9c6e.jpg

Самый простой способ — просматривать лог сообщений прямо в веб интерфейсе устройства можно в разделе Status & Diagnostics — System Status — Message Log. Однако, при написании статьи я использовал отправку сообщений на Syslog сервер, настройки которого выполняются в разделе Configuration — System — Syslog Settings. В качестве Syslog сервера использовался Rsyslog. Для того, чтобы получать лог сообщения в конфигурационном файле демона Rsyslog должны присутствовать следующие настройки:

module(load="imudp")
input(type="imudp" port="514")
$template FILENAME,"/var/log/rsyslogd/%fromhost-ip%.log
*.* ?FILENAME


Заключение


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

© Geektimes