среда, 21 сентября 2011 г.

Cisco-Linksys "PROVISION" автоматическая настройка SPA и PAP2T

Суть провижинга заключается в следующем.
На сервере хранятся конфигурационные файлы для каждого устройства в сети, а так же общие шаблоны, используемые всеми девайсами. В общем шаблоне хранятся такие настройки как адрес SIP прокси сервера, используемые аудио кодеки, и пр. В индивидуальных конфигурационных файлах, как минимум, хранятся логин и пароль для каждого порта на устройстве. Как правило, имена индивидуальных конфигурационных файлов содержат в своем имени MAC аддресс соответствующего устройства.
Все Linksys девайсы по factory default настроены на получение IP адреса от DHCP сервера, и название файла с настройками 
init.cfg, (либо spa502G.cfg, spa504G.cfg и т.д. в зависимости от используемого устройства) который будет запрошен по протоколу TFTP. Следовательно, нам нужно:
  • настроить DHCP сервер, что бы он выдавал всем девайсам адрес TFTP сервера
  • Создать файл init.cfg в корневой директроии TFTP сервера, который содержит имена дополнительных файлов с настройками.

Установка и настройка софта

Устанавливаем TFTP и DHCP демоны
  emege dhcp atftp
либо для Centos sudo yum install dhcp-server tftp-server xinetd
Редактируем конфигурационный файлы dhcp демона /etc/dhcp/dhcpd.conf
ddns-update-style               ad-hoc;
log-facility                    daemon;
default-lease-time              21600;
max-lease-time                  21600;

subnet 10.7.30.0 netmask 255.255.255.0 {
  range 10.7.30.100 10.7.30.200;
}

group spa_adapters {
 option tftp-server-name "10.7.30.254";

 host spa-2002_1 {
  hardware ethernet 00:0E:08:FA:B6:10;
  fixed-address 10.7.8.127; }
}
Здесь мы указали DHCP серверу выдавать диапазон адресов 10.7.30.100 
- 10.7.30.200, адрес TFTP сервера 10.7.30.254 а так же одну статическую запись для устройства с MAC адресом 00:0E:08:FA:B6:10, хотя последнее вовсе вовсе не обязательно.
Теперь можно запустить DHCP сервер, включить одно из устройств и проверить что наши настройки работают:
/etc/init.d/dhcpd start
Терь настроим tftp сервер. В /etc/conf.d/atftp пропишем следующее:
emerge atftp
TFTPD_ROOT="/home/tftproot"
TFTPD_OPTS="--daemon --user nobody --group nobody --bind-address 10.7.30.254"
Заетм создадим корневой каталог для tftp демона:
voip1 ~ # mkdir /home/tftproot
voip1 ~ # chown nobody:nobody /home/tftproot
voip1 ~ # chmod 700 /home/tftproot/
И запустим его:
voip1 dhcp # /etc/init.d/atftp start

Для centos настроить xinetd и службу tftp


Создание провижининг файлов для сипур
/home/tftproot/init.cfg:
<flat-profile>

<Profile_Rule_B>/$PN.cfg</Profile_Rule_B>

</flat-profile>
Для Linksys PAP2 макрос $PN имеет значение PAP2T . Следовательно создаем файл/home/tftproot/PAP2T.cfg:
<flat-profile>

<Profile_Rule_C>/$PN_$MAC.cfg</Profile_Rule_C>

<Admin_Passwd>pdtytkrf</Admin_Passwd>
<User_Password>lkhkjhqkwjehrjkqwe</User_Password>
<Syslog_Server>10.7.30.254</Syslog_Server>
<Debug_Server>10.7.30.254</Debug_Server>
<Debug_Level>0</Debug_Level>

<Proxy_1_>10.7.30.254</Proxy_1_>
<Proxy_2_>10.7.30.254</Proxy_2_>
<Dial_Plan_1_>(*xx.|xx.)</Dial_Plan_1_>
<Dial_Plan_2_>(*xx.|xx.)</Dial_Plan_2_>

<Call_Waiting_Serv_1_>no</Call_Waiting_Serv_1_>
<Call_Waiting_Serv_2_>no</Call_Waiting_Serv_2_>
<Three_Way_Call_Serv_1_>no</Three_Way_Call_Serv_1_>
<Three_Way_Call_Serv_2_>no</Three_Way_Call_Serv_2_>
<VMWI_Serv_1_>no</VMWI_Serv_1_>
<VMWI_Serv_2_>no</VMWI_Serv_2_>
<MWI_Serv_1_>no</MWI_Serv_1_>
<MWI_Serv_2_>no</MWI_Serv_2_>

</flat-profile>
О том что означают эти параметры можно узнать на официальном сайте линксиса.

Добавление нового устройства

Для каждого нового устройства, которое мы хотим подключить к Asterisk'у процедура настройки одинаковая и достаточно незамысловатая.
  • Узнать МАС адрес девайса. Он как правило написан на самом устройстве, или его можно обнаружить в системных логах, сразу после подключения устройства в сеть.
  • Создать двух новых юзеров в веб-интерфейсе asterisk-gui
  • Создать файл PAP2T_$MAC.cfg:
    <flat-profile>
    
    <User_ID_1_></User_ID_1_>
    <Password_1_></Password_1_>
    
    <User_ID_2_></User_ID_2_>
    <Password_2_></Password_2_>
    
    </flat-profile>
    
И вписать в него логины и пароли. $MAC в имени файла заменить на МАС адрес, напр. 00:16:b6:91:86:b3. Лог получения конфига:
localhost asterisk # tcpdump \-n \-i eth0 port tftp
tcpdump: verbose output suppressed, use \-v or \-vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 68 bytes

18:51:03.236606 IP 192.168.118.10.27167 > 192.168.118.2.69:  36 RRQ "/init.cfg" octet timeout
18:51:03.277951 IP 192.168.118.10.63719 > 192.168.118.2.69:  37 RRQ "/PAP2T.cfg" octet timeout
18:51:03.334963 IP 192.168.118.10.53191 > 192.168.118.2.69:  55 RRQ "/PAP2T_00:1c:10:c3:3b:f9" [tftp]
  • Перезагрузить линксис. Это так же можно сделать удаленно с сервера при помощи команды curl:
    curl http://10.7.30.200/admin/reboot
    
    В последующем уже нужно будет добавить юзернейм и пароль, который был указан в PAP2T.cfg :
    curl --digest -u admin:pdtytkrf http://10.7.30.200/admin/reboot
    
Если все получилось нормально, то в консоли астериска можно будет наблюдать 2ух новоиспеченных юзеров:
    -- Registered SIP '131' at 10.7.30.198 port 5060 expires 3600
    -- Saved useragent "Linksys/PAP2-3.1.9(LSc)" for peer 131
    -- Registered SIP '132' at 10.7.30.198 port 5061 expires 3600
    -- Saved useragent "Linksys/PAP2-3.1.9(LSc)" for peer 132

Для обновления прошивки надо вызватьhttp://10.X.X.XXX/upgrade?tftp:/10.Y.Y.YYY/filename.bin

Еще можно добавить

&lt;Resync_Periodic ua=&#34;na&#34;&gt; 5
&lt;/Resync_Periodic&gt;
в общий профиль, чтобы каждые 5 сек обновлялся конфиг, тогда не надо телефон перегружать руками.

Comment by litnimax on Mon May 12 08:05:00 2008

Для телефона SPA962 название файлов следуюшие:
  • spa962.cfg (по умолчанию вместо init.cfg), ну а далее как описано в init.cfg.
  • SPA-962.cfg
  • SPA-962_XX:XX:XX:XX:XX