Все ниже производимые действия проходят на Ubuntu 14.04.4 Server amd64 и опираются на заметку где пошагово разобрана установка голой установки Asterisk.
Вот я и подошел к тому моменту когда собираемая, анализируемая информация перестала быть просто кашей в голове. Данная заметка шпаргалка самому себе. Ну что ж начну пожалуй своей повествование:
Asterisk поддерживает протокол SCCP посредством одного из двух модулей:
- chan_skinny.so — базовый функционал SCCP. Модуль уже входит в состав Asterisk.
- chan_sccp.so — расширенный функционал SCCP. Устанавливается отдельно.
Но сперва настраиваю точное время на сервере, хотя это нужно было сделать еще при установке сервера. Когда телефон будет подключен на нем будет точное время и текущая дата.
ekzorchik@srv-host:~$ sudo apt-get install ntp ntpdate -y
ekzorchik@srv-host:~$ sudo rm /etc/localtime
ekzorchik@srv-host:~$ sudo ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
ekzorchik@srv-host:~$ sudo nano /etc/ntp.conf
server pool.ntp.org
ekzorchik@srv-host:~$ sudo ntpdate pool.ntp.org
ekzorchik@srv-host:~$ sudo ntpdate -bs pool.ntp.org
ekzorchik@srv-host:~$ date
Sat Apr 2 10:08:04 MSK 2016
ekzorchik@srv-host:~$ sudo asterisk -r
Asterisk 13.7.2~dfsg-0~ppa1, Copyright (C) 1999 – 2014, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type ‘core show license’ for details.
=========================================================================
Connected to Asterisk 13.7.2~dfsg-0~ppa1 currently running on srv-host (pid = 780)
srv-host*CLI> sccp show devices
No such command ‘sccp show devices’ (type ‘core show help sccp show’ for other possible commands)
ekzorchik@srv-host:~$ wget http://downloads.sourceforge.net/project/chan-sccp-b/Chan_SCCP-4.2.3_STABLE_r6728.tar.gz
Читаю файл README на предмет что необходимо проделать прежде чем подойти к процессу компиляции:
ekzorchik@srv-host:~$ sudo apt-get install autoconf automake make libtool m4 -y
После компилирую модуль SCCP которого в Asterisk нет.
ekzorchik@srv-phone:~$ tar zxf Chan_SCCP-4.2.3_STABLE_r6728.tar.gz
ekzorchik@srv-host:~$ cd Chan_SCCP-4.2.3_STABLE_r6728/
ekzorchik@srv-host:~/Chan_SCCP-4.2.3_STABLE_r6728$ ./configure
configure: error: Cannot find pbx libraries – these are required.
ekzorchik@srv-host:~/Chan_SCCP-4.2.3_STABLE_r6728$ sudo apt-get install asterisk-dev -y
в один прекрасный момент повторяя задокумментированные шаги столкнулся что не могу поставить пакет asterisk-dev
Err http://ppa.launchpad.net/jan-hoffmann/asterisk13/ubuntu/ trusty/main asterisk-dev all 1:13.7.2~dfsg-0~ppa1
404 Not Found
E: Failed to fetch http://ppa.launchpad.net/jan-hoffmann/asterisk13/ubuntu/pool/main/a/asterisk/asterisk-dev_13.7.2~dfsg-0~ppa1_all.deb 404 Not Found
E: Unable to fetch some archives, maybe run apt-get update or try with –fix-missing?
ekzorchik@srv-host:~/Chan_SCCP-4.2.3_STABLE_r6728$ sudo apt-get update --fix-missing
ekzorchik@srv-host:~/Chan_SCCP-4.2.3_STABLE_r6728$ sudo apt-get install asterisk-dev -y
ekzorchik@srv-host:~/Chan_SCCP-4.2.3_STABLE_r6728$ ./configure
ekzorchik@srv-host:~/Chan_SCCP-4.2.3_STABLE_r6728$ sudo make && sudo make install
ekzorchik@srv-host:~/Chan_SCCP-4.2.3_STABLE_r6728$ cd ~/
После включаем загрузку chan_sccp.so при загрузке Asterisk:
ekzorchik@srv-host:~$ sudo nano /etc/asterisk/modules.conf
noload => chan_skinny.so
load => chan_sccp.so
load => res_features.so
Сохраняем внесенные изменения.
ekzorchik@srv-host:~$ sudo cp Chan_SCCP-4.2.3_STABLE_r6728/conf/sccp.conf /etc/asterisk/sccp.conf
ekzorchik@srv-host:~$ sudo chown -R asterisk:asterisk /etc/asterisk/
ekzorchik@srv-host:~$ sudo asterisk -r
Asterisk 13.7.2~dfsg-0~ppa1, Copyright (C) 1999 – 2014, Digium, Inc. and others.
srv-host*CLI> core reload
srv-host*CLI> quit
Asterisk cleanly ending (0).
Executing last minute cleanups
ekzorchik@srv-host:~$ sudo reboot
После загрузки проверяю, что Asterisk видит модуль (SCCP) который я выше скомпилировал и добавил в систему:
ekzorchik@srv-host:~$ sudo asterisk -r
srv-host*CLI> module show like sccp
Module Description Use Count Status Support Level
chan_sccp.so Skinny Client Control Protocol (SCCP). R 0 Running unknown
1 modules loaded
srv-host*CLI> sccp show version
Skinny Client Control Protocol (SCCP). Release: 4.2.3 STABLE – 6728M (built by ‘ekzorchik’ on ‘2016-03-29 13:58:13 UTC’)
srv-host*CLI> sccp show devices
+— Devices ——————————————————————————————————————————————–+
| Descr Address Mac RegState Token RegTime Act Lines Nat |
+ ========================= ============================================ ================ ========== ===== ========================= === ===== ========= +
| Phone Number One — SEP001122334455 None No To Thu Jan 1 03:00:00 1970 No 0 Auto |
| Phone Number Two — SEP002244668800 None No To Thu Jan 1 03:00:00 1970 No 0 Auto |
В выводе выше значатся два дефолтных описания телефонов взятых из файла: /etc/asterisk/sccp.conf, для своей установки советую удалить данный файл и создать свой собственный.
Далее по заметке своего блога поднимаю tftpd, но все же ниже подробные шаги поднятия tftpd:
ekzorchik@srv-host:~$ sudo apt-get install tftpd-hpa -y
ekzorchik@srv-host:~$ sudo mkdir /tftpboot
ekzorchik@srv-host:~$ sudo chmod -R 777 /tftpboot/
ekzorchik@srv-host:~$ sudo chown -R nobody:nogroup /tftpboot/
ekzorchik@srv-host:~$ sudo cp /etc/default/tftpd-hpa /etc/default/tftpd-hpa.backup
ekzorchik@srv-host:~$ sudo nano /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"
ekzorchik@srv-host:~$ sudo service tftpd-hpa restart
tftpd-hpa stop/waiting
tftpd-hpa start/running, process 1379
ekzorchik@srv-host:~$ sudo netstat -tulpn | grep :69
udp 0 0 0.0.0.0:69 0.0.0.0:* 1663/in.tftpd
Чтобы проконтролировать кто подключается к данному tftp сервису нужно глянуть логи здесь:
ekzorchik@srv-host:~$ cat /var/log/syslog | grep tftp
На Mikrotik настраиваю специализированную Wifi сеть где авторизироваться могут только определенные устройства (ограничение по MAC адресу) и доступ из этой сети только к TFTP-серверу и по совместительству он же Asterisk:
После на данной Wifi сети активирую в настройках DHCP следующие параметры:
Winbox — ip&mac — user&pass — IP — DHCP-Server — вкладка Options — Add
Name: tftp
Code: 150
Valude: 10.7.8.122
после открываю вкладку Networks, выделяю сеть и левой кнопкой по ней два раза перехожу в ее настройки, где в параметре: DHCP Options: выбираю созданный параметр указывающий телефонам Cisco расположение TFTP сервера в сети для их конфигурации.
Далее подключаю телефон Cisco CP-7925G к созданной сети Wifi на Микротике, для этого можно задействовать мою заметку где я показываю как посредством Web-интерфейса настроить телефон или же только на телефоне обозначить к какой сети Wifi подключаться, вот например так: В главном меню когда включили телефон переходим в настройки (по умолчанию язык интерфейса Английский) Settings — Network Profiles — выбираю профиль Profile 1 и нажимаю клавишами View — WLAN Configuration. Теперь чтобы внести изменения нужно разблокировать телефон, т. е. Набрать следующие символы именно в такой последовательности: **#
и нажать кнопку «Вызов» этой комбинацией я разблокирую настройки (выбираю соответствующую настройку нажимаю Change — выбираю и нажимаю Save), у меня:
SSID: cisco
Security Mode: Open
802.11 Mode: 802.11b/g
Так хочу заменить, что если перейти в любой другой раздел настроек блокировка изменения будет активирована и ее также нужно будеть снять той комбинацией выше которую я указал
У меня телефон успешно подключился об этом говорит строка подключения устройства к wifi сети на микротике:
Теперь нужно создать конфигурационные файлы для работы с телефонами Cisco CP-7925G
ekzorchik@srv-host:~$ 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>10.7.8.122</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
<authenticationURL></authenticationURL>
<directoryURL></directoryURL>
<idleURL></idleURL>
<informationURL></informationURL>
<messagesURL></messagesURL>
<servicesURL></servicesURL>
</Default>
Не забываем сохранить внесенные изменения.
ekzorchik@srv-host:~$ nano /tftpboot/SEPE02F6D647697.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>10.7.8.122</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
</devicePool>
<commonProfile>
<phonePassword></phonePassword>
<backgroundImageAccess>false</backgroundImageAccess>
<callLogBlfEnabled>0</callLogBlfEnabled>
</commonProfile>
<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>
<userLocale>
<name>Russian_Russian_Federation</name>
<uid></uid>
<langCode>ru_RU</langCode>
<winCharSet>utf-8</winCharSet>
</userLocale>
<networkLocale>Russian_Federation</networkLocale>
<networkLocaleInfo>
<name>Russian_Federation</name>
</networkLocaleInfo>
<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>
Затем качаем с сайта cisco прошивку для имеющегося телефона, на момент написания данной заметки она значится как: CP7925G-1.4.8.4.TAR, но вот только скачать ее можно лишь имея привилигированный аккаунт на сайте Cisco, бесплатный же такой возможности не дают, так что ищите на просторах интернета либо последнюю либо любую, к примеру я использую CP7925G-1.4.7.3.TAR, распаковываю данный архив в tftpboot:
aollo@system:~$ scp /home/aollo/Documents/tips_narabotki/tips_cisco/CP7925G-1.4.7.3/* ekzorchik@10.7.8.122:/tftpboot
После поправляю права на каталог /tftpboot:
ekzorchik@srv-host:~$ sudo chmod -R 777 /tftpboot/
ekzorchik@srv-host:~$ sudo sudo chown -R nobody:nogroup /tftpboot/
ekzorchik@srv-host:~$ sudo service tftpd-hpa restart
ekzorchik@srv-host:~$ sudo netstat -tulpn | grep :69
udp 0 0 0.0.0.0:69 0.0.0.0:* 1777/in.tftpd
На заметку: чтобы телефон перечитал получаемые файлы через tftp его нужно выключить и включить.
Также нужно поправить разрешения на доступ mikrotik’а к Asteris’ку, потом как сейчас если обратить внимание на консоль asterisk можно заметить ошибки в доступе:
ekzorchik@srv-host:~$ sudo asterisk -r
[Apr 3 13:22:18] WARNING[1017]: sccp_socket.c:1140 sccp_accept_connection: SCCP: Rejecting Connection: Ip-address ‘10.7.8.128:1522’ denied. Check general deny/permit settings (deny:0.0.0.0/0.0.0.0,permit:192.168.1.0/255.255.255.0,).
srv-host*CLI> quit
Asterisk cleanly ending (0).
Executing last minute cleanups
ekzorchik@srv-host:~$ sudo nano /etc/asterisk/sccp.conf
через «Поиск и Замена» меням строки:
192.168.1.0/255.255.255.0
192.168.1.5/255.255.255.255
на
0.0.0.0/0.0.0.0
ekzorchik@srv-host:~$ sudo chown -R asterisk:asterisk /etc/asterisk/
ekzorchik@srv-host:~$ sudo service asterisk restart
Теперь заходим в консоль Asterisk и проверяем, что cisco-телефон успешно подключился:
ekzorchik@srv-host:~$ sudo asterisk -r
srv-host*CLI> sccp show devices
+— Devices ——————————————————————————————————————————————–+
| Descr Address Mac RegState Token RegTime Act Lines Nat |
+ ========================= ============================================ ================ ========== ===== ========================= === ===== ========= +
| Phone Number One — SEP001122334455 None No To Thu Jan 1 03:00:00 1970 No 0 Auto |
| Phone Number Two — SEP002244668800 None No To Thu Jan 1 03:00:00 1970 No 0 Auto |
| <not set> 10.7.8.128:1763 SEPE02F6D647697 Progress No To Sun Apr 3 13:27:06 2016 No 1 (Auto)On |
+——————————————————————————————————————————————————–+
Отлично, как видно в выводе значится MAC-адрес (E02F6D647697) моего телефона Cisco CP-7925 который успешно подключился к серверу Asterisk. Я долго шел чтобы разобрать все шаги которые нужно было применить чтобы самостоятельно воспроизвести то, что уже работало в компании настроенное одним человек только который не очень то и любил все докумментировать, а тем более объяснить как оно тут вообще устроено. А из всего это случались частые обрывы, недовольство пользователей, руководства, но сейчас когда работаю я такого нет. Только порядок и ни какого хаоса. В дальнейших заметках я рассмотрю много интересных задач с которыми мне пришлос столкнуться самостоятельно. На этом я прощаюсь и до новых встреч, с уважением автор блога — Олло Александр (aka ekzorchik).