Thursday, May 9, 2013

Алло! Смольный! Настраиваем Call Manager Express


  В данной небольшой статье мы рассмотрим базовую конфигурацию Call Manager Express и работу его с двумя телефонами. Эта конфигурация будет использоваться как базовая для последующих экспериментов (подключение SIP-телефонов, взаимодействие с CUCM и Unity. планов много).
 В качестве СМЕ будем использовать роутер Cisco 3745 (вернее, его эмулятор на базе dynamips в GNS3. Дай бог здоровья людям, которые создали этот чудесный софт, из-за которого мы можем экономить кучу денег на железках).


 Для начала давайте произведем первоначальную настройку, необходимую, чтоб можно было ходить через ssh. Живем мы не в каменном веке, так что удаленный доступ это наше все. Материалов на эту тему много, но, все же, позволю себе повториться. Итак, список команд, необходимых для удаленного доступа:
Router(config)#
Router(config)#int fa0/0
Router(config-if)#ip address 192.168.10.20 255.255.255.0
Router(config-if)#no sh
Router(config-if)#
*Mar  1 00:10:50.235: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar  1 00:10:51.235: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
Router(config-if)#
Router(config-if)#exit
Router(config)#hostname CME
CME(config)#ip domain-?
domain-list  domain-lookup  domain-name
CME(config)#ip domain-name unix.nt
CME(config)#line vty 0 ?
 <1-1340>  Last Line number
 <cr>
CME(config)#line vty 0 1340
CME(config-line)#password 0 123
CME(config-line)#login
CME(config-line)#transport input ssh
CME(config-line)#exit
CME(config)#enable password 0 mysuperpass
CME(config)#aaa new-model
CME(config)#username andrey password 0 qwerty
CME(config)#crypto key generate ?
 rsa  Generate RSA keys
 <cr>
CME(config)#crypto key generate
The name for the keys will be: CME.unix.nt
Choose the size of the key modulus in the range of 360 to 2048 for your
 General Purpose Keys. Choosing a key modulus greater than 512 may take
 a few minutes.
How many bits in the modulus [512]: 1024
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
CME(config)#
*Mar  1 00:14:00.047: %SSH-5-ENABLED: SSH 1.99 has been enabled
вот они, заветные слова про то, что ssh включен.
Поехали!
...и тут мой ssh-клиент меня отправил в далекое сказал, что со мной не согласен, идти никуда не намерен и предложил мне связаться с моим системным администратором.
andrey@darkstar:~$ ssh 192.168.10.20
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
ca:a6:5a:d2:22:66:0c:1d:be:19:98:14:4e:4f:16:7c.
Please contact your system administrator.
Add correct host key in /home/andrey/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/andrey/.ssh/known_hosts:6
RSA host key for 192.168.10.20 has changed and you have requested strict checking.
Host key verification failed.
andrey@darkstar:~$ 
как видно, это оттого, что на этот хост он уже заходил и там был другой ключ. Приятно, что обо мне беспокоятся, но не сегодня.
rm .ssh/known_hosts 
и все работает
andrey@darkstar:~$ ssh 192.168.10.20
The authenticity of host ‘192.168.10.20 (192.168.10.20)’ can’t be established.
RSA key fingerprint is ca:a6:5a:d2:22:66:0c:1d:be:19:98:14:4e:4f:16:7c.
Are you sure you want to continue connecting (yes/no)? 
Теперь нам надо бы настроить DHCP сервер. В данном конкретном случае можно обойтись без него, так как у нас только софт-фоны и настройка сетевого адаптера ПК может быть произведена вручную, но по-хорошему настроить его надо. Тем более, что в следующей статье планируется применить настольный телефон. DHCP-сервер используется всеми телефонами при загрузке. Так же при настройке необходимо указать адрес TFTP-сервера, телефоны будут загружать оттуда прошивку и конфиг (предварительно их на сервер надо будет залить, конечно). Следующие команды интуитивно понятны, поэтому не будем на них задерживаться, нас еще ждут великие дела.
CME(config)#ip dhcp excluded-address ?
 A.B.C.D  Low IP address
CME(config)#ip dhcp excluded-address 192.168.10.0 ?
 A.B.C.D  High IP address
 <cr>
CME(config)#ip dhcp excluded-address 192.168.10.0 192.168.10.50
CME(config)#ip dhcp pool voice
CME(dhcp-config)#network 192.168.10.0 255.255.255.0
CME(dhcp-config)#default-router 192.168.10.20
CME(dhcp-config)#dns-server 192.168.10.1 ?
 Hostname or A.B.C.D  Server’s name or IP address
 <cr>
CME(dhcp-config)#dns-server 192.168.10.1 8.8.8.8
CME(dhcp-config)#option 150 ?          
 ascii     Data is an NVT ASCII string
 hex       Data is a hexadecimal string
 instance  Specify the option instance
 ip        Data is one or more IP addresses
CME(dhcp-config)#option 150 ip 192.168.10.20
CME(dhcp-config)#
option 150 - это как раз таки адрес TFTP сервера, который будет выдаваться по DHCP. Как видно, это адрес самого маршрутизатора. Пока мы не будем ничего размещать на TFTP-сервере.
Продолжим. Следующие настройки касаются исключительно телефонов, подключаемых по протоколу SCCP. В будущем подключим еще парочку телефонов по SIP.
Итак, включаем телефонию, вносим основные настройки:
CME(config)#telephony-service        
CME(config-telephony)#max-ephones 5
CME(config-telephony)#max-dn 12
CME(config-telephony)#ip source-address 192.168.10.20
 %Error deleting flash:SEPDEFAULT.cnf (No such file or directory)
%Error deleting flash:XMLDefault.cnf.xml (No such file or directory)
CME(config-telephony)#exit
Видно, что роутер выдает нам ошибки, но, тем не менее, настройку принимает.
Немного пояснений:
max-ephone – максимальное допустимое количество подключаемых телефонов.
max-dn – максимальное количество номеров. DN (directory number) – что-то на подобии линии, номера телефона (понятие линии тут применять несколько некорректно, dn – это скорее номер, но для общего понимания некоторую аналогию провести можно). Соответственно, к одному телефону можно привязать несколько номеров. Из этого следует, что значение max-dn не имеет смысла делать меньше, чем max-ephone, так как у нас просто не хватит номеров на все телефоны.
 Не стоит ставить значения больше, чем нам нужно. Под это количество заранее выделяется память и другие ресурсы, а их стоит беречь.

ip source-address – определяет адрес АТС, где телефон должен регистрироваться. В большинстве случаев (и в нашем тоже) это адрес интерфейса самого роутера. Полный возможный листинг команды несколько интереснее
ip source-address {ipv4_address | ipv6_address} [port port] [secondary {ipv4 address | ipv6 address} [rehome seconds]] [any-match | strict-match]
часто указывается еще порт 2000. В нашем случае все настройки по умолчанию, никаких велосипедов выдумывать не надо, указываем только IP.

Теперь создаем линию, телефон и связываем их между собой.
CME(config)#ephone-dn 10 dual-line
CME(config-ephone-dn)#number 201
CME(config-ephone-dn)#exit        
CME(config)#ephone 10
CME(config)#ephone ?  
<1-5>  Ethernet phone tag
CME(config)#ephone 1
CME(config-ephone)#username Jack_Daniels
CME(config-ephone)#type CIPC
CME(config-ephone)#mac-address 080027A678BA
               ^% Invalid input detected at ‘^’ marker.               
CME(config-ephone)#mac-address ?
 H.H.H  Mac address
 <cr>
CME(config-ephone)#mac-address 0800.27A6.78BA
CME(config-ephone)#button 1:10

Теперь с начала:
При создании ephone-dn (смотреть первую строку предыдущего листинга) можно указать несколько параметров: номер, который, особо ни на что не влияет (не путайте его с номером телефона) и тип линии. Рассмотрим возможные значения типа линии:
single-line – телефон в один момент времени может поддерживать только одну линию. Один разговор, один звонок. Если кто-то позвонит нам в момент разговора, то услышит сигнал «занято».
dual-line – телефон способен поддерживать двойную линию на этом номере. При разговоре возможен перевод звонка, прием другого звонка, ожидание вызова, конференц-связь и другие радости жизни.
octo-line – поддерживается много линий.  Может понадобиться разве что на телефоне секретаря, потребляет достаточно много ресурсов маршрутизатора.

number – тут мы указываем номер, который будет присвоен телефону. Команду можно расширить добавив secondary XXX, соответственно еще один номер может быть присвоен.

button 1:10 - привязывание ранее созданного ephone-dn к телефону. Точнее, к кнопке 1 телефона или к первой линии. Современные телефоны могут поддерживать больше одной линии. К каждой из них можно привязать отдельный ephone-dn и, соответственно, отдельные номера. Еще один интересный момент: назначение кнопки происходит через разделитель : (двоеточие), На самом деле разделителей есть несколько разных, и от них зависит режим работы данной линии. Но это тема уже новой небольшой статьи.

type CIPC - тип телефона. Можно указать 7960, 7905 и другие. В нашем случае это Cisco IP Communicator (CIPC). Указывать параметр на данном этапе не обязательно.

mac-address - мак-адрес телефона. Обратите внимание, какой формат его указания. Мак-адрес можно взять из настроек софт-фона. В разделе Device name символы после SEP и будут мак-адресом. В настройки можно войти через кнопку меню, которая находится возле кнопок развернуть-свернуть-закрыть.

Важный момент: там же, в настройках, необходимо указать TFTP сервер вручную, иначе софт-фон не зарегистрируется. (второй адрес сервера я указал на будущее, поле можно заполнить нулями)

После всего вышеперечисленного наша телефонная система должна чудесным образом заработать. Смотрим... телефон зарегистрировался.

а в это время на роутере:
CME#show ephone         
ephone-1 Mac:0800.27A6.78BA TCP socket:[1] activeLine:0 REGISTERED in SCCP ver 15 and Server in ver 5mediaActive:0 offhook:0 ringing:0 reset:0 reset_sent:0 paging 0 debug:0IP:192.168.10.51 1104 CIPC   keepalive 4 max_line 8button 1: dn 11 number 201 CH1   IDLE         CH2   IDLE         Username: Jack_Daniels 
CME#
Так и есть, телефон зарегистрировался и готов осуществлять звонки.
Обратите внимание, что к номеру 201 привязано два канала CH1 и CH2. Мы даже можем позвонить сами себе. Если бы в настройках ephone-dn было указано single-line, или ничего не указано, то канал был бы один CH1.
По аналогии добавим еще один телефон.
Смотрим , что на роутере после добавления еще одного телефона. Отключим первый сконфигурированный софт-фон для большей наглядности
CME#show ephone
ephone-1 Mac:0800.27A6.78BA TCP socket:[-1] activeLine:0 UNREGISTEREDmediaActive:0 offhook:0 ringing:0 reset:0 reset_sent:0 paging 0 debug:0IP:192.168.10.52 1042 CIPC   keepalive 5 max_line 8button 1: dn 10 number 201 CH1   DOWN         CH2   DOWN         Username: Jack_Daniels 

ephone-2 Mac:0011.5BC3.DB03 TCP socket:[1] activeLine:0 REGISTERED in SCCP ver 20 and Server in ver 5mediaActive:0 offhook:0 ringing:0 reset:0 reset_sent:0 paging 0 debug:0IP:192.168.10.2 1517 CIPC   keepalive 32 max_line 8button 1: dn 11 number 202 CH1   IDLE         CH2   IDLE         Username: Johny_Walker 
CME#
Как видно, первый телефон в состоянии UNREGISTERED так как он сейчас выключен. Второй вполне себе включен и очень хорошо себя чувствует.
Включаем второй и можем звонить с одного на другой. Приятных переговоров.

2 comments:

  1. Если уже был установлен Cisco IP Communicator и подключен на другой хост то чтоб переподключить его к новой циске НЕОБХОДИМО сгенерить заново конфигурационные файлы:

    conf t
    telephony-service
    create cnf-files
    end

    ReplyDelete
  2. Ну и если какие то проблемы наблюдаются с регистрацией телефонов то можно смотреть образаются ли они к циске вообще

    debug tftp events

    ReplyDelete