Provisioning [Linksys|Cisco] VoIP devices

Jan 9, 2017 21:02 · 405 words · 2 minute read asterisk linksys cisco

Ручная настройка ip-телефонов Linksys (Cisco) несложная, но занимает очень много времени, особенно если таких телефонов в компании более сотни. Давайте разберемся с [Linksys|Cisco] Provisioning и облегчим себе жизнь!

Информация не секретная и прекрасно находится в Google. Идея заключается в том, что модели ip-телефонов, поддерживающие provisioning при включении ищут в локальной сети tftp-сервер с конфигурационными файлами вида spa$PSN.cfg и $MA.xml, где $PSN это модель телефона (так как у меня используются три модели телефонов, то таких файлов будет тоже три), а $MA — MAC-адрес телефона (подробнее об этом чуть ниже).

Для начала установим и настроим необходимое ПО:

sudo aptitude install atftp atftpd

Приводим конфигурационный файл /etc/default/atftpd к следующему виду:

USE_INETD=false
OPTIONS="--daemon --tftpd-timeout 300 --bind-address 192.168.2.26 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=7 --logfile=/var/log/atftp.log /var/tftp"

Создаем все необходимые каталоги, выставляем права:

sudo mkdir /var/tftp
sudo chmod -R 777 /var/tftp

Запускаем сервис:

systemctl start atftpd.service

Примечание. Если порт 69/udp занят, то сервис не запустится, пока его не освободить.

Далее необходимо добавить одну строку в конфигурационный файл dhcp-сервера (в моем случае это /etc/dhcp/dhcpd.conf):

...
# Telephones
subnet 192.168.2.0 netmask 255.255.255.0 {
...
    option tftp-server-name "192.168.2.26";
}
...

и перезапустить dhcp-сервер:

systemctl restart isc-dhcp-server.service

Как я уже упоминал, в моем случае используются три различные модели телефонов, поддерживающие provisioning. Создадим конфигурационные файлы с общими настройками для каждой модели:

sudo touch /var/tftp/spa942.cfg
sudo touch /var/tftp/spa504G.cfg
sudo touch /var/tftp/spa509G.cfg

Содержимое файлов будет практически идентичным и выглядеть так:

<flat-profile>
<Primary_NTP_Server ua="na">192.168.0.13</Primary_NTP_Server>
<Secondary_NTP_Server ua="na">192.168.0.13</Secondary_NTP_Server>
<Proxy_1_ ua="na">192.168.1.12</Proxy_1_>
<Enable_VLAN group="System/VLAN_Settings">Yes</Enable_VLAN>
<VLAN_ID group="System/VLAN_Settings">101</VLAN_ID>
<Enable_PC_Port_VLAN_Tagging group="System/VLAN_Settings">No</Enable_PC_Port_VLAN_Tagging>
<PC_Port_VLAN_ID group="System/VLAN_Settings">1</PC_Port_VLAN_ID>
<Default_Character_Encoding group="Regional/Miscellaneous">UTF-8</Default_Character_Encoding>
<Select_Logo ua="na">Text Logo</Select_Logo>
<Select_Background_Picture ua="na">Text Logo</Select_Background_Picture> 
<Time_Zone ua="na">GMT+02:00</Time_Zone> 
<Daylight_Saving_Time_Rule ua="na">start=3/-1/7/3:0:0;end=10/-1/7/4:0:0;save=1</Daylight_Saving_Time_Rule>
<Profile_Rule_B ua="na">/Cisco/SPA504G/$MA.xml</Profile_Rule_B>
<Resync_Periodic ua="na">3600</Resync_Periodic>
</flat-profile>

Отличаться друг от друга конфиги будут только параметром

<Profile_Rule_B ua="na">/Cisco/SPA504G/$MA.xml</Profile_Rule_B>

, в котором указан относительный путь к файлам с индивидуальными настройками каждого телефона.

Создаем каталоги, где будут находиться индивидуальные настройки:

mkdir -p Cisco/SPA504G
mkdir -p Cisco/SPA509G
mkdir -p Linksys/SPA942

И раскладываем внутри них файлы вида $MA.xml, где $MA — MAC-адрес телефона. Индивидуальные настройки для каждого телефона примерно следующие:

cat 30e4db80fa87.xml
<flat-profile>
<Display_Name_1_ ua="na">Test User</Display_Name_1_>
<User_ID_1_ ua="na">305</User_ID_1_>
<Password_1_ ua="na">VeryStrongPassword</Password_1_>
<Auth_ID_1_ ua="na">305</Auth_ID_1_>
</flat-profile>

После проделанных действий у нас получилась примерно следующая структура каталогов и файлов:

tree
.
├── Cisco
│   ├── SPA504G
│   │   ├── 30e4db80fa87.xml
│   │   ...
│   │   └── ece1a9cd95ed.xml
│   └── SPA509G
│       ├── 84802d412e2c.xml
│       ...
│       └── c47295665bf7.xml
├── Linksys
│   └── SPA942
│       ├── 000e083bed45.xml
│       ...
│       └── 000e083bfb67.xml
├── spa504G.cfg
├── spa509G.cfg
└── spa942.cfg

Теперь стало гораздо удобнее управлять настройками ip-телефонов в локальной сети.

tweet Share