Ключевые слова:voip, gatekeeper, phone, (найти похожие документы)
From: B. Yasynetsky <iasb@yahoo.com.>
Date: Mon, 25 Jun 2006 14:31:37 +0000 (UTC)
Subject: Развертывание VoIP телефонии в корпоративной сети
Оригинал: http://iasb.narod.ru/voip.htm
* В данной статье описан основной порядок действий по инсталляции
системы корпоративной телефонии. При чтении данной статьи заведомо
не будут даваться ссылки на документацию, которая поступает с
устройствами или указываться в общем плане порядок действия с
устройствами. Задача администратора - иметь эту документацию и в
случае необходимости часть действий, описанных ниже проводить в
соответствии с документацией производителя. Пример: нет особого
смысла описывать порядок замены программного обеспечения в
устройстве IP телефонии в данной статье - эта часть очень подробно
описана в документации на устройство. Предполагается что у
администратора имеется определенный опыт работы как в среде
Windows так и в среде UNIX, но направление VoIP - для него новое и
его надо практически внедрять.
* Учитывая что в общем случае мы работаем с устройствами удаленно и
добраться до удаленного устройства иногда не представляется
возможным, рекомендуется все работы производить чрезвычайно
аккуратно и осознанно. Есть смысл дополнительно известить в офисе
где установлено удаленное устройство необходимый персонал
(секретарей, например) о том где это устройство находится и какой
порядок включения/выключения/сброса питания на этом устройстве.
Очень полезным будет на верх устройства наклеить большой лист
бумаги и нарисовать стрелку в направлении выключателя питания. Это
не CISCO класс оборудования, может и зависнуть. Должны быть
готовы.
В предыдущих статьях было рассказано о построении корпоративного
сервера и рассмотрены некоторые вопросы корпоратизации компьютерной
системы - базовые элементы построения внешней части интранет
инфраструктуры:
* Подключение к Интернет
* Регистрация доменного имени
* Структура почтовой системы
* Построение виртуальных каналов между разнесенными офисами
Сейчас рассмотрим вопросы более тесного связывания офисов в единую
сеть предоставлением сервисов корпоративной телефонии.
Некоторые предварительные замечания о структуре телефонной сети,
применяемом оборудовании и направлениях действий. В данной статье
будет описано построение заведомо более сложной системы, чем можно
было бы сделать, но в данной заведомо более сложной схеме реализации
существует определенная гибкость системы и возможность достаточно
простого расширения без перестройки всех устройств системы путем
только наращивания оборудования. Все о чем идет дальше работает только
в среде DTMF нумерации.
Самый простой вариант - полное отсутствие какой бы то ни было
телефонной инфраструктуры в подразделениях. Случается. Часто. Но
звонить надо, поэтому ставятся городские телефоны или люди просто
используют корпоративные мобильные пакеты. Сейчас этого добра уже
достаточно и в перспективе будет еще больше. Чем хорош такой подход -
делать ничего не надо. Оно работает. Чем плох - дорого. Как можно
расправиться с корпоративным пакетом - запихнуть его в GSM гейт. О чем
идет речь - существует оборудование которое можно использовать для GSM
телефонии и к нему подключать или обычные телефоны или офисные АТС.
Удобно в случае если нужна телефонная линия, а физически доступна
только сеть мобильной связи. Есть альтернативный вариант - если офис
подключен к Интернету и существует нормальный интернет-канал -
настроить телефонное взаимодействие офисов через Интернет. Мы говорим
о канале более 128 кб/с.
Что для этого требуется - оборудование перевода телефонного сигнала в
Интернет-формат и программное обеспечение управления всем этим
оборудованием. Задачу ставим следующим образом: есть 3 офиса,
территориально разнесенные на большое расстояние, подключенные к
Интернет и между офисами настроены виртуальные сети как это описано в
предыдущей статье или какие-либо иные схемы. Главное условие - мы не
выходим с адресами этих сетей непосредственно в Интернет.
Какое выбираем оборудование - здесь будет дан пример выполнения
телефонии на оборудовании H.323. Существует более новый стандарт -
SIP. Пускай существует. Мы работаем с H.323. Пока в подробности не
вдаемся. Основная наша задача пока - помнить что стандартов несколько
и сосредотачиваться на чем-то одном.
Считаем, что внутри офисов существуют локальные телефонные станции.
Для станций ряда Panasonic - проблем не возникает. Для Siemens -
немного по другому. Серии Hicom-120/125 по программному обеспечению не
позволяют (по крайней мере мы не нашли варианта) для формирования
тоновых посылок с системного телефона на внутренний телефонный номер.
То есть, при звонках через внешний порт АТС (в город) путем
последовательного нажатия кнопок "*" и "#" после этой комбинации в
порт выдаются DTMF посылки - можно управлять устройствами на внешнем
канале. Это не получается при звонках с системного телефона на
внутренний порт. После длительных переговоров с различными телефонными
гуру - решения вопроса не было. То ли не того уровня гуру нам
попадались, то ли это действительно из-за древности идеологии
Hicom-120/125 - нам было разъяснено что она этого не может. Мы говорим
только о системном телефоне. С обычным телефоном вообще этих вопросов
не возникает. Ставишь его под DTMF и работаешь. В связи с этим принято
решение - перейти на HiPath. Там это делается сразу, но при заказе
станции необходимо указать это условие как обязательное в техническом
задании - все "супер" гуру очень хорошо умеют считать деньги и
постоянно- чего-то недоговаривать, оставляя себе сладенький кусочек на
перспективу. Смотришь клиент проснется - и чего-то еще отломится. Это
и есть причина почему такого класса требования надо писать на бумаге
и, особенно, когда чувствуете какое-то неудобство при ведении
переговоров с потенциальным поставщиком или инсталлятором АТС (да и
любого другого сложного оборудования) до того как уплатить деньги
требовать подписи подобного документа потенциальным исполнителем /
поставщиком. В противном случае - придется платить деньги еще и за
"сложное конфигурирование" а то и воевать по поводу полного возврата
оборудования из-за его функциональной непригодности.
Что мы делаем - ставим достаточно простое оборудование. Какое. Какое
существует. Какое продается. В принципе для наших условий существует
два интерфейса VoIP оборудования - FXO и FXS. Что это - это два типа
подключений - FXS порт изображает из себя порт АТС - то есть он в
состоянии только выдавать напряжение звонка в линию, соответственно -
это эмуляция той телефонной пары которая приходит с городской АТС - к
нему подключается обычный телефон, способный по умолчанию работать в
DTMF. Другой тип порта - FXO - он эмулирует пользовательский
телефонный аппарат в части того, что он может "снимать трубку",
отвечать и набирать номер. Так как это телефонный интерфейс - он также
может воспринимать набор, передаваемый ему в DTMF. Этот порт
подключается к порту телефонной станции как обычный телефон или факс.
Телефонная станция конфигурируется для работы по этому порту в DTMF.
Это нам и надо.
Кто производители оборудования - их много. Список можно найти например
здесь http://www.gnugk.org/interoperability.html и здесь
http://www.gnugk.org/interoperability-2.html Список внушает
уважение, но не более. Наш выбор невелик - Dynamix или NSG. Кто-то
может добыть Micronet. Не будем вдаваться в подробности этих устройств
- общее у них - версия прошивки. Это базовое устройство одного
производителя и во все эти устройства заливается одинаковое
программное обеспечение. Что еще с этими устройствами полезного на
перспективу - перезаливкой программного обеспечения эти устройства
можно перевести с протокола работы H.323 на протокол SIP. Кто знает
как со временем сложатся требования - может придется переходить на SIP
- тогда что-то при подобном выборе можно будет сэкономить. Почему мы
не говорим о DLink ? Да, DLink существуют, они определились что более
не поддерживают H.323 - не будем с ними спорить. Очень полезно по
поводу DLink зайти на http://www.dlink.ru в раздел Форум и почитать
статьи на предмет формата и спектра задаваемых вопросов и качества
ответов. Если Вам будут настраивать систему телефонии сторонние фирмы
и они полностью будут нести ответственность за работоспособность
строящейся системы - всегда пожалуйста, но мы должны строить сами.
Выберем для примера Dynamix 0004/H/ . Это 4-х портовая VoIP FXO
система. Так как подобные устройства обычно как пирожки на лотке не
продаются , то в фирме в которой мы их будем покупать попросим
перешить их сразу под прошивку 2m4fxo118b. Это последняя стабильно
работающая прошивка для этого класса устройств. Что потребуется еще -
FreeBSD. Считаем что она настроена и работает. VPN подняты. Там есть
место для инсталляции и настройки GateKeeper - программного
обеспечения управления телефонными каналами.
Технология предполагается следующая - есть 3 офиса. В каждом офисе
устанавливается VoIP устройство. Для каждого офиса определяем его
"код дозвона" - то есть при наборе номера "код дозвона" будет
определять то устройство на котором мы хотим прийти для последующего
донабора на внутренней АТС.
|Офис |Код офиса |Внутренняя Нумерация |Устройство IP телефонии
|Офис - А (о.А) 2 100-120 118, 119
|Офис - Б (о.Б) 5 200-220 218, 219
|Офис - С (о.С) 9 300-320 318, 319
Как будет производиться звонок:
* допустим мы находимся в офисе А и звоним в о. Б на номер 206
* набираем внутренний номер порта на телефонной станции 118 офиса А
* слышим голосовое приветствие
* набираем код офиса Б - 5
* набираем нужный номер - 206
* завершаем набор символом "#"
или
* допустим мы находимся в офисе С и звоним в о. А на номер 106
* набираем внутренний номер порта на телефонной станции 318
* слышим голосовое приветствие
* набираем код офиса А - 2
* набираем нужный номер - 106
* завершаем набор символом "#"
Приниматься звонок обычно будет на последний подключенный порт VoIP
устройства. Что можно оговорить при конфигурировании офисной АТС -
создать группу для звонков на VoIP устройство. Примерно вот как:
определяемся - что мы звоним на номер 118 - он занят - звонок сразу же
маршрутизируется на 119. То есть все пользователи знают только один
номер обращения к устройству, а дальше сама АТС определяет на какой
свободный порт перебросить этот звонок.
То есть логически достаточно ясная схема работы. Может предложенная
схема и не "прозрачна" - в таком случае вам необходимо идти по
направлению стекирования используемых АТС. Но это другие масштабы,
другие деньги и другие затраты на обслуживание. Технически могут быть
и другие вариации использования оборудования и схем организации
телефонии, которые может будут более технологичны, но мы реализуем
описанный выше подход. Особенности этого подхода:
* ясная схема использования для сотрудников
* простота реализации
* возможность контроля звонков
* возможность блокирования определенных направлений или номеров для
дозвона
* возможность перенаправления звонков
С чего начинаем. Берем в аренду нужное количество устройств с
прошивкой 2m4fxo118b.
Если не удалось получить именно с этой прошивкой - не страшно.
Начинаем с тем что у нас есть. Или идем на http://www.micronet.info
или на сайт производителя и скачиваем 2-х мегабайтный образ прошивки.
Дополнительно потребуется TFTP сервер под Windows, компьютер с COM -
портом. Найдите в документации на устройство порядок подключение
HyperTerm (стандартная компонента Windows/Communications) - в части
точного описания параметров, выставляемых для COM-порта в HyperTerm.
Устройство поставляется с кабелем подключения к COM-порту.
* Если что-то не получилось или мы не дождались полной перепрошивки
устройства и оно больше не грузится. В общем случае - не страшно.
Еще не все потеряно. Данные устройства сконструированы так, что
первоначально загружается загрузчик, а только потом загружается
сама прошивка. Нам нужно будет перезалить прошивку находясь не на
уровне самой прошивки - не в ее программном окружении - а на более
низком уровне - на уровне загрузчика. Техподдержка отлично знает
порядок действий в этом случае и стандартные пароли загрузчика
устройства. В противном случае -
http://www.micronet.info/FAQ/voip/showTopic.asp?ID=137 вопрос
23 разъяснит многое.
Дальше. Рисуем схему сети:
Действуем в соответствии со схемой:
Через HyperTerm / COM-порт на всех трех устройствах меняем необходимые
IP, Gateway, проверяем маски и обязательно проверяем наличие чего-то
логически удобоваримого в MAC адресе. Устройство работоспособно при
невыставленном MAC.
Устанавливаем устройства в их сетях. Проверяем доступность устройств
как по Telnet так и по HTTP. Нам понадобятся и первое и второе.
Что делается по Telnet:
* Сначала дается список работ, некоторые необходимые для понимания
разъяснения, потом - под номерами - примеры программирования
устройств. Для различных офисов будут проставляться
соответствующие указатели -А, -Б, -С.
1-А - программируем интерфейсы (если это до конца не сделано из
консоли - через COM-порт). DNS указан в файле конфигурации, проставим
его, но ничего сказать об его практическом использовании мы не можем.
Блок от PPPoE user name - до конца - не трогаем вообще. Что стоит - то
и стоит.
usr/config$ ifaddr -print
IP mode : Static
Internet address information
IP address : 192.168.40.251
Subnet mask : 255.255.255.0
Default gateway : 192.168.40.254
DNS primary : 192.168.40.240
DNS secondary : 192.168.40.241
HTTP port : 80
SNTP : mode=0, sntp off
IPSharing : no IPSharing device.
IP change : Disable
PPPoE user name : pppoe
PPPoE password : *****
PPPoE reboot : Yes
PPPoE echo : Disable
EMS IP : 10.1.1.2
EMS user name : Max_Su
EMS password : ******
EMS time : 0
usr/config$
1-Б
usr/config$ ifaddr -print
IP mode : Static
Internet address information
IP address : 192.168.41.251
Subnet mask : 255.255.255.0
Default gateway : 192.168.41.254
DNS primary : 192.168.41.240
DNS secondary : 192.168.41.241
HTTP port : 80
SNTP : mode=0, sntp off
IPSharing : no IPSharing device.
IP change : Disable
PPPoE user name : pppoe
PPPoE password : *****
PPPoE reboot : Yes
PPPoE echo : Disable
EMS IP : 10.1.1.2
EMS user name : Max_Su
EMS password : ******
EMS time : 0
usr/config$
1-С
usr/config$ ifaddr -print
IP mode : Static
Internet address information
IP address : 192.168.60.251
Subnet mask : 255.255.255.0
Default gateway : 192.168.60.254
DNS primary : 192.168.60.240
DNS secondary : 192.168.60.241
HTTP port : 80
SNTP : mode=0, sntp off
IPSharing : no IPSharing device.
IP change : Disable
PPPoE user name : pppoe
PPPoE password : *****
PPPoE reboot : Yes
PPPoE echo : Disable
EMS IP : 10.1.1.2
EMS user name : Max_Su
EMS password : ******
EMS time : 0
usr/config$
2. Системные параметры:
Inter-Digits time - время в секундах от момента набора последней цифры
в телефонный порт устройства до момента завершения приема набранной
посылки, формирования задания и отправки задания по соединению на
обработку. Для "тугодумов", которые не помнят "на взлет"
набираемый номер - этот фактор может стать определенной проблемой. Это
одна из причин почему в системе принято стандартом завершать набор
указателем "законченности" набора номера " # "
User defined prefix disable - код нашего офиса: А-2, Б-5, С-9,
убираем префикс при принятии звонка
Local generate ring back tone - в момент выполнения соединения - хотим
чтобы трубка не молчала а выдавала подобие гудков дозвона
Ring before answer - количество гудков с PBX после которых устройство
снимает трубку
End of dial - требование восприятия символа # как завершение команды и
немедленного набора номера
1-А
usr/config$ sysconf -print
System information
Inter-Digits time : 8
Keypad DTMF type : H.245 SignalType
User defined prefix switch : OFF
User defined prefix disable : 2
User defined prefix : -
Codec select method : Master
Local generate ring back tone : Enable
Round Trip : Disable
Gateway prefix : Drop
End of dial : Enable
Detect silence voice : Enable
Ring time : 1
Ring before answer : 1
Delay to add DTMF : 1
Auto connect time : 1
FXO type : Normal
usr/config$
1-Б
usr/config$ sysconf -print
System information
Inter-Digits time : 8
Keypad DTMF type : H.245 SignalType
User defined prefix switch : OFF
User defined prefix disable : 5
User defined prefix : -
Codec select method : Master
Local generate ring back tone : Enable
Round Trip : Disable
Gateway prefix : Drop
End of dial : Enable
Detect silence voice : Enable
Ring time : 1
Ring before answer : 1
Delay to add DTMF : 1
Auto connect time : 1
FXO type : Normal
usr/config$
1-С
usr/config$ sysconf -print
System information
Inter-Digits time : 8
Keypad DTMF type : H.245 SignalType
User defined prefix switch : OFF
User defined prefix disable : 9
User defined prefix : -
Codec select method : Master
Local generate ring back tone : Enable
Round Trip : Disable
Gateway prefix : Drop
End of dial : Enable
Detect silence voice : Enable
Ring time : 1
Ring before answer : 1
Delay to add DTMF : 1
Auto connect time : 1
FXO type : Normal
usr/config$
3. Конфигурирование H.323
Gatekeeper IP address - адрес гейткипера
Registered prefix number - префикс офиса - А-2, Б-5, С-9
Line1 - не трогаем, что стоит - то и стоит
Registered alias: ofa - идентификация офиса в отчетах
Display Information: ofa - идентификация офиса в отчетах
Gatekeeper ID - имя гейткипера
3-А
usr/config$ h323 -print
H.323 stack relate information
RAS mode : GK mode
Gatekeeper IP address : 192.168.60.252
Second Gatekeeper IP :
Gateway Type : Gateway1
Registered prefix number : 2
Line1 : 000
Line2 : 001
Line3 : 002
Line4 : 003
H.235 security token : *
Registered alias : ofa
Display Information : ofa
Gatekeeper discovery : Off
Gatekeeper ID : GK-OFC
RAS TTL time : 60
RTP port : 16384
Gatekeeper finding port : 1718
GK RAS port : 1719
H225 RAS port : 1024
H225 Call signal port : 1720
Allocated port range :
start port : 2000
end port : 19999
Response timeOut : 15
Connect timeOut : 60
usr/config$
3-Б
usr/config$ h323 -print
H.323 stack relate information
RAS mode : GK mode
Gatekeeper IP address : 192.168.60.252
Second Gatekeeper IP :
Gateway Type : Gateway1
Registered prefix number : 5
Line1 : 000
Line2 : 001
Line3 : 002
Line4 : 003
H.235 security token : *
Registered alias : ofb
Display Information : ofb
Gatekeeper discovery : Off
Gatekeeper ID : GK-OFC
RAS TTL time : 60
RTP port : 16384
Gatekeeper finding port : 1718
GK RAS port : 1719
H225 RAS port : 1024
H225 Call signal port : 1720
Allocated port range :
start port : 2000
end port : 19999
Response timeOut : 15
Connect timeOut : 60
usr/config$
3-C
usr/config$ h323 -print
H.323 stack relate information
RAS mode : GK mode
Gatekeeper IP address : 192.168.60.252
Second Gatekeeper IP :
Gateway Type : Gateway1
Registered prefix number : 9
Line1 : 000
Line2 : 001
Line3 : 002
Line4 : 003
H.235 security token : *
Registered alias : ofc
Display Information : ofc
Gatekeeper discovery : Off
Gatekeeper ID : GK-OFC
RAS TTL time : 60
RTP port : 16384
Gatekeeper finding port : 1718
GK RAS port : 1719
H225 RAS port : 1024
H225 Call signal port : 1720
Allocated port range :
start port : 2000
end port : 19999
Response timeOut : 15
Connect timeOut : 60
usr/config$
4. Устанавливаем параметры голосового (телефонного) сигнала и кодеки.
Эта страница приводится как справочная. Все указанные параметры
намного удобнее делать из HTTP интерфейса. Что мы здесь
корректируем - порядок следования кодеков и громкость
приема/передачи. DTMF громкость оставляем без изменений. С
громкостью особо увлекаться не стоит - может искажаться звук. Все
для всех устройств одинаково.
usr/config$ voice -print
Voice codec setting relate information
Sending packet size :
G.729 : 60 ms
G.729 : 60 ms
G.729A : 60 ms
G.729B : 60 ms
G.729AB : 60 ms
G.711U : 40 ms
G.711A : 40 ms
Priority order codec :
g729 g729 g729a g729b g729ab g711u g711a
Volume levels :
voice volume : 35 35 35 35
input gain : 35 35 35 35
dtmf volume : 23 23 23 23
No sound compress & CNG :
G.729 : There is no setting
G.729 : There is no setting
G.729A : There is no setting
G.729B : There is no setting
G.729AB : There is no setting
G.711(U-Law) : There is no setting
G.711(A-Law) : There is no setting
Echo canceller : On On On On
Jitter buffer :
Min Delay : 90
Max Delay : 150
usr/config$
5. Различные протоколы
Различные протоколы - так как не являются для нас приоритетными -
не рассматривались. Остаются как есть. Будем с ними разбираться
позже. Когда будет все работать. А то и вообще перейдем на E-Mail.
usr/config$ support -print
Special Voice function support manipulation
T.38(FAX) support : Disabled
T.38(FAX) Request Mode : Enabled
T.38(FAX) ECM : Disabled
T.38(FAX) ASN.1 : Disabled
FAX redundancy depth : 0
FastStart support : Disabled
Tunneling support : Disabled
H.245 message after FastStart support : Enabled
EarlyH245 support : Disabled
usr/config$
6. Phone.
Не трогаем. Как работает - пусть так и работает.
7. Tone.
Вот с этим нам может придется повеселиться.
Одной из задач функционирования устройства IP телефонии является
точное идентифицирование тонов занятости (Busy) со стороны телефонной
станции. Для начала сконфигурируем полностью телефонную систему, и
потом в случае если эта часть не будет работать - будем настраивать и
ее. Если работает - забываем этот раздел и говорим себе - хорошо,
пронесло. Что значит работает - не работает. Если после окончания
разговора устройство не "ложит трубку" в сторону PBX более 5 секунд
- значит не работает. Надо настраивать.
Порядок настройки. Настройка (программирование) устройства ведется из
HTTP интерфейса. Что нам понадобится из оборудования - микрофон,
компьютерные колонки, провод соединяющий VoIP устройство и PBX к
которому в центре можно подключить напрямую компьютерную колонку (с
блоком питания у усилителем) и через нее услышать искомый сигнал
"занято". То есть фигурально выражаясь - делаем провод для
"прослушки" и "прослушиваем" на компьютерную колонку. Микрофон
подносим к колонке и пишем сигнал "занято" в звуковой файл на
компьютер в виде WAV файла. Это можем сделать даже средствами Windows
- Sound Recorder. C:\WINDOWS\System32\sndrec32.exe. Дальше - ставим
SoundForge. Подойдет даже какая-нибудь древняя версия. По примеру с
4.5 делаем следующее: считываем записанный файл, прямо на экране
определяем временные параметры включения/выключение сигнала "занято"
- перемешаем курсор к началу/концу сигнала и записываем время (справа
внизу в формате 00:00:05.455). Записываем показания примерно 5-6
импульсов и в табличке определяем их длительность (А на рисунке).
|Начало Конец Результат, сек.
0.684 1.230 1.230-0.684=0.546
пауза 1.706-1.230=0.476
1.706 2.252 2.252-1.706=0.492
пауза 2.739-2.252=0.484
2.739 3.297 3.297-2.739=0.558
Делаем подобные вычисления точнее и принимаем средние значения -
пауза/сигнал.
Теперь, в том же SoundForge - отмечаем курсором сигнал занятости,
потом - Tools - Spectrum Analyses. В окне спектрального анализа
выставляем в Options-Settings пределы анализируемых частот - скажем от
350 до 450 гц. Программа выдаст пик частот. Можем дать Update. В
результате мы получили временные и частотные параметры сигнала
"занято". На рисунке записан анализ для Hicom-125.
Что дальше - ставим в соответствующем окне HTTP интерфейса настройки
устройства.
Записано в первой строке следующее - частота - 425 гц, скважность
сигнала - 350 мс. Это стандартной значение для станций HiPath-3000.
Таблица большая из предположения, что станция сильно умная и на каждый
вариант она может выдавать свой отличный от другого сигнал. Мы
работаем только с одной строкой. В большинстве случаев этого
достаточно.
И последнее - настраиваем TOS.
Это выставление приоритетов прохождения
VoIP сигнала по Ethernet сетям.
Делается одинаково для всех устройств.
usr/config$ tos -print
IP Packet ToS information:
Signalling Packet:
DSCP Code : 6
Media Packet :
DSCP Code : 6
usr/config$
Не будем вдаваться в подробности максимально значения параметра TOS.
Выставим 6.
* Как было сказано ранее - мы не говорим простейшие вещи по
конфигурированию - но один раз напомним - команды Commit / Reboot.
В документации об этом написано.
Итак, считаем что Hardware инфраструктура готова. Проверяем
доступность до всех устройств из офиса С (там будет размещаться
GateKeeper). Пробуем, перегружаем, слушаем голос вежливой барышни со
всех сторон и думаем что будем делать дальше. А дальше - ставим GNU
GateKeeper.
Так как ранее мы ориентировались в построении всей инфраструктуры на
FreeBSD - продолжим в том же духе. У нас есть FreeBSD 5.4.
Ставим
/usr/ports/net/gatekeeper
Make
Make install
Или то же самое делаем через pkg_add - но будьте готовы к тому, что
достаточно много вспомогательных пакетов будет устанавливаться.
Теоретически можно ставить самый распоследний GateKeeper - но начать
надо с анализа одной странички и размышлений о привязанности этого
пакета к большому числу вспомогательных пакетов:
http://www.gnugk.org/compiling-gnugk.html Занимательный документ.
Ясно написано для FreeBSD что надо крепко ковыряться для получения
работающей системы. Тихо об этом забываем и ставим то, что
скомпилировано в дистрибутиве и по уверению разработчиков FreeBSD
работает. Теоретически существует версия для Windows. Да. Существует.
Только одна особенность, никем со стороны разработчиков GNUGK не
признаваемая - Dynamix с GNUGK под Win-2000 сервер или Win-2003 сервер
не работает. Суть вот в чем. Оно работает. Но падает. С
периодичностью от 20 мин до 2-х недель совершенно бессистемно. После
длительных разборок (и с техподдержкой Dynamix) общее мнение,
удовлетворяющее обе стороны, следующее: видимо какие-то проблемы у
Динамиксов с разбором TCP/IP пакетов производства Microsoft,
сформированных Win-2003. Разбираться с этим - не представляется
возможным - нерегулярные падения. Нельзя идентифицировать стабильный
момент зависания устройства. Зависает оно по Ethernet стороне. Решение
- ставить только в Unix окружении. Так и ставим.
Развернули. Поставили. Нарисуем файл /usr/local/etc/gnugk.ini
Оставлено то что для нас существенно. Комментарии прилагаются. Все
дано для примеров устройств выше.
; comments may start with # (only unix) or ; (unix or windows)
;; Boolean values.
;; Boolean Values are retresented by a case insensitive string
;; - "t"..., "y"... or "1" for TRUE
;; - all other for FALSE
;; NOTE: This parameters may be loaded at program startup and not
;; influenced by the HUP signal.
[Gatekeeper::Main]
;; 'config is present' indicator. Has to be 42. - Это всегда так, как пароль
Fourtytwo=42
; Includes in some RAS-Msgs
Name=GK-OFC
; overwritten from command line parameter
Home=192.168.60.252
;NetworkInterfaces=
TimeToLive=300
;TotalBandwidth=100000
;StatusPort=7000
;StatusTraceLevel=2
;UseBroadcastListener=0
;;
;; Failover support
;;
;AlternateGKs=1.2.3.4:1719:false:120:OpenH323GK2
;Sendto=1.2.3.4:1719
;EndpointIDSuffix=_gk1
;SkipForwards=4.3.2.1
;RedirectGK=Calls > 50
;;
;; You should never need to change any of the following values.
;; They are mainly used for testing or very sophisticated applications.
;;
;UnicastRasPort=1719
;MulticastPort=1718
;MulticastGroup=224.0.1.41
;EndpointSignalPort=1720
;ListenQueueLength=1024
;TimestampFormat=RFC822
[LogFile]
; hourly - once per hour
; daily - once per day,
; weekly - once per week,
; monthly - once per month
Rotate=hourly
; For weekly rotation:
; Mon, Tue, Wed, Thu, Fri, Sat, Sun
; Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
; 1, 2, 3, 4, 5, 6, 0
;RotateDay=Sun
; For monthly rotation (31th of each month, or the last day of the month
; if it has less than 31 days)
; RotateDay=31
; For daily, weekly and monthly rotation (rotation will be performed at 4:00)
RotateTime=15
; For hourly rotation (rotation will be performed at 0:59, 1:59, ...)
;RotateTime=59
;; Здесь может быть одна заминка - проверьте соответствие портов на
;; устройстве в разделе h323 и здесь
;; по умолчанию - могут быть разные порты
[RoutedMode]
GKRouted=1
H245Routed=0
CallSignalPort=1720
CallSignalHandlerNumber=1
RemoveH245AddressOnTunneling=0
AcceptNeighborsCalls=1
AcceptUnregisteredCalls=1
SupportNATedEndpoints=1
DropCallsByReleaseComplete=1
;RemoveCallOnDRQ=1
;SendReleaseCompleteOnDRQ=0
;ScreenDisplayIE=
;ScreenCallingPartyNumberIE=
;ScreenSourceAddress=
;ForwardOnFacility=1
;ShowForwarderNumber=1
;Q931PortRange=20000-20999
;H245PortRange=30000-30999
;ConnectTimeout=180000
;SetupTimeout=8000
TcpKeepAlive=1
[Proxy]
;Enable=1
;InternalNetwork=10.0.1.0/255.255.255.0,127.0.0.0/8
;T120PortRange=40000-40999
;RTPPortRange=50000-59999
;ProxyForNAT=1
;ProxyForSameNAT=0
;[Endpoint]
;Gatekeeper=no
;Gatekeeper=auto
;Gatekeeper=210.58.112.188
;Type=Gateway
;H323ID=CitronProxy
;E164=18888600000
;Password=
;Prefix=18888600,1888890003
;TimeToLive=900
;RRQRetryInterval=10
;UnregisterOnReload=0
;NATRetryInterval=60
;NATKeepaliveInterval=86400
;Discovery=1
;GatekeeperIdentifier=ParentGKId
;UseAlternateGK=1
;EndpointIdentifier=ChildGKId
;[Endpoint::RewriteE164]
;188889000=9
;;
;; Prefixes of e164 numbers for gateways.
;; A dot (.) matches any digit, ! at the beginning disables the prefix
;; Separate list elements by one of " ,;\t".
;; @see RasTbl::addPrefixes
;; This parameters should consider a HUP signal.
[RasSrv::GWPrefixes]
;; Test-Gateways
[RasSrv::RRQFeatures]
;OverwriteEPOnSameAddress=1
;AcceptEndpointIdentifier=1
;AcceptGatewayPrefixes=1
[RasSrv::ARQFeatures]
ArjReasonRouteCallToSCN=0
ArjReasonRouteCallToGatekeeper=1
CallUnregisteredEndpoints=1
RemoveTrailingChar=#
RoundRobinGateways=1
;; Routing polices define how the message destination is located
;; and where the call is routed. Currently the following policies
;; are implemented:
;;
;; explicit (only ARQ,Setup,Facility)
;;
;; If destCallSignalAddress is specified by the message,
;; the call is routed to this address - aliases, prefixes,
;; parent, neighbors are not further checked.
;;
;; internal
;;
;; A local GK registration table is checked for matching alias.
;;
;; parent
;;
;; A parent gatekeeper (if this GK is registered as a child GK)
;; is queried with ARQ or LRQ.
;;
;; dns
;;
;; Routing request aliases are scanned for presence of 'name@domain'
;; alias types - if such an alias is found, domain part is removed
;; and the call is routed to the endpoint 'name' at domain:1720.
;;
;; vqueue (only ARQ)
;;
;; Destination alises are checked for match with a virtual queue name
;; (configure via CTI::Agents). If there is a match, RoutingRequest
;; is signalled and the call is routed to the destination specified
;; by some external application (like ACD).
;;
;; neighbor
;;
;; The gatekeeper neighbors are queries with LRQ for the destination
;; of this routing request.
[RoutingPolicy]
default=explicit,internal,parent,neighbor
;[RoutingPolicy::OnARQ]
;h323_ID=vqueue,internal
;default=explicit,internal
;[RoutingPolicy::OnLRQ]
;0048=internal
;default=neighbor
;[RoutingPolicy::OnSetup]
;dialedDigits=internal,neighbor
;default=explicit,internal,parent,neighbor
;[RoutingPolicy::OnFacility]
;default=internal
[RasSrv::RRQAuth]
;; On a RRQ the h323-alias is queried from this section.
;; If there is an entry the endpoint is authenticated against the given rules.
;; If there is no entry the default action is performed. The default action
;; is to confirm the RRQ, unless the parameter "default=reject" is given.
;;
;; Notation:
;; <authrules> := empty | <authrule> "&" <authrules>
;; <authrule> := <authtype> ":" <authparams>
;; <authtype> := "sigaddr" | "sigip"
;; <autparams> := [!&]*
;; The notation and meaning of <authparams> depends on <authtype>:
;; - sigaddr: extended regular expression that has to match agains the
;; "PrintOn(ostream)" representation of the signal address of the request.
;; Example: "sigaddr:.*ipAddress .* ip = .* c3 47 e2 a5 .*port = 1720.*"
;; - sigip: specialized form of "sigaddr". Write the signalling ip adresse
;; using (commonly used) decimal notation:
;; "byteA.byteB.byteC.byteD:port"
;; Example of the above sigaddr: "sigip:195.71.226.165:1720"
;;
;; This parameters should consider a HUP signal.
;; Это и есть наши устройства
ofa=sigip:192.168.40.251:1720
ofb=sigip:192.168.41.251:1720
ofc=sigip:192.168.60.251:1720
default=confirm
;; The parameter "rule" may be one of the following:
;; - "forbid" disallow any connection (default when no rule us given)
;; - "allow" allow any connection
;; - "explicit" reads the parameter ;"<ip>=<value>"; with ip is the ip4-address
;; if the peering client. ;<value>; is resolved with
;Toolkit::AsBool;. If the ip
;; is not listed the param "default" is used.
;; - "regex" the ;<ip>; of the client is matched against the given regular expression.
;; First the ip-rules (like "explicit") are tested. Olny of no such param exists
;; the regex is tried.
;; Example: "regex=^195\.71\.(129|131)\.[0-9]+$"
;; - "password" queries remote user for login/password combination and checks
;; it against username/password stored in this section. Passwords are encrypted
;; with addpasswd utility using KeyFilled encryption key. DelayReject defines
;; delay before reject is sent.
[GkStatus::Auth]
rule=allow
;regex=^(195\.71\.(129|100)\.[0-9]+)|(62\.52\.26\.[1-2][0-9][0-9])$
; only used when "rule=explicit"
;default=forbid
;Shutdown=0
;KeyFilled=123
;DelayReject=5
;LoginTimeout=120
;;
;; Beside other things every number to rewrite has its
;; own key/value-line. The implemententation is such that
;; all numbers that shell be rewritten have to begin
;; with a common prefix given by 'Fastmatch'.
;;
;; Doc From the code:
;; // Do rewrite to ;newE164;. Append the suffix too.
;; // old: 01901234999
;; // 999 Suffix
;; // 0190 Fastmatch
;; // 01901234 prefix, Config-Rule: 01901234=0521321
;; // new: 0521321999
;;
;; The rewrite-numbers function take care of reloads/a HUP signal.
[RasSrv::RewriteE164]
;; Only if an e164 number begins with ;Fastmatch; the
;; the further rewriting is done. Only one #Fastmatch# can be given.
;Fastmatch=
;0190703100=052418088663
;01903142=
0521178260
;5241908601903142=521178260
;7777.=.
;%%%%48=48
;; Это пошли запреты и замены
;; запретим звонить на номер 2-115, просто заменим эту посылку на 0, устройство обрежет звонок
Fastmach=2115
2115=0
;; звонок на номер 5-115 переведем на 5-105
Fastmach=5115
5115=5105
;; звонок на номер 9-112 переведем на 2-102
Fastmach=9112
9112=2102
;---------------------------------------------------------
[FileAcct]
; a full path to a file where CDRs will be logged
;; пишем лог звонков
DetailFile=/var/log/gkkbp.log
; 1 to use status interface compatible CDRs, 0 to build CDR from CDRString
StandardCDRFormat=1
; parametrized CDR format string
CDRString=%s|%u|%{Calling-Station-Id}|%{Called-Station-Id}|%d|%c
; timestamp format for CDR strings
TimestampFormat=ISO8601
; hourly - once per hour
; daily - once per day,
; weekly - once per week,
; monthly - once per month
Rotate=hourly
; For weekly rotation:
; Mon, Tue, Wed, Thu, Fri, Sat, Sun
; Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
; 1, 2, 3, 4, 5, 6, 0
;RotateDay=Sun
; For monthly rotation (31th of each month, or the last day of the month
; if it has less than 31 days)
; RotateDay=31
; For daily, weekly and monthly rotation (rotation will be performed at 4:00)
;RotateTime=4:00
; For hourly rotation (rotation will be performed at 0:59, 1:59, ...)
RotateTime=46
Запускаем Гейткипер
>/usr/local/bin/gnugk -c /usr/local/etc/gnugk.ini
Проверяем работоспособность
$ ps ax| grep gnugk
97349 p0 S+ 0:00.01 /bin/sh -c ps ax| grep gnugk
97351 p0 S+ 0:00.01 grep gnugk
39198 v3 S+ 34:18.77 /usr/local/bin/gnugk -c /usr/local/etc/ gnugk.ini
Press any key to continue...
Что дальше - заходим на это же машину по порту 7000 - получаем консоль
гейткипера.
По команде " ? " получаем список всех подключенных устройств.
Дальше - видим какие порты (сканируем, в крайнем случае) и адреса
(сами ставили) используются и обслуживаются гейткипером и
соответственного - думаем что делать с Firewall, оставляя доступ
только с VoIP устройств и тех машин на которых надо настроить MS
NetMeeting.
Мы заведомо не занимались вопросами защиты - после установки системы
системный администратор самостоятельно для себя должен решить что
разрешается а что нет. Это не описание Call-центра. Это простая
корпоративная система телефонии.
Результат: система работает. Осматриваемся, читаем документацию,
звоним, смотрим самостоятельно ПРИ РАБОТАЮЩЕЙ СИСТЕМЕ что можно
сделать лучше.
B. Yasynetskyy
iasb@yahoo.com.">[email protected]
M.Yasynetska
marsha@list.ru.">[email protected]
6.11.2005