Есть телефонный аппарат Cisco IP Iphone 7962G и его нужно задействовать, по началу я даже не знал как к нему подступиться, по информации с официального сайта выходило, что он может работать только с приложением от Cisco, но ведь у меня такого нет и как я понял до того момента как я устроился в эту контору этого и не было. Выходом из этой ситуации я получил, что конфигурационные файлы будут забираться с tftpd сервиса развернутого на сервере с ролью Asterisk(FreePBX), а обработка звонков будет идти через транки настроенные на связь с облачной АТС. Да вот такой наше руководство любит геморрой, а все из-за того, что в этой Манго видите ли красивые отчеты (но не понятные, ограниченные). Ну да ладно, мне важнее чтобы телефонный аппарат работал, т. е. Совершал звонки входящие и исходящие.
Далее я все действия лично проделал и конечно же задокументировал, чтобы понимать если что-то вдруг пойдет не так в работе, да и напоминалка необходима
Устанавливаю Asterisk(FreePBX) на Ubuntu Trusty (см заметку) + настраиваю работу с использованием SCCP протокола (см. заметку) с которым и работают телефоны Cisco. Также на этом Asterisk(FreePBX) будет TFTPD сервис с которого будут подгружаться файлы прошивки и необходимые файлы, в частности для данного телефонного аппарата самая актуальная прошивка: SCCP42.9-4-2SR2-2S.loads на момент написания данной заметки.
и конфигурационный файл: SEPF0292959E7CC.cnf.xml
На заметку: SEP → это приставка, а после идет MAC адрес, посмотреть который можно на задней части аппарата присутствует этикетка с указанием именно Важной информации и ею не стоит пренебрегать.
ekzorchik@srv-phone:~$ nano /tftpboot/SEPF0292959E7CC.cnf.xml
<device>
<deviceProtocol>SCCP</deviceProtocol>
<sshUserId>root</sshUserId>
<sshPassword>cisco</sshPassword>
<devicePool>
<dateTimeSetting>
<dateTemplate>D.M.Y</dateTemplate>
<timeZone>GMT0</timeZone>
</dateTimeSetting>
<callManagerGroup>
<members>
<member priority="0">
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
</ports>
<processNodeName>192.168.1.122</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
</devicePool>
<commonProfile>
<phonePassword>cisco</phonePassword>
<backgroundImageAccess>false</backgroundImageAccess>
<callLogBlfEnabled>0</callLogBlfEnabled>
</commonProfile>
<loadInformation>SCCP42.9-4-2SR2-2S</loadInformation>
<vendorConfig>
<disableSpeaker>false</disableSpeaker>
<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
<pcPort>0</pcPort>
<settingsAccess>1</settingsAccess>
<garp>0</garp>
<voiceVlanAccess>0</voiceVlanAccess>
<videoCapability>0</videoCapability>
<autoSelectLineEnable>0</autoSelectLineEnable>
<webAccess>1</webAccess>
<spanToPCPort>1</spanToPCPort>
<loggingDisplay>1</loggingDisplay>
<loadServer></loadServer>
</vendorConfig>
<deviceSecurityMode>1</deviceSecurityMode>
<idleTimeout>0</idleTimeout>
<directoryURL></directoryURL>
<servicesURL></servicesURL>
<idleURL></idleURL>
<messagesURL></messagesURL>
<proxyServerURL></proxyServerURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>2</transportLayerProtocol>
<capfAuthMode>0</capfAuthMode>
<capfList>
<capf>
<phonePort>3804</phonePort>
</capf>
</capfList>
<certHash></certHash>
<encrConfig>false</encrConfig>
</device>
На заметку: когда на TFTP лежит несколько прошивок, то на загружаемый телефон загружается так которая подходит, если не указано явно в конфигурационном файле (<loadInformation>SCCP42.9-4-2SR2-2S</loadInformation>
)
Далее настраиваю описание для работы данного телефонного аппарата Cisco IP Phone 7962G через протокол SCCP с сервисом АТС (Asterisk + FreePBX)
ekzorchik@srv-phone:~$ sudo nano /etc/asterisk/sccp.conf
[SEPF0292959E7CC]
description = www.ekzorchik.ru
devicetype = 7962
type = device
button = line, 840
deny=0.0.0.0/0.0.0.0 ; Same as general
permit=0.0.0.0/0.0.0.0 ; Same as general
pickupcontext = sccp
tzoffset = +0
transfer = on
trustphoneip = no
directrtp=off
earlyrtp = progress
private = on
mwilamp = on
mwioncall = off
setvar=testvar=value
cfwdall = on
[840]
id = 840
type = line
label = Phone 840
description = Line 840
cid_name = 840
cid_num = 840
echocancel = off
context = from-internal-xfer
incominglimit = 3
transfer = on
vmnum = 600
trnsfvm = 1000
secondary_dialtone_digits = 9
secondary_dialtone_tone = 0x22
musicclass=default
language=ru
echocancel = on
silencesuppression = off
Вот теперь перехожу к настройке через Web-интерфейс FreePBX таких параметров, как Extensions, Trunk, Inbound & Outbound:
http://192.168.1.122/ – FreePBX Administration — user&pass — Extensions — Device: Other (Custom Device) — Submit
- Extension Name: 840
- Display Name: 840
- Outbound CID: 840
- dial: SCCP/840
После нажимаю Submit — Apply Config
Затем создаю Trunk где описывается что номер 840 подключается к облачной АТС Манго в роли Trunk:
http://192.168.1.122/ – FreePBX Administration — user&pass — Connectivity
Outgoing Settings
Trunk Name: 000840
Outbound CallerID: 000840
Disable Trunk: галочка должна быть снята
Trunk Name: 840-out
PEER Details:
- username=000840
- type=peer
- secret=1234567
- qualify=yes
- insecure=invite
- host=domain.mangosip.ru
- fromuser=000840
- fromdomain=domain.mangosip.ru
- dtmfmode=inband
- disallow=all
- allow=alaw
- accountcode=Mgo
Incoming Settings
USER Context: 840-in
USER Details:
- type=user
- secret=1234567
- qualify=yes
- host=domain.mangosip.ru
- dtmfmode=inband
- dissalow=all
- context=from-trunk
- alwaysauthreject=yes
- allowguest=no
- allow=alaw
- accountcode=Mgo
Registration
Register String:
- 000840:1234567@domain.mangosip.ru/840
После нажимаю Submit Changes — Apply Config
Затем в консоли Asterisk проверяю, что транк зарегистрировался:
ekzorchik@srv-phone:~$ sudo asterisk -rx "sip show registry"
Host dnsmgr Username Refresh State Reg.Time
domain.mangosip.ru:5060 N 000840 105 Registered Sun, 05 Mar 2017 08:18:06
1 SIP registrations.
Да, регистрация SIP транка под номером 840 успешно произведена.
Теперь настраиваю правила обработки входящих и исходящих вызовов.
http://192.168.1.122/ – FreePBX Administration — user&pass — Connectivity — Inbound Routes
- Description: 840
- DID Number:
_X.
- CallerID Number: 840
- Set Destination: Trunks → 000840(sip)
и нажимаю Submit – Apply Config
http://192.168.1.122/ – FreePBX Administration — user&pass — Connectivity — Outbound Routes
- Route Name: 000840
- Route CID: 000840
- Dial Patterns that will use this Route:
()_|[./840]
- Trunk Sequence for Matched Routes: 000840
и нажимаю Submit Changes — Apply Config
Чтобы мой телефонный аппарат знал откуда брать файлы прошивки и конфигурационный файл следует на Mikrotik указать опцию в настройках Вашего пула выдачи DHCP–адресов, как это сделать см. ниже:
Winbox — ip&mac — user&pass — IP — DHCP-Server — вкладка Options — Add
- Name: tftp
- Code: 150
- Valude: 192.168.1.122
после открываю вкладку Networks, выделяю сеть и левой кнопкой по ней два раза перехожу в ее настройки, где в параметре: DHCP Options: выбираю созданный параметр (именоваться он будет: tftp78) указывающий телефонам Cisco расположение TFTP сервера в сети для их конфигурации.
Чтобы Ваш TFTP сервис стал более разговорчивым советую добавить параметр болтливости:
ekzorchik@srv-phone:~$ sudo nano /etc/default/tftpd-hpa
TFTP_OPTIONS="--secure --create --verbose"
ekzorchik@srv-phone:~$ sudo service tftpd-hpa restart
Таким образом вы сможете видеть, как телефонный аппарат обращается к TFTP сервису.
Теперь действия по полному сбросу всех настроек на телефонном аппарате Cisco IP Phone 7962G
- 1) Отключаю кабель питания от телефона Cisco IP Phone 7962
- 2) Подключаю ethernet кабель к телефону Cisco IP Phone 7962
AUX,10/100SW,10/100PC → Вот во второй порт слева и подключаю ethernet кабель
- 3) Подключаю кабель питания к телефону Cisco IP Phone 7962
- 4) И выполняю один из вариантов сброса настроек:
Сразу после того как на телефоне погаснут все кнопки после включения, НАЖИМАЕМ «#» и держим пока кнопки находящиеся справа от дисплея не начнут последовательно мигать оранжевым цветом.
Набираем на цифровой клавиатуре комбинацию: 3491672850*# или сброс через код: 123456789*0#
И ждем пока телефон не сбросится (обычно минут 7-10 на это дело уходит)
На заметку: В первый раз у Вас может не получиться пункт 4, но после Вы приноровитесь и все получится. В моем случае пока я не осознал как это делать у меня не получалось, а раза этак с тысячного у меня получилось. Еще что важно сброс не будет выполнен если не в сети отсутствует tftp сервис с которого должны быть подтянуты файлы обновления и конфигурационные файлы.
На заметку: первый раз необычно, что после ввода цифровое комбинации телефон не подает каких-либо признаков жизни, и первая мысль я что-то сделал не так, не получилось, но с данным аппаратом это не так, ожидаем. Это если использовали полный сброс, а при обычном сбросе можно видеть какие файлы закачиваются на телефон. По времени: 7 — 10 минут.
- 5) Когда телефон произведет сброс всех настроек он по подключенному кабелю ethernet сам с tftp сервера произведет закачку прошивки и необходимые конфигурационные файл, а затем аутентификация на FreePBX
Также на сервере где развернут FreePBX + tftp можно смотреть логи, (см. выше как включить болтливость сервиса tftpd) как телефонный аппарат Cisco IP Phone 7962 обращается к tftp за файлами прошивки:
ekzorchik@srv-phone:~$ sudo tail -f /var/log/syslog | grep tftp
Mar 5 07:03:36 srv-phone in.tftpd[16450]: RRQ from 192.168.1.199 filename term62.default.loads
Mar 5 07:03:37 srv-phone in.tftpd[16451]: RRQ from 192.168.1.199 filename jar42sccp.9-4-2ES22.sbn
Mar 5 07:03:46 srv-phone in.tftpd[16452]: RRQ from 192.168.1.199 filename cnu42.9-4-2ES22.sbn
Mar 5 07:03:49 srv-phone in.tftpd[16456]: RRQ from 192.168.1.199 filename apps42.9-4-2ES22.sbn
Mar 5 07:04:09 srv-phone in.tftpd[16457]: RRQ from 192.168.1.199 filename dsp42.9-4-2ES22.sbn
Mar 5 07:04:12 srv-phone in.tftpd[16458]: RRQ from 192.168.1.199 filename cvm42sccp.9-4-2ES22.sbn
где 192.168.1.199 → это IP адрес который выдал мой Mikrotik данному телефонному аппарату.
После обновления с TFTP сервера, у меня на телефонном аппарате надпись: Registration Rejected: Device Unknown, см. логи:
ekzorchik@srv-phone:~$ sudo tail -f /var/log/asterisk/messages
[Mar 5 07:20:05] NOTICE[16931] sccp_actions.c: SEPEF0292959E7CC: Rejecting device: Device Unknown
Вот в логе после приставки SEP F0292959E7CC, а в файле:
ekzorchik@srv-phone:~$ sudo nano /etc/asterisk/sccp.conf
[SEPEF0292959E7CC]
изменил на [SEPF0292959E7CC]
После не забываем сохранить внесенные изменения.
Также обнаружил, что в /tftpboot отсутствует файла XMLDefault.xml
ekzorchik@srv-phone:~$ nano /tftpboot/XMLDefault.cnf.xml
<Default>
<callManagerGroup>
<members>
<member priority="0">
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<mgcpPorts>
<listen>2427</listen>
<keepAlive>2428</keepAlive>
</mgcpPorts>
</ports>
<processNodeName>192.168.1.122</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
<authenticationURL></authenticationURL>
<directoryURL></directoryURL>
<idleURL></idleURL>
<informationURL></informationURL>
<messagesURL></messagesURL>
<servicesURL></servicesURL>
</Default>
Также не забываем сохранить внесенные изменения.
Еще раз проверяю MAC адрес моего аппарата, на оборотной строке есть заводская этикетка: MAC: F0292959E7CC
Да нет все верно, и конфигурационный файл правильный.
Изменяю права в каталоге /tftpboot:
ekzorchik@srv-phone:~$ sudo chown nobody:nogroup -R /tftpboot/
и перезапускаю сервис FreePBX:
ekzorchik@srv-phone:~$ sudo amportal restart
И буквально сразу же телефонный аппарат Cisco IP Phone 7962G успешно регистрируется на сервере Asterisk (FreePBX):
После проверил, что звонки внутри сети проходят, слышимость отличная, и прием происходит без каких-либо происшествий.
Вот собственно и всё действия которые нужно сделать, чтобы заставить работать данный телефонный аппарат Cisco IP Phone 7962G в схеме:
Аппарат ←ethernet→ Mikrotik ←ethernet→ Asterisk(FreePBX)+TFTPD ←ethernet→ Облачная АТС от Манго (будь оно не ладно).
Мое руководство уже понимает, что сервис вынесенный в облако это зло с которым сложно жить, спрашивать то с не кого, анализировать проблемы не возможно, да и привязка к тому оборудованию которое поддерживает облачная АТС.
Ну ладно, с этим мы еще пободаемся и все же уйдем на свою АТС, благо у меня есть опыт, а если я что-то не знаю, что разберусь, я же системный администратор по другому и быть не может. На этом всё, с уважением автор блога Олло Александр aka ekzorchik.