вторник, 31 января 2012 г.

Настройка AddPac AP1100 для работы с Asterisk

Китайская компания AddPac начала свою историю клонируя оборудование фирмы Cisco – так называемые «АТАшки». С тех пор утекло много воды и теперь, большая часть линейки устройств – собственные разработки AddPac. От старых времён остался синтаксис конфигурационного файла, который очень похож на синтаксис Cisco. Благодаря этому, большинству опытных пользователей IP-телефонии не составит труда настроить телефонный шлюз AddPac AP1100 для работы с Asterisk. Тем же, кто не совсем понимает о чём речь – посвящается эта статья.
Подключиться к устройству можно двумя способами: telnet или последовательный порт (com порт / serial / rs-232 и т.д.). Для того что бы подключиться к устройству по telnet необходимо знать IP адрес устройства, логин и пароль. Если вы не знаете IP-адрес, или он не установлен, вам придётся подключиться к устройству с помощью последовательного порта. Параметры COM порта для подключения к AddPac: Speed – 9600 Baud, Data bits – 8, Stop bits – 1, Parity – None. Логин и пароль по умолчанию – root и router соответственно. Устройство AddPac подразумевает два режима – режим управления и режим настройки. При подключении у устрйоству AddPac, вы попадаете в режим управления. Для перехода в режим настройки необходимо ввести команду:


conf t
Для выхода из режима настройки в режим управления можно нажать комбинацию клавишь Ctrl-Z, или воспльзоваться командой
exit
Весь конфигурационный файл, представляет собой текстовый файл содержащий в себе команды AddPac в определённом порядке. Для того что бы посмотреть текущие настройки необходимо использовать команду
sh run
Для того, что бы сохранить изменения в настройках, сделанные вами во флеш память (что бы они не потерялись при перезагрузке устройства) пригодится команда
wr
Теперь, когда нам известны базовые приёмы работы с оборудованием AddPac, рассмотрим основные настройки телефонного шлюза AddPac AP1100 при подключении к Asterisk. Перво-наперво нам следует настроить сетевой интерфейс шлюза и маршрут по умолчанию (так называемый default gateway). Делается это следующим образом:
interface ether0.0
 ip address 192.168.33.201 255.255.255.224
!
route 0.0.0.0 0.0.0.0 192.168.33.193
Первая команда – активирует контекст интерфейса ether0.0 – первого Ethernet порта на устройстве AddPac. Переход в контекст интерфейса ether0.0 означает, что команды следующий за этой относятся к первому порту а не ко второму. Вторая строка Устанавливает IP адрес и маску для интерфейса ether0.0. Обратите внимание на строку номер 3 – она содержит восклицательный знак. Восклицательный знак и всё сто следует за ним – это комментарий. AddPac, в выводе команды sh run вставляет пустые строки с комментариями для лучшей наглядности. Четвертая строка создаёт маршрут к сети 0.0.0.0 с маской 0.0.0.0 – т.е. ко всем сетям. Таким образом происходит указание шлюза по умолчанию – в нашем случае 192.168.33.193. Обратите внимание, что команда route, в отличие от команды ip address не относится к команде interface.
Теперь, когда IP сеть работает, можно переходить к настройкам IP телефонии. Первым делом установим глобальные настройки для факсов.
voice service voip
 fax protocol t38 redundancy 1
 fax rate 9600
Данный пример состоит из трёх строк. Первая строка активирует контекст IP-телефонии, т.е. команды следующие за ней будут относится к общим (глобальным) настройкам IP телефонии, а не к чему то ещё. Вторая строка устанавливает протокол для передачи факса, в нашем случае это T.38. Параметр redundancy 1 устанавливает избыточность. Избыточность это один из механизмов протокола T.38 для борьбы с потерей пакетов. Суть его заключается в том, что вслед каждому оригинальному пакету T.38 будет отправлено N копий этого пакета. В нашем случае N=1. Последняя строка устанавливает максимальную скорость передачи факсов. Вообще, максимум для факсов является скорость 14400, однако следует понимать, что чем выше скорость на которой происходит передача факсов по IP сети, тем выше вероятность сбоя. На мой взгляд скорость 9600 является неплохим компромиссом между удобством (быстротой передачи) и надёжностью.
Теперь настроим параметры доступа к нашему Asterisk по протоколу SIP. Данные настройки осуществляются в контексте SIP-ua, поэтому, как вы уже догадались, первая строчка нашего примера активирует этот контекст:
sip-ua
 user-register
 sip-server 192.168.33.208
 timeout treg 3600
 register e164
Команды начинающиеся с ‘SIP-’ описывают SIP сервер и параметры доступа к нему. Так строчка SIP-server содержит IP адрес нашего Asterisk. Таких команд может быть две. Первая будет содержать IP адрес основного Asterisk. Вторая команда SIP-server (если она есть) будет содержать IP адрес запасного Asterisk – и будет использоваться в случае неработоспособности первого. Команды SIP-name и SIP-password задают SIP логин и пароль которые могут быть использованы при работе с нашим Asterisk. Команда user-register включает регистрацию на Asterisk с помощью SIP логина и пароля. Команда register e164 сообщает нашему AddPac-у, что для регистрации надо использовать параметры с телефонных портов. Т.е. благодаря этой команде каждый телефонный порт будет зарегистрирован отдельно на нашем Asterisk – и мы сможем настраивать роутинг звонков на нём.
! FXS
voice-port 0/0
 caller-id enable
!
!
! FXS
voice-port 0/1
 caller-id enable
Простейшие настройки для FXS портов (мы настраиваем два из восьми). Включаем технологию CallerID для каждого порта.
Перед тем, как перейти к следующему примеру, отвлечемся и поговорим о диалпирах (dial-peer). Каждый звонок, проходящий через шлюз имеет две «ноги» (call-leg). Например, если звонок пришёл с port 0/0 и ушёл на SIP сервер, то считается, что у данного звонка одна нога – POTS и вторая нога – VoIP. Параметры для каждой ноги описываются специальной структурой – диалпиром (dial-peer). Различают POTS и VOIP диалпиры. Кроме этого, каждый диалпир может быть использован как входящий или как исходящий.






Именно с помощью диалпиров устройство решает что делать со звонком – куда и как его направить. В нашем примере устройству понадобится два диалпира: входящий POTS диалпир, который установит параметры для телефонного порта и исходящий VoIP диалпир, который направит звонок на наш Asterisk. Более подробно про диалпиры и роутинг звонков можно почитать вот здесь (английский язык):
Вернёмся к нашему AddPac-у и рассмотри, какие диалпиры потребуются нам для работы нашего шлюза. Для нашего шлюза (напомню: мы настраиваем 2 FXS порта из 8) понадобится 3 диалпира: по одному POTS диалпиру на каждый FXS порт + 1 диалпир на VoIP сеть.
dial-peer voice 1 pots
 destination-pattern 101
 port 0/0
 user-password XagsaR9A
!
dial-peer voice 2 pots
 destination-pattern 102
 port 0/1
 user-password YGygs3de
!
!
!
! Voip peer configuration.
!
dial-peer voice 1000 voip
 destination-pattern T
 session protocol sip
 session target sip-server
 codec g711alaw
 dtmf-relay rtp-2833
 no vad
 translate-outgoing called-number 1
 fax protocol t38 redundancy 1
Каждый диалпир (dial-peer) должен иметь уникальный номер. Тип диалпира определяется ключевым словом следующим за уникальным номером. Номера можно выбирать произвольно. Команда dial-peer voice 1 pots создаёт POTS диалпир с номером 1, команды идущие следом – определяют параметры данного диалпира. Команды port и destination-pattern используются для выбора входящего и исходящего диалпира (роутинга звонков внутри устройства AddPac). Так, если звонок придёт с порта 0/0 он будет ассоциирован с диалпиром номер 1, потому что это единственный в системе диалпир у которого указан port 0/0. Если пользователь с порта 0/0 любую комбинацию цифр кроме 102 – вызов будет направлен в диалпир 1000, т.к. конструкция destination-pattern T совпдает с любыми набранными цифрами. Если же пользователь наберёт 102, то вызов будет направлен в диалпир номер 2, а следовательно в телефонный порт 0/1. Дело в том, что с набранным номером 102 совпадают два диалпира: диалпир 2 (destination pattern 102) и диалпир 1000 (destination-pattern T), однако диалпир 2 будет иметь приоритет, т.к. шаблон указанный в нём – длинее. Команда user-password, указанная в POTS диалпирах определяет SIP пароль, который будет использоваться для регистрации на нашем Asterisk и авторизации звонков совершённых с этого порта. SIP логин, для регистрации устанавливается командой destination-pattern или командой user-name, если необходимо указать SIP логин, отличающийся от шаблона указанного в destination-pattern.
Теперь рассмотрим диалпир 1000. Шаблон T (destination-pattern T) означает что этот диалпир будет соответствовать любому набранному номеру. Команда session protocol SIP, указывает что соединение с сервером VoIP следует устанавливать по протоколу SIP. Команда session target используется для указания IP адреса сервера IP-телефонии. В нашем случае вместо IP адреса указано ключевое слово SIP-server, оно заставит взять параметры SIP сервера (включая логин и пароль) из секции SIP-ua, которую мы рассмотрели ранее. Следующая команда устанавливает кодек – наш любимый G.711 a-law. Команда dtmf-relay rtp-2833 указывает способ передачи DTMF, в нашем случае DTMF будет передаваться согласно протоколу RFC2833. Обратите внимание на команду no vad – она принудительно выключает подавление тишины, рекомендую ей пользоваться всегда. Команда translate-outgoing called-number 1 привязывает правило преобразования набранного номера. Т.е. каждый набранный номер попавший в этот диалпир, перед передачей SIP серверу будет преобразован в соответствии с правилом 1. Последняя, необязательная команда, ещё раз устанавливает параметры для факса, который может быть отправлен по этому диалпиру.
Зачастую, перед отправкой набранного номера серверу IP телефонии, его необходимо преобразовать определённым образом – отрезать какие то цифры, или наоборот добавить их. Проще всего сделать это с помощью правил преобразования. Правила преобразования номеров создаются с помощью команды translation-rule и выглядят следующим образом:
translation-rule 1
 rule 0      0                        00
 rule 1      1                        01
 rule 2      2                        02
 rule 3      3                        03
 rule 4      4                        04
 rule 5      5                        05
 rule 6      6                        06
 rule 7      7                        07
 rule 8      8                        08
 rule 9      9                        09
Данный пример подставляет 0 ко всем набранным номерам. Разберём команды по порядку. Начинается список с команды translation-rule, в качестве параметра указывается уникальный номер, по которому будет производится идентификация этого списка. Следом идут правила преобразования, каждое правило начинается с ключевого слова rule>. Следом за ключевым словом идёт произвольное число, определяющее порядок данного правила. Все правила применяются по порядку, начиная с младшего порядкового номера, заканчивая старшим (или совпадением). вторым аргументом команды rule идёт последовательность цифр в начале набираемого номера, которую нам необходимо заменить. Последний аргумент – последовательность цифр, которую нам надо подставить вместо предыдущего аргумента. То есть ’3′ меняется на ’03′, ’7′ на ’07′ и т.д. – таким образом происходит подстановка ноля в начало набранного номера.
Поздравляю! мы настроили наш AddPac AP1100-FXS8 для работы с Asterisk – не забудьте записать изменения командой wr. Если посмотреть наш конфигурационный файл целиком, с помощью команды sh run он будет выглядеть вот так:
!
version 8.238
!
hostname ap1100
!
ip classless
!
proxy-arp
!
dhcp-list 1 type server
dhcp-list 1 address server  10.1.1.2 10.1.1.126 255.255.255.128
!
!
ip-share enable
ip-share interface net-side ether0.0
ip-share interface local-side ether1.0
!
interface ether0.0
 ip address 192.168.33.201 255.255.255.224
!
interface ether1.0
 no ip address
!
snmp name AP1100-FXS8
!
no arp reset
!
route 0.0.0.0 0.0.0.0 192.168.33.193
!
ntp server 192.168.33.208
!
no service ftpd
no service httpd
!
!
!
!
!
! VoIP configuration.
!
!
! Voice service voip configuration.
!
voice service voip
 fax protocol t38 redundancy 1
 fax rate 9600
!
!
! Voice port configuration.
!
! FXS
voice-port 0/0
 caller-id enable
!
!
! FXS
voice-port 0/1
 caller-id enable
!
!
! FXS
voice-port 0/2
 shutdown
!
!
! FXS
voice-port 0/3
 shutdown
!
!
! FXS
voice-port 1/0
 shutdown
!
!
! FXS
voice-port 1/1
 shutdown
!
!
! FXS
voice-port 1/2
 shutdown
!
!
! FXS
voice-port 1/3
 shutdown
!
!
!
!
! Pots peer configuration.
!
dial-peer voice 1 pots
 destination-pattern 101
 port 0/0
 user-password XagsaR9A
!
dial-peer voice 2 pots
 destination-pattern 102
 port 0/1
 user-password YGygs3de
!
!
!
! Voip peer configuration.
!
dial-peer voice 1000 voip
 destination-pattern T
 session target sip-server
 session protocol sip
 codec g711alaw
 dtmf-relay h245-alphanumeric
 no vad
 translate-outgoing called-number 1
 fax protocol t38 redundancy 1
!
!
!
!
! Translation Rule configuration.
!
translation-rule 1
 rule 0      0                        00
 rule 1      1                        01
 rule 2      2                        02
 rule 3      3                        03
 rule 4      4                        04
 rule 5      5                        05
 rule 6      6                        06
 rule 7      7                        07
 rule 8      8                        08
 rule 9      9                        09
!
!
!
! SIP UA configuration.
!
sip-ua
 user-register
 sip-server 192.168.33.208
 timeout treg 3600
 register e164
!
!
!

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

Отправить комментарий