Provisioning [Linksys|Cisco] VoIP devices
Jan 9, 2017 21:02 · 405 words · 2 minute read
Ручная настройка 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-телефонов в локальной сети.