Архив метки: ip-phone

Cisco 7940: мелкие неприятные грабли при работе c SIP

Все ниже написанное касается прошивки P0S3-8-12-00.

Вроде все правильно, но не регистрируется.

Грабля номер раз

Формат записи адреса Proxy-сервера, на котором телефон будет регистрироваться: если указываем доменное имя — заключаем в кавычки, если ip-адрес — кавычки убираем!

Правильно:

# Proxy Server
proxy1_address: "sip.pro-voip.com.ua"

Правильно:

# Proxy Server
proxy1_address:  10.10.10.111

Неправильно:

# Proxy Server
proxy1_address:  "10.10.10.111"

Симптомы — у меня телефон так не смог зарегистрироваться, хотя посылал запросы REGISTER на первый взгляд с правильными заголовками и на правильный ip-адрес сервера…

Грабля номер два

Это NAT. Чтобы телефон зарегистрировался за NAT’ом мне потребовалось:

  1. Отредактировать SIPDefault.cnf:
# NAT/Firewall Traversal
nat_enable: 1;                 0-Disabled (default), 1-Enabled
nat_address: "";               WAN IP address of NAT box (dotted IP or DNS A record only)
voip_control_port: 5060;       UDP port used for SIP messages (default - 5060)
start_media_port: 16384;       Start RTP range for media (default - 16384)
end_media_port: 16391;         End RTP range for media (default - 32766)
nat_received_processing: 1;    0-Disabled (default), 1-Enabled

2. На роутере выполнить проброс UDP-портов 5060 (sip) и 16384-16391 (rtp)

3. На роутере отключить SIP ALG (не везде он есть). На джунипере это делается командой:

set security alg sip disable

Cisco 7940: Файл диалплана dialplan.xml

Поскольку логику обработки вызовов проще организовать на ip-pbx, файл dialplan.xml является необязательным, но может внести некоторые полезные дополнительные функции, такие как автоматический набор и вторичный тоновый сигнал.

Файл dialplan.xml имеет следующую стркутуру:

где:

pattern может содержать: . (точка) для замены любого символа, * (звездочка) для замены одного или более символов, , (запятая) для генерации вторичного сигнала.
sec – время в секундах, после которого начинается набор.
type – может быть IP или Phone. Тэг, добавляемый к номеру, регистронезависим.
xxx – номер, который будет набираться вместо введенного пользователем при совпадении с pattern.
route – адрес прокси-сервера SIP, на который перенаправляется звонок, значение может быть default, emergency или имя прокси-сервера.
tone – если не задан, используется вторичный гудок по умолчанию, если стоит запятая и затем имя гудка, то проигрывает этот звук; без запятой гудок игнорируется.

Также можно указать решетку (#) и звездочку (*) как набираемые символы. По умолчанию # означает «набрать сейчас», не дожидаясь совпадения с шаблоном из номерного плана. * по умолчанию означает * или . в шаблоне (wildcard-символ).

В качестве вторичного гудка можно использовать следующие значения (после запятой): Bellcore-Alerting, Bellcore-dr5, Bellcore-Reorder, Bellcore-Busy, Bellcore-dr6, Bellcore-Stutter, Bellcore-BusyVerify, Bellcore-Hold, CallWaiting-2, Bellcore-CallWaiting, Bellcore-Inside, CallWaiting-3, Bellcore-Confirmation, Bellcore-None, CallWaiting-4, Bellcore-dr1, Bellcore-Outside (default), Cisco-BeepBonk, Bellcore-dr2, Bellcore-Permanent, Cisco-Zip, Bellcore-dr3, Bellcore-Reminder, Cisco-ZipZip, Bellcore-dr4.

К каждому правилу можно добавить <!— комментарий —> в конце каждой строки.

TIMEOUT=»0″ при совпадении паттерна, указывает сразу же отправить вызов на обработку — так реализуется вышеупомянутый автоматический набор.

<TEMPLATE MATCH=»1..» TIMEOUT=»0″ /> <!— Local Extensions —>

Например, набираем номер 110, подпадаем под первое правило и сразу идет вызов без дополнительных действий с нашей стороны, не нужно нажимать Dial или #.

Для звонков в другие страны будем использовать правило с паттерном 9,00* — пользователь поднимает трубку, слышит длинный гудок, набирает 9 — слышыт другой длинный  гудок (вторичный тоновый сигнал, это нам дает запятая в паттерне), затем номер, начинающийся с двух нулей (в Украине это код выхода на международную линию). Таймаут здесь уже не ставим 0, поскольку не указано точное колличество цифер, которые будут набраны.

<TEMPLATE MATCH=»9,00*» TIMEOUT=»10″ />

Номер в канал передается польностью — вместе в первой цифрой 9 — учитывайте это в диалплане на ip-pbx.

Cisco 7940: Обновление прошивки. Из SCCP в SIP

Особенности Cisco 7940

Питание: работает через POE. Если хотите отдельное питание на 220V, нужно докупить блок питания и шнур питания дополнительно.
Протокол: заточен под работу с Cisco Call Manager, дефолтная прошивка идет с SCCP протоколом, если нужен SIP — нужно заливать прошивку с SIP. Также есть прошивки с MGCP протоколом, если кто-то его использует.
Апгрейд и конфигурирование: производится через tftp — в корень tftp-сервера заливаем файл прошивки и конфигурационные файлы, а циске сообщаем адрес этого tftp-сервера

 

Получение файлов

Для начала файлы SIP-прошивки нужно получить. На сайте cisco.com они есть, но они залочены для обычного зарегистрированного пользователя, нужно либо иметь контракты на обслуживание компании, или связывать аккаунт с серийными номерами ваших цисковских продуктов, в общем нужно показать, что вы у циски что-либо приобрели и имеете право на поддержку.

 

Подготовка телефона

Обновление прошивки производится посредством TFTP-сервера. Сам циско-фон нужно сбросить, настроить сетевые параметры (ip/маска/шлюз) и указать адрес TFTP-сервера. Это можно сделать с помощью DHCP-сервера или прописать вручную через меню телефона.

 

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

Сначала разблокировать конфиг:

Settings — > Unlock config
пароль cisco (это пароль по умолчанию, но его могли поменять)

Сброс:

Settings -> Network Setup -> Erase Configuration:YES

уйдет в ребут.

После этого телефон пробует получить сетевые настройки и адрес TFTP от DHCP-сервера. Если DHCP-сервер не используется, настраиваем вручную.

 

Настройка DHCP-сервера

Пример настройки isc-dhcp на FreeBSD

/usr/local/etc/dhcpd.conf

# phones
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.101 192.168.1.149;
option routers 192.168.1.1;
option tftp-server-name «192.168.1.2»;
}

Значение опции tftp-server-name указываем в кавычках (потому что это строка), иначе вернет ошибку:

/usr/local/etc/dhcpd.conf line 29: expecting string.
option tftp-server-name 192.

 

Ручная настройка параметров телефона

Используем, если нет DHCP-сервера. Сначала снова разблокируем конфиг:

Settings — > Unlock config

Отключаем DHCP:

Settings — > Network Setup ->DHCP Enabled: NO

затем можно редактировать настройки ip/mask/gw и адрес tftp-сервера

 

Файлы прошивки и конфигурационные файлы на TFTP

В директории tftp должны оказаться следующие файлы:

  • OS79XX.TXT (необязательно с 8-й версии)
  • XMLDefault.cnf.xml (если есть SEP<mac>.cnf.xml, вроде как необязательно его создавать)
  • SEP<mac>.cnf.xml
  • P0S3-8-12-00.loads
  • P0S3-8-12-00.sb2
  • P003-8-12-00.bin
  • P003-8-12-00.sbn
  • SIPDefault.cnf
  • SIP<mac>.cnf
  • dialplan.xml (необязательно)
  • RINGLIST.DAT (необязательно)

 

OS79XX.TXT

это файл Dual-boot, в нем указывается, какую версию прошивки загрузить (имеется в виду не релиз, а выбор протокола — SCCP, SIP или MGCP). С 8-й версии прошивки он уже не нужен.

Имя файла OS79XX.TXT чувствительно к регистру и может содержать только имя загружаемого файла без расширения .bin. К примеру, при загрузке ПО SIP версии 2.3 в его имени должна присутствовать только строка P0S30203. Если нужно загрузить ПО версий 3.0 и позднее, имя файла должно находиться в формате P0S3-xx-y-zz. К примеру, при загрузке ПО SIP версии 7.4 в имени файла OS79XX.TXT должна присутствовать строка P0S3-07-4-00.
(c) cisco.com

 

XMLDefault.cnf.xml

файл для определения версии прошивки, которую нужно загрузить

 

SEP<mac>.cnf.xml

файл для определения версии прошивки, которую нужно загрузить. Если версия, указанная в этом файле отличается от версии на флеше телефона, телефон загружает новую прошивку.

 

SIPDefault.cnf

конфигурационный файл для SIP, в нем указываются общие настройки

 

SIP<mac>.cnf

конфигурационный файл для SIP, в котором указываются настройки, специфичные для конкретного телефона. Параметры, указанные здесь, перезаписывают параметры, указанные в SIPDefault.xml. Здесь можно указывать не только логин/екстеншен/пароль для подключения, а любые значения, которые присутствуют в SIPDefault.

 

dialplan.xml (необязательно)

файл диалплана.

 

RINGLIST.DAT (необязательно)

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

 

Ну и необходимые бинарники, без них «кина не будет»:

P0S3-8-12-00.loads
P0S3-8-12-00.sb2
P003-8-12-00.bin
P003-8-12-00.sbn

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

 

Полезные ссылки

http://www.voip-info.org/wiki/view/Asterisk+phone+cisco+79xx

Cisco 7940: Конфигурацианные файлы SIPDefault.cnf и SIPXXXXYYYYZZZZ.cnf

tftp-сервер нам жизненно необходим только при обновлении прошивки. Для конфигурирования телефонов tftp — удобная, но не обязательная вещь.

Т.е. можно единожды настроить телефон вручную или через tftp и убрать tftp (или убрать cnf-файлы с tftp, или закрыть доступ к tftp), и перенести телефон в сеть к пользователю, где tftp не будет.

Когда телефон включается, он сначала идет на tftp-сервер за конфигурационными файлами (если они есть), а если не находит, то загружает параметры, сохраненные локально в его флеш-памяти.

С tftp телефон загружает  следующие файлы:
сначала:
SIPDefault.cnf — дефолтный конфигурационный файл
затем:
SIPXXXXYYYYZZZZ.cnf — phone-specific конфигурационный файл — для конкретного телефона с MAC-адресом SIPXXXXYYYYZZZZ. MAC-адрес записывается в верхнем регистре, расширение .cnf — в нижнем.

 

Параметры, указанные в SIPXXXXYYYYZZZZ.cnf, перезаписывают параметры, указанные в SIPDefault.xml. В SIPXXXXYYYYZZZZ.cnf можно указывать не только логин/екстеншен/пароль для подключения, а любые значения, которые присутствуют в SIPDefault.cnf.

 

Правила записи переменных

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

variable-name : value ; optional comments

  • одна переменная — одно значение;
  • разделяем переменные и значения двоеточием;
  • на одну строку одна пара переменная:значение, пару не разрываем (не переносим «значение» в следующую строку);
  • можно ставить пробелы перед/после переменных и значений. Если нужен пробел в значении, заключаем значение в кавычки одинарные или двойные. Открывающие и закрывающие кавычки должны быть одинаковыми — либо одинарными, либо двойными;
  • для комментариев используются ; или #
  • строки могут быть пустыми, или с комментариями;
  • названия переменных — регистроНЕзависимые.

Примеры файлов конфигурации для настройки SIP-протокола на телефонах Cisco 7940 (взяты с сайта cisco):

SIPDefault.cnf — файл с общими параметрами SIP, применяемый ко всем телефонам (скачать)
SIPXXXXYYYYZZZZ.cnf — файл в настройками конкретного телефона (скачать)

 

SIPDefault.cnf


 

SIPXXXXYYYYZZZZ.cnf


 

 

Cisco SPA: Hotline

Hotline — это быстрый вызов определенной линии на определенном устройстве. Как это работает? Мы только снимаем трубку на своем телефоне, как тут же без дополнительных действий с нашей стороны вызывается нужный номер или линия.

Чтобы «включить» режим Hotline на cisco spa, нужно отредактировать Dial Plan (вкладка Voice -> Line n -> Dial Plan) до следующего вида:

S0<:userid@ip_address: port>

  • S0 — устанавливаем Interdigit Short Timer (интервал между набираемыми цифрами) равным нулю;
  • userid@ip_address: port — идентификатор линии, которая должна в итоге зазвонить. Ну здесь, думаю, понятно, что userid — это номер (или extention), ip_address:port — ip-адрес и sip-порт удаленного устройства.

Помимо Dial Plan’а нужно проверить/изменить еще некоторые параметры линии (вкладка Voice -> Linen ), описаны ниже.

Для вызывающей линии:

  • Proxy and Registration -> Make Call Without Reg:  yes
    — разрешить совершать вызовы без регистрации

Для принимающей линии:

  • SIP Settings -> Restrict Source IP: no
    — Restrict Source IP позволяет принимать вызовы только с ip-адреса, указаного в Proxy and Registration -> Proxy. Для Hotline’а нам этого не нужно, поэтому отключаем. В принципе, можно установить Restrict Source IP: yes и в разделе Proxy указать ip-адрес удаленного устройства, с которым строим Hotline.
  • Proxy and Registration -> Ans Call Without Reg:  yes
    — разрешить принимать вызовы без регистрации.

Если нам нужно, чтобы Hotline работал в обе стороны (поднял line1 — зазвонила line2; поднял line2 — зазвонила line1), соответственно, на каждой из линий включаем аж все три 🙂 параметра:

  • SIP Settings -> Restrict Source IP: no
  • Proxy and Registration -> Make Call Without Reg:  yes
  • Proxy and Registration -> Ans Call Without Reg:  yes

Хочу заметить, что параметр Call Feature Settings -> Enable IP Dialing никак не влияет на работу Hotline.

Ниже парочка примеров подключений…


 

Пример 1

Cisco-SPA-Hotline-Diagram1

Описание:

  • spa 112 включен в локальную сеть, его ip-адрес — 192.168.13.26;
  • к FXS-портам подключены два обычных телефона;
  • в сети нет сервера регистрации или sip-proxy-сервера.

Задача: Поднимаем трубку на первой линии (line1), сразу звонит вторая (line2)  и наоборот.

Решение:

Настройка Line1
SIP Port: 5060
Dial Plan: S0<:@192.168.13.26:5061>

Настройка Line2
SIP Port: 5061
Dial Plan: S0<:@192.168.13.26:5060>

Здесь нужно обратить внимание, что из начального шаблона был убран userid. Это потому что никакого userid на линиях в данный момент нет. Если установить, например, на Line1 User ID: 11, а на Line2 — User ID: 22, то диалпланы должны будут выглядеть вот так:

Настройка Line1
SIP Port: 5060
Dial Plan: S0<:22@192.168.13.26:5061>

Настройка Line2
SIP Port: 5061
Dial Plan: S0<:11@192.168.13.26:5060>

 


 

Пример 2

Cisco-SPA-Hotline-Diagram2

Описание:

  • spa 112 (ip 192.168.13.26) и spa 303 (ip 192.168.13.26) включены в локальную сеть;
  • к первому FXS-порту spa 112 подключен обычный телефон;
  • cisco spa 303 — это ip-телефон с тремя независимыми линиями; для Hotline здесь я использую line3 с внутренним номером 66;
  • в сети нет сервера регистрации или sip-proxy-сервера.

Задача: Поднимаем трубку на первой линии spa 112 (extension 11), сразу звонит третья линия (extension 66) на spa 303.

Настройка spa 112 Line1
SIP Port: 5060
Dial Plan: S0<:66@192.168.13.25:5062>

Настройка spa 303 Line3
SIP Port: 5062
Dial Plan: S0<:11@192.168.13.26:5060>

 


 

Пример 3

Cisco-SPA-Hotline-Diagram3

 

Описание:

  • linksys spa 3102 (ip 175.1.1.100) и cisco spa 303 (ip 98.1.1.100) подключены к интернету;
  • к FXO-порту linksys’а подключена абонентская линия, приходящая с городской АТС;

Задача: Продление абонентской линии с помощью АТА и IP-телефона через сеть с коммутацией пакетов (в данном случае Internet)

Думаю, наиболее востребован режим Hotline именно в данных схемах подключения.

Настройка linksys spa 3102 -> PSTN Line

Необходимый минимум для работы в направлении PSTN -> VOIP:

PSTN-To-VoIP Gateway Setup
PSTN-To-VoIP Gateway Enable: yes
PSTN Caller Default DP: 1

Dial Plans
Dial Plan 1: S0<:66@98.1.1.100:5062>

FXO Timer Values (sec)
PSTN Dialing Delay: 0

Необходимый минимум для работы в направлении VOIP -> PSTN:

VoIP-To-PSTN Gateway Setup
VoIP-To-PSTN Gateway Enable: yes
VoIP Caller Default DP: 2

Dial Plans
Dial Plan 2: (xx.)

Настройка linksys spa 303 -> Ext 3

Subscriber Information
User ID: 66

Dial Plan
Dial Plan: S0<:@175.1.1.100:5061>

Proxy and Registration
Make Call Without Reg: yes
Ans Call Without Reg: yes

 

Avaya 4610SW IP: перевод в SIP

Avaya4610SW
Что нужно?
  • tftp-сервер
  • файлы прошивки
  • txt-файл настроек
Где взять?

TFTP-сервер у меня уже поднят на Debian’e, запросы слушает openbsd-inetd. Директория, где будут храниться файлы для перепрошивки, — /srv/tftp.
Остальные 2 пункта — на странице загрузок https://support.avaya.com/downloads/ в разделе  «4600 Series IP Telephones».
Чтобы избежать лишних телодвижений, я все скачиваю сразу в директорию tftp-сервера.

Подготовка файлов

Качаем файл настроек:

root@fs:/srv/tftp# wget ftp://ftp.avaya.com/incoming/Up1cku9/tsoweb/46xxsettings/06242014/46xxsettings.txt

Заходим в «Avaya 4600 IP Telephone Release 041511 (Discontinued)», здесь качаем и распаковываем файлы прошивки:

root@fs:/srv/tftp# wget ftp://ftp.avaya.com/incoming/Up1cku9/tsoweb/ip_telephone/041511/46xx-IPT-H323-R2_9_2_N-012712-en.zip
root@fs:/srv/tftp# unzip 46xx-IPT-H323-R2_9_2_N-012712-en.zip

Здесь же можно скачать файл readme, в котором рассказывается, какой бинарник за что отвечает.

Начальная настройка телефона

Включаем телефон в локальную сеть, появляется сообщение press * for Setup жмём ту самую звёздочку и вводим необходимые параметры, которые запросит телефон. После каждого введенного параметра нажимаем решетку # — это подтверждение.

  • IP address, Mask и Router (он же default gateway) — настройка сетевого интерфейса телефона (телефон должен быть в локальной сети с tftp-сервером);
  • CallSrv и Port — ip-адрес и порт sip-сервера;
  • FileSrv — ip-адрес tftp-сервера;
  • 802.1q — настройка vlan’а, у меня Off, так как телефон включен в порт, который настроен в режиме access (т.е. отдает нетегированный трафик).

После этого телефон подключится к tftp, загрузит новую прошивку и настройки и несколько раз перезагрузится.

Собственно, перевод в SIP

a) Если видим на экране Registering:

Нажимаем поочередно клавиши Hold (красная) 7 4 4 #
— эта комбинация позволяет выбрать протокол — SIG, H.323 или SIP.

С помощью клавиши * выбираем SIP, затем нажимаем # — подтверждение выбора. После этого еще раз нажимаем # сохраняя настройки — телефон снова перезагрузится, подтягивая с tftp прошивку с SIP’ом.

б) Если видим на экране Discover:

Сначала нажимаем * (телефон перейдет в режим настройки), пропускаем все шаги клавишей #, пока не увидим на экране Enter Commands

Вводим команду:

поочередно Hold (красная) 7 4 4 #
— выбираем протокол…

После загрузки телефон спросит логин и пароль.
Пароль должен состоять только из цифр! (максимум 8 цифр).