Pull to refresh

Пошаговое руководство по привязке SIP-номера к Elastix (FreePBX, Asterisk) на примере провайдера Megaline iDPhone

Asterisk *Development of communication systems *
Sandbox
Tutorial

Всем доброго времени суток.


IP телефония вообще достаточно интересная штука, однако для человека, столкнувшегося с подобной системой в первый раз, процесс настройки может показаться пугающе трудным. Подробнее о том, как и зачем устанавливать программные IP-АТС можно почитать где-нибудь еще (благо информации по этому вопросу предостаточно), я же хотел более подробно остановиться на вопросе ее интеграции с городскими SIP-номерами одного Казахстанского провайдера.
image


Я думаю, сразу стоит упомянуть, что ни какого отношения к этому провайдеру я не имею (за исключением того, что являюсь пользователем их услуг).

Что нам потребуется:




Для ясности:


  • Казактелеком — Казахстанский интернет и SIP провайдер
  • Megaline — ADSL-интернет от Казактелекома
  • ID Phone — SIP-телефония от Казактелекома


Итак. Наша компания получила в свое распоряжение 2 SIP-номера по 2 линии на каждом. Под рукой оказался старенький системник на который и был успешно установлен Elastix. Тут то и началось самое интересное.

Часть 1. Настройка сети.


Немного теории: для обеспечения качества связи, Казактелеком делит физический канал ADSL на 2 логических, не влияющих друг на друга. Получается, что с ADSL-модема будет выходить два интерфейса, один для интернета, другой для ID Phone (SIP). Соответственно Elastix тоже должен быть подключен к обоим этим интерфейсам. Но тут возникает еще одна проблема. ID Phone раздает IP-адрес по DHCP, поэтому интерфейс на Elastix должен быть настроен на получение IP по DHCP. Второй интерфейс служит для доступа в интернет, соответственно должен иметь Default Gateway — основной шлюз. Выходит, что основной шлюз прописан на обоих интерфейсах. Для решения данной проблемы и было принято решение использовать вторую сетевую карту. Идея в том, что второй сетевой картой астериск подключается напрямую в ADSL-модем в порты для ID Phone. Сетевая карта получает динамический IP-адрес типа 10.20.130.11. Проблема в том, что в этой ситуации сервер Elastix обретает два Default Gateway. Один уже ранее прописанный на Megaline 192.168.100.1 и второй, полученный по DHCP из сети ID Phone. Трафик начинает блуждать, ничего не работает. Как быть?
Прежде всего, идем в настройки ADSL-роутера (в моем случае 192.168.100.1) и выключаем DHCP для одного из Ethernet-портов (в моем случае 4-й), в который будет подключен Elastix напрямую из второй сетевой карты. На моем TP-Link TD-W8951ND это выглядит следующим образом:
image

Подключаем вторую сетевую карту (если еще не сделали этого ранее) и через SSH коннектимся к серверу Elastix, после чего вводим команду
ifconfig

Результат выглядит примерно так:
image

Видим, что устройство под названием eth0 имеет статичный IP (в моем случае это 192.168.100.6), по которому мы подключаемся к web-интерфейсу. Значит, сетевая карта, которую мы собираемся настроить на работу с DHCP Казактелекома - eth1.
Оказывается, в отличие от винды, линукс можно приучить получать по DHCP не все, что предлагается, а определенные части. Такие, как IP-адрес, домен, DNS-сервера и т.д. НО НЕ Default Gateway! Для этого, используя SSH-клиент подключаемся к серверу и создаем файл под названием
/etc/dhclient-eth<X>.conf

где X – номер вашей сетевой карты. В моем случае это
/etc/dhclient-eth1.conf


пишем:
send host-name "asterisk";
request subnet-mask, broadcast-address, time-offset, host-name;

Теперь в SSH-клиенте перезапускаем сервис сети командой
service network restart

После этого сетевая карта получит адрес по DHCP, но уже без шлюза по умолчанию. Далее создаем файл
/etc/sysconfig/network-scripts/route-eth<X> (без расширения)
, в котором пишем:
GATEWAY0=192.168.100.6
NETMASK0=255.0.0.0
ADDRESS0=10.0.0.0

Далее. Изменяем содержимое файлов:
  1. /etc/sysconfig/network-scripts/ifcfg-eth0

    # Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller
    DEVICE="eth0"
    BOOTPROTO=static
    HWADDR=<b>ваш mac-адрес</b>
    ONBOOT=yes
    TYPE=Ethernet
    IPADDR=192.168.100.6
    NETMASK=255.255.255.0
    NOZEROCONF=yes
    BROADCAST=192.168.100.255
    NETWORK=192.168.100.0
    DEFROUTE=yes
    NM_CONTROLLED="no"
    NAME="eth0"
    #
    #   the GATEWAY is sometimes in: /etc/sysconfig/network
    GATEWAY=192.168.100.1
    

  2. /etc/sysconfig/network-scripts/ifcfg-eth1

    # Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
    DEVICE=eth1
    BOOTPROTO=dhcp
    ONBOOT=yes
    HWADDR=<b>ваш mac-адрес</b>
    TYPE=Ethernet
    IPADDR=
    NETMASK=
    NOZEROCONF=yes
    NM_CONTROLLED="no"
    
  3. /etc/sysconfig/network

    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=host.asterisk
    GATEWAY=192.168.100.1
    DNS1=192.168.100.1
    DNS2=8.8.8.8
    
  4. /etc/hosts

    # Do not remove the following line, or various programs
    # that require network functionality will fail.
    127.0.0.1	localhost 192.168.100.6 localhost.localdomain
    


На этом настройка сетевых карт завершена. На всякий случай, еще раз для ясности:
192.168.100.1 – статичный адрес ADSL-модема
192.168.100.6 – статичный адрес сервера Elastix

Часть 2. Настройка Elastix


Открываем личный кабинет на idphone.kz и выбираем нужный номер телефона. В меню «Персональные данные -> Настройки оборудования или телефона» видим примерно такое окно
image
Не забудьте нажать кнопку «сменить пароль».
Идем в Elastix-> PBX-> Trunks-> Add SIP Trunk

  • Trunk Name: указываете любой. Я использую MegalineTrunk
  • Outbound Caller ID: номер телефона. В моем случае это 39****6
  • PEER Details:
    host=sip.telecom.kz
    username=922350056
    type=friend
    nat=no
    qualify=yes
    canreinvite=nonat
    insecure=port,invite&invite
    fromuser=922350056
    fromdomain=sip.telecom.kz
    secret=8GZepVd3
    dtmfmode=rfc2833
    context=from-trunk
    disallow=all
    allow=alaw
    trunkstyle=customvoip
    
  • Register String: 922350056:8GZepVd3:922350056@sip.telecom.kz/922350056


Идем в Elastix -> PBX -> Inbound Routes -> Add Incoming Route
  • Description: не имеет значения, я использовал номер телефона, при наборе которого должен сработать Elastix
  • DID Number: 922350056
  • Set Destination: тут указывается куда нужно будет переключить абонента. Можно перевести звонок на конкретный Extension или включить голосовое меню (IVR).


Outbound Routes -> Add Route
  • Dial Patterns that will use this Route: тут указывается шаблон номеров для вашего города. В моем случае это (empty) + empty | [[23]XXXXXX/empty]


Теперь идем в Elastix -> System -> Network -> Edit Network Parameters
В моем случае, настройки выглядят следующим образом:
image
Параметр Host указывается произвольно. В принципе, ни на что не влияет.
В конечном счете должно получиться что-то вроде этого:
image
Tags:
Hubs:
Total votes 7: ↑5 and ↓2 +3
Views 82K
Comments Comments 1