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

Клиенты часто обращаются к нам с довольно распространенной проблемой. В общем виде ее можно выразить так: в компании используется аналоговая телефонная станция, к которой необходимо подключить часть пользователей из удаленного местоположения. Это может быть соседний офис, соседний город или даже другая страна — главное, что телефонная сеть туда не дотягивается, зато дотягивается ЛВС или имеется доступ в сеть Интернет. Сегодня мы будем решать данную задачу при помощи VoIP-шлюзов Grandstream серии GXW4xxx.
512849e7b3de4893addc9bbab1dabae2.jpg


На самом деле, у этой задачи существует множество вариаций. К примеру, проброс PSTN-линий в другую локацию или объединение номерных емкостей двух удаленных аналоговых АТС — очень похожие по смыслу и решению задачи. Поэтому, чтобы не вносить лишней путаницы, мы сразу определимся с исходными данными и примем за них следующую иллюстрацию:
be99daffa61f44799a99153df5123d42.png

Имеется головной офис компании, в котором находится аналоговая АТС, с нумерацией внутренних телефонов 2XX. Так же имеется удалённый офис с четырьмя сотрудниками, которым необходимо присвоить внутренние номера 301–304. Требуется предоставить возможность сотрудникам из разных офисов напрямую звонить друг другу, используя внутренний короткий номер.

В головном офисе компании мы разместим VoIP-шлюз Grandstream с портами FXO. Это может быть модель GXW4104 (4 порта) или GXW4108 (8 портов). А в удаленном офисе — шлюз с портами FXS — GXW4004 (4 порта) или GXW4008 (8 портов). Примем для простоты, что мы работаем с четырехпортовыми шлюзами GXW4104 и GXW4004 соответственно.

Выделим в нашей аналоговой АТС четыре внутренних порта и назначим на них внутренние номера — 301–304. Подключим Grandstream GXW4104 к локальной сети, назначим статический IP-адрес и соединим внутренний порты АТС с портами шлюза (№301 — с первым портом шлюза, №302 — со вторым и т.д.). В удаленном филиале также назначим статический адрес шлюзу GXW4004 и подключим к нему четыре аналоговых телефонных аппарата.

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

  1. Разрешить абонентам головного офиса (№201, №202) звонить абонентам удаленного офиса (№№301 — 304)
  2. Разрешить абонентам удаленного офиса звонить абонентам головного офиса компании.


Решение первой задачи начнем с конфигурирования GXW4104:

  1. Раздел Accounts — Account 1 — General Settings. В поле SIP Server указываем IP-адрес FXS-шлюза Grandstream GXW4004, расположенного в удаленном офисе. Если шлюзы расположены в одной локальной сети или объединены VPN — указываем локальный IP-адрес. В противном случае, указываем внешний IP-адрес удаленного подразделения, а на удаленном маршрутизаторе придется пробрасывать порты. Про проброс портов отдельно расскажем чуть позже.

    79368f726711473d8fcf61db31462abc.jpg

  2. Раздел Accounts — Account 1 — SIP Settings. В поле SIP Registration выбираем значение No — шлюзы будут взаимодействовать между собой в режиме «без регистрации».

    851511580e5946a294fa88cf5163d6c7.jpg

  3. Раздел Settings — Channels Settings — Calling to VoIP. В поле SIP Server мы указываем ch1–4: p1; Это означает, что вызовы, поступившие от АТС на любой из FXO портов шлюза, будут перенаправлены на IP-адрес, указанный в разделе Accounts — Account 1 — General Settings. Если бы по каким-либо причинам вместо Account1 мы бы использовали Account2, то эта запись выглядела бы следующим образом: ch1–4: p2; Если бы мы использовали восьмипортовый шлюз GXW4108, то для работы со всеми его портами мы бы указали ch1–8: p1;

    0ab89b78ae1e48759564a2eab58aa2e0.jpg

  4. Раздел Settings — Channels Settings — Calling to VoIP. Мало знать IP-адрес, на который следует перенаправлять вызовы, нужен еще SIP-порт. Поэтому в поле SIP Destination Port мы меняем значение по умолчанию ch1–4:5060 на ch1–4:5060++; Запись означает, что вызовы с АТС на первый FXO-порт будут отправлены на SIP-порт 5060 удаленного шлюза, на второй FXO-порт — будут отправлены на SIP-порт 5062, на третий и четвертый — на порты 5064 и 5066 соответственно. Именно на основе SIP-порта, на который пришел вызов, FXS-шлюз в удаленном филиале будет понимать для какого из четырех его телефонов, этот вызов предназначен.
  5. Раздел Settings — Channels Settings — Calling to VoIP. Поле User ID по умолчанию имеет вид ch1–4: . Нам это не совсем подходит, так как в этом случае, пришедший с АТС вызов не будет автоматически перенаправляться в IP-сеть. Вместо этого, шлюз будет ожидать, когда абонент АТС, инициировавший вызов, донаберет некоторый номер, на который и следует отправить вызов. Нам это не подходит, поэтому в это поле было бы логично записать следующее: ch1:301; ch2:302; ch3:303; ch4:304. Тогда FXO-шлюз будет добавлять номера 301–304 (в зависимости от порта) в SIP-сообщение для передачи на FXS-шлюз. Но, как мы отметили ранее, удаленный FXS-шлюз будет распределять звонки между своими телефонами только на основе SIP-порта, поэтому такая запись будет излишней. Нам достаточно указать абсолютно любое значение, кроме пустого, чтобы FXO-шлюз начал пересылать вызовы на указанный IP-адрес по указанным портам. Записи ch1–4:123; или ch1–4: x; вполне будут работать.


Все остальные настройки шлюза GXW4104 можно оставить по умолчанию. И этих настроек вполне достаточно, чтобы организовать связь со стороны абонентов головного офиса с абонентами филиала. Да, удаленный шлюз GXW4004 даже не надо настраивать, так как он по умолчанию слушает порты 5060, 5062, 5064 и 5066 и пришедшие на эти порты сообщения преобразовывает и передает на порты 1–4 соответственно. Нечетные SIP-порты 5061, 5063, 5065 и 5067 на FXS шлюзе отданы по умолчанию для SIP over TLS.

Тем не менее, от нас требуется решить еще и вторую задачу — организовать связь со стороны абонентов удаленного филиала с абонентами головного офиса. Решить эту задачу можно двумя способами: по аналогии с первой задачей, используя различные SIP-порты для различных каналов или с помощью диалплана. Выберем второй вариант: откроем Web-интерфейс удаленного шлюза Grandstream GXW4004 и переходим в раздел Profile 1:

a0160e878695450da2ecf26ce5bcb0d4.jpg

  1. В поле Primary SIP Server указываем IP-адрес FXO-шлюза Grandstream GXW4104, расположенного в головном офисе. Если это не локальный IP-адрес, то также потребуется проброс портов.
  2. В поле SIP Registration выбираем значение No — шлюзы будут взаимодействовать между собой в режиме «без регистрации».
  3. В поле Outgoing Call without Registration выбираем значение Yes, разрешая тем самым совершать шлюзы исходящие вызовы в режиме «без регистрации».
  4. В поле Dialplan указываем {<=99$P>x+}. Эта запись говорит шлюзу о следующем: разрешить набор всех номеров, состоящих из одной и более цифр (x+) и каждому набираемому номеру добавлять префикс 99$P, где $P — это номер FXS-порта, к которому подключен телефон, совершающий вызов. Когда абонент 301 наберет на своем телефоне номер 202, то шлюз GXW4004 передаст на GXW4104 номер вида 99–1–202. Если абонент 303 будет набирать номер 204, он будет передан как 99–3–204. Именно на основе этого префикса, FXO-шлюз в головном офисе и будет определять, через какой FXO-порт ему следует передать вызов на АТС.
    2a75a64ce3b7432eb93b0886305dc85d.jpg


Возвращаемся к настройке шлюза GXW4104 в головном офисе: открываем Web-интерфейс и переходим в раздел FXO Lines > Dialing.

  1. В поле Stage Method (½) делаем запись ch1–4:1; Это означает, что для всех четырех каналов будет использоваться вызов без донабора. Если бы мы оставили запись по умолчанию ch1–4:2, то абоненту удаленного филиала пришлось бы повторно набирать необходимый ему номер, после попадания вызова на FXO-шлюз. А это лишняя работа, так как абонент один раз уже набрал нужный ему номер.

    474a8a2498174f8098e9473bbec0692e.jpg

  2. В поле Prefix to Specify Port оставляем значение по умолчанию 99. Обнаружив этот префикс в пришедшем из филиала номере, FXO-шлюз поймет, что следующая цифра — это номер порта, через который ему следует этот вызов отправить на АТС. Таким образом, мы добьемся того, чтобы вызовы от удаленных абонентов приходили строго в назначенные им порты на АТС.


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

О пробросе портов
Какие порты следует пробрасывать?
  1. В нашей конфигурации — это UDP-порты 5060, 5062, 5064 и 5066 для SIP-протокола. Для восьмипортовых шлюзов потребуется также пробросить четные порты 5068 — 5074.
  2. Голосовой трафик RTP: на каждый канал связи задействовано 2 порта (сам голос RTP + управление RTCP). На шлюзах начальный порт указывается в опции Local RTP port, по умолчанию для обоих шлюзов — 5004, соответственно для первого порта будут прослушиваться UDP порты 5004 + 5005, для второго 5006+5007 и так далее. Соответственно, при использовании Local RTP port = 5004, потребуется пробросить для 4-портового шлюза — порты 5004–5011, а для 8-портового шлюза — порты 5004–5019.

Естественно, проброс портов строго рекомендуется делать с привязкой к адресу источника. А еще лучше вовсе отказаться от проброса портов и, по возможности, организовать сеть VPN между двумя удаленными локациями.

Несколько удаленных офисов


Немного изменим задачу. Допустим, нам необходимо подключить не один, а несколько удаленных филиалов к центральной АТС компании. Пусть это будут три розничные точки по одному абоненту в каждой:
8a356b0d613949889cdb98058b839206.png

В эти точки вместо четырехпортовых шлюзов было бы логичней поставить недорогие однопортовые SIP-адаптеры, например, Grandstream HT701. Как в таком случае изменятся настройки на шлюзе GXW4104? Для прохождения вызова от абонентов головного офиса к удаленным абонентам теперь не требуется использовать различные SIP-порты, так как теперь вызовы для различных удаленных абонентов будут направляться на различные IP-адреса. И тут мы встречаемся с первой проблемой — количество SIP-серверов, которые можно задать на GXW4104 (и даже на GXW4108) ограничено тремя, поэтому больше чем три локации подключить через один такой FXO-шлюз не получится.

  1. Заходим в раздел Accounts — Account 1 — General Settings. В поле SIP-Server указываем IP-адрес шлюза HT701 розничной точки 1. Делаем то же самое для Account 2 и Account 3, указывая адреса шлюзов из розничной точки 2 и 3 соответственно.

    008f332b80d74e31956e6938f3d9c6a8.jpg

  2. Раздел Accounts — Account 1 — SIP Settings. В поле SIP Registration выбираем значение No. Повторяем для Account 2 и Account 3.

    92bd71004f9c4c0288b0cd29744fcb4c.jpg

  3. Раздел Settings — Channels Settings — Calling to VoIP. В поле SIP Server мы указываем ch1: p1; ch2: p2; ch3: p3; ch4: p1; Хоть четвертый канал и не используется, профиль мы для него назначить должны. В поле SIP Destination Port мы оставляем значение по умолчанию ch1–4:5060. Поле User ID заполняем аналогично предыдущему примеру, например, ch1–4:123;

    47bccb2350304610a820ba8b4b2e54c2.jpg


Исходящие вызовы с центральной АТС в удаленные точки заработали, так как каждый HT701 слушает свой порт 5060 по умолчанию и при поступлении звонка инициирует вызов подключенного к единственному FXS-порту телефона. Для того чтобы вызовы пошли в другую сторону, необходимо настроить каждый Grandstream HT701. Заходим на Web-интерфейс шлюза HT-701 и переходим в раздел FXS PORT.

  1. В поле Primary SIP Server указываем IP адрес FXO шлюза Grandstream GXW4104.

    873ba9376ce24b3990898461463c04b5.jpg

  2. В поле SIP Registration выбираем No

    f21d04939913483fa4b1ed204bf612f2.jpg

  3. В поле Dial Plan Prefix указываем 991 для первой точки (телефон 301), 992 для второй (302) и 993 для третьей (303). На основе этого префикса FXO-шлюз в головном офисе поймет, через какой порт следует отправлять вызов на АТС.

    3cc2262c8d504ca9b6a6378843d7a1c7.jpg


Если в настройках FXO Lines > Dialing Grandstream GXW4104 в поле Stage Method (½) указано ch1–4:1, а в поле Prefix to Specify Port указано 99, то вызовы от абонентов удаленных точек в сторону абонентов головной АТС также заработают.

Используем IP-телефоны


В рассматриваемой задаче FXO-шлюз, установленный в головном офисе, является ключевым элементом, отказаться от которого мы не можем, так как центральная АТС, по условиям задачи, не поддерживает протокол SIP. Если замена центральной АТС — это трудоемкая и дорогостоящая процедура, то заменить аналоговые телефоны на аппараты с поддержкой SIP в удаленных филиалах довольно легко и многие наши клиенты так и поступают. Это несколько упрощает схему:
aeae9827eddf4290832719301044e286.png

Настройки шлюза GXW4104 не меняются по сравнению с предыдущим примером. Настройки IP-телефона рассмотрим на примере модели Grandstream GXP1620. Откроем Web-интерфейс и перейдем в раздел Accounts — Account 1 — General Settings.

  1. В поле Account Name укажем номер телефона — 301, 302 или 303.
  2. В поле SIP Server укажем IP адрес FXO шлюза Grandstream GXW4104.

    ebcade2b796846638deefd2d2df9972c.jpg

  3. Перейдем в раздел Account 1 — SIP Settings — Basic Settings и в поле SIP Registration выберем No.

    3ada6ae569a543ab84a2745067c7d411.jpg

  4. Перейдем в раздел Account 1 — Call Settings и в поле Dial Plan Prefix укажем значение 991 для телефона 301, 992 — для телефона 302 и 993 для телефона 303.

    9dcf88b151344212aca8beb6bffe415a.jpg


На этом настройка IP-телефона закончена — теперь с них можно совершать вызовы на телефоны абонентов центральной АТС. Следует отметить, что не все телефоны могут работать в такой конфигурации. Главное требование к аппаратам — возможность совершать вызовы без регистрации. Также телефоны должны уметь добавлять префикс в набираемый номер. Второе требование не является обязательным, так как вместо использования диалплана, можно направлять вызовы с разных IP-телефонов на различные SIP-порты FXO-шлюза, что позволит последнему правильно отправлять вызовы на АТС. Также можно воспользоваться 2-этапным набором номера, что, правда, менее удобно. Наиболее популярные марки IP-телефонов, такие как Grandstream, Yealink, Fanvil, Linksys отвечают указанным требованиям и поддерживают работу в данной конфигурации.

© Geektimes