О боже, тем кто использует что-то облачное, в частности данная компания где я работают по каким-то причинам до меня зачем-то в качестве телефонии выбрала этот Гравител. И с тех самых порт – работа телефонии – это сущая головная боль. Я уже писал об этом в опубликованных заметках дабы служба поддержки Гравител наконец-таки обратила внимание, что не все так хорошо. Но увы этого пока не происходит. Сейчас мы ведем переписку с ихними инженерами: пусть будут имена: Даниил Николаев, Ильшат Лукманов и другие. Которые как мне кажется уже не знают, что рекомендовать: то отмените все кодеки оставьте только PCMU на всех базовых станциях (у меня это Gigaset A540 IP и Yealink T21P E2) хотя по ихним настройкам из Wiki все настроено, все порты из VLAN 10 где находятся все телефонные аппараты доступ разрешен.

Теперь просят включить настройки STUN, я их включаю, но нет связи между телефонами где он включен. Порт 3478 открыт. Но вот из всего этого, мое терпение лопнуло, когда я менял настройки кодеков на более чем 50 аппаратах. Я решил, что во что бы то ни стало нужно разобраться как настраивается Auto Provisioned пока для Yealink и я это сделал.

Шаг №1: Сегодня я покажу, как я в компании настроил Auto Provision для телефонных аппаратов Yealink T21P E2. Для чего это, просто здесь у каждого сотрудника стоит данный аппарат, а уже через него подключен компьютер. Сделано это для разграничения по VLAN

  • Порт Internet – это VLAN 10 (тегированный трафик)
  • Порт PC – это VLAN 4 (нетегированный трафик)

В составлении конфигурационных файлов для Auto Provision использовался мануал: mcgrp.ru-Vxr85DxE.pdf

В наличии:

  • Телефонный аппарат: Yealink T21P E2

Формат имени конфигурационного файла общих настроек для каждой модели свой.

Phone Model Common CFG File
Yealink T21P E2 (with PoE) y000000000052.cfg
Yealink T21 E2 (no PoE) y000000000052.cfg
Yealink SIP-T28P y000000000000.cfg
Yealink SIP-T26P y000000000004.cfg
Yealink SIP-T22P y000000000005.cfg
Yealink SIP-T21P y000000000034.cfg
Yealink SIP-T20P y000000000007.cfg
Yealink SIP-T19P y000000000031.cfg
Yealink SIP-T19P E2 y000000000053.cfg
Yealink SIP-T40P y000000000054.cfg
Yealink SIP-T46G y000000000028.cfg
Yealink SIP-T42G y000000000029.cfg
Yealink SIP-T41P y000000000036.cfg

Шаг №2: В офисной локальной сети поднимаем или задействуем виртуальную/физическую систему под управлением Ubuntu 18.04 Server и поднимаем на ней сервис tftpd-hpa

ekzorchik@srv-ftp:~$ sudo mkdir /media/pxeboot

ekzorchik@srv-ftp:~$ sudo chmod -R 777 /media/pxeboot/

ekzorchik@srv-ftp:~$ sudo chown -R nobody:nogroup /media/pxeboot/

ekzorchik@srv-ftp:~$ sudo cp /etc/default/tftpd-hpa /etc/default/tftpd-hpa.backup

ekzorchik@srv-ftp:~$ sudo nano /etc/default/tftpd-hpa

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/media/pxeboot"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="--secure --create --verbose"

На заметку:

  • “--create” – включаем запись
  • “--verbose” – включаем логирование
  • “--secure” – Разрешить загрузку файлов на TFTP-сервер
ekzorchik@srv-ftp:~$ sudo service tftpd-hpa restart && sudo service tftpd-hpa status | head -n 5

Шаг №3: В каталог /media/pxeboot нужно положить следующие файлы

Где

  • 805ec07aa38d.cfg – MAC-адрес телефонного аппарата
  • T21P_E2-52.84.14.5.rom – файл прошивки для данного телефонного аппарата
  • y000000000052.cfg – общий конфигурационный файл для всех телефонных аппаратов серии Yealink T21P E2

На заметку: либо y000000000000.boot либо 805ec07aa38d.boot, но я использую первое.

ekzorchik@srv-ftp:~$ sudo nano /media/pxeboot/y000000000000.boot

#!version:1.0.0.1

## The header above must appear as-is in the first line

include:config "y000000000052.cfg"

include:config "$mac.cfg"

overwrite_mode = {$yealink_overwrite_mode}

ekzorchik@srv-ftp:~$ sudo nano /media/pxeboot/805ec07aa38d.cfg

#!version:1.0.0.1

### This file is the exported MAC-all.cfg.

account.1.auth_name = <login>

account.1.codec.pcmu.priority = 1

account.1.codec.pcma.enable = 0

account.1.codec.pcma.priority = 0

account.1.codec.g729.enable = 0

account.1.codec.g729.priority = 0

account.1.codec.g722.enable = 0

account.1.codec.g722.priority = 0

account.1.enable = 1

account.1.label = <number>

account.1.sip_server.1.address = firma.gravitel.ru

account.1.user_name = <login>

account.1.password = <password>

linekey.1.label = Перехват

linekey.1.type = 13

linekey.1.value = *63

sip.listen_port = 5070

### Static Configuration ###

static.network.dhcp_host_name = SIP-T21P_<number>

ekzorchik@srv-ftp:~$

ekzorchik@srv-ftp:~$ sudo nano /media/pxeboot/y000000000052.cfg

#!version:1.0.0.1

#firmware.url = tftp://192.168.9.123/T21P_E2-52.84.14.5.rom

# Включить Auto Provisioning:

auto_provision.mode = 1

# Адрес сервера Auto Provisioning (tftp)

auto_provision.server.url = 192.168.9.123

network.internet_port.type = 0

network.bridge_mode = 1

network.web_server_type = 3

#Устанавливаем свой пароль на вход через Web и телефон

security.user_name.admin = admin

security.user_password = admin:712mbddr@

#Выключить появление логотипа Yealink на телефоне

phone_setting.lcd_logo.mode = 0

#Подсветка

phone_setting.backlight_time = 1800

#https://IP&DNS - user&pass - Account - Rasshirennie - Session Expires (default: 1800)

account.1.session_timer.expires = 180

# Укажем NTP сервер:

local_time.ntp_server1 = polygon.com

local_time.interval = 60

# Назначим Time Offset (Московское время)

local_time.time_zone = +3

local_time.time_zone_name = Russia(Moscow)

lang.wui = Russian

lang.gui = Russian

network.port.max_rtpport = 30000

network.port.min_rtpport = 10000

network.vlan.internet_port_enable = 1

network.vlan.internet_port_vid = 10

network.vlan.dhcp_enable = 1

ekzorchik@srv-ftp:~$ sudo chown -R nobody:nogroup /media/pxeboot/

Шаг №4: Далее в настройках DHCP сервиса настроить запись, у меня DHCP сервис развернут на домен контроллерах под управлением Windows Server 2012 R2 Std

On srv-dc1

Win + X – Control Panel – Administrative Tools – DHCP и в пуле VLAN 10 (Scope [192.168.10.0] VLAN 10) – Scope Options – Configure Options – добавляю запись

  • 066 Boot Server Host Name: отмечаю галочкой
  • String value: прописываю IP&DNS Ubuntu 18.04 Server где развернут сервис tftpd-hpa

Шаг №5: Теперь перезагружаю телефонный аппарат и настройки применяются, кстати для отладки что аппарат запрашивает можно наблюдать в логах вот таким вот образом:

ekzorchik@srv-ftp:~$ sudo tail -f /var/log/syslog

Jun 18 16:11:35 srv-ftp in.tftpd[26431]: RRQ from 192.168.10.148 filename 805ec07aa38d.boot

Jun 18 16:11:35 srv-ftp in.tftpd[26433]: RRQ from 192.168.10.148 filename y000000000000.boot

Jun 18 16:11:36 srv-ftp in.tftpd[26434]: RRQ from 192.168.10.148 filename y000000000052.cfg

Jun 18 16:11:36 srv-ftp in.tftpd[26435]: RRQ from 192.168.10.148 filename 805ec07aa38d.cfg

Шаг №6: Проверяю, что теперь на телефонный аппарат могу зайти по IP адрес из VLAN 10, а для авторизации логин admin, а пароль уже не дефолтный admin, а тот который я задал в глобальном конфигурационном файле y000000000052.cfg. Все успешно.

Шаг №7: А если телефонный аппарат без поддержки PoE: Yealink T21 E2 (5B – 0.6A)

  • MAC Address: 80:5E:C0:A1:5F:94

Включил его и увидел в логах на ftp, какие файлы он запрашивает

Jun 18 13:24:31 srv-ftp in.tftpd[25985]: RRQ from 192.168.10.6 filename 805ec0a15f94.boot

Jun 18 13:24:31 srv-ftp in.tftpd[25986]: RRQ from 192.168.10.6 filename y000000000000.boot

Jun 18 13:24:31 srv-ftp in.tftpd[25987]: RRQ from 192.168.10.6 filename y000000000052.cfg

Jun 18 13:24:31 srv-ftp in.tftpd[25988]: RRQ from 192.168.10.6 filename 805ec0a15f94.cfg

ekzorchik@srv-ftp:~$ sudo nano /media/pxeboot/805ec0a15f94.cfg

#!version:1.0.0.1

### This file is the exported MAC-all.cfg.

account.1.auth_name = <sip_number>

account.1.codec.pcmu.priority = 1

account.1.codec.pcma.enable = 0

account.1.codec.pcma.priority = 0

account.1.codec.g729.enable = 0

account.1.codec.g729.priority = 0

account.1.codec.g722.enable = 0

account.1.codec.g722.priority = 0

account.1.enable = 1

account.1.label = <number>

account.1.sip_server.1.address = firma.gravitel.ru

account.1.user_name = <login>

account.1.password = <password>

linekey.1.label = Перехват

linekey.1.type = 13

linekey.1.value = *63

sip.listen_port = 5070

### Static Configuration ###

static.network.dhcp_host_name = SIP-T21_<number>

После выключаю/включаю телефон или же выключаю/включаю интерфейс на Mikrotik и настройки применяются к телефонному аппарату. И да они применились. Звонок с данного аппарата и на данным аппарат проходит, слышимость отличная. Ну по крайней мере в рамках работы облачной телефонии от Гравител.

Итого в моем случае мне нужно вести таблицу Excel дабы знать какие телефоны участвуют.

  • Mac адрес устройства
  • Его внутренний номер в облачной телефонии от Гравител
  • Активирована ли настройка Auto Provisioned

На заметку: А потом у меня случился казус с аппаратом Yealink T21 E2 он перестал видеть настройки Auto Provisioned, хоть и пишет на телефоне “Отправка Provisioned запроса”, но настройки не получает. В логах на /var/log/syslog ничего нет, в аудите фаервола тоже ничего нет. Прямо мистика какая. Подключаю аппарат Yealink T21P E2 и он сразу же получает настройки по сети. Для подключения использую тот же самый порт на Mikrotik(е). Зашел на сам аппарат через браузер: Настройки – Autoprovision – указал IP (Сервер настроек: 192.168.9.123) и нажал обновить (Обновить настройки сейчас) и после в логах на tftp увидел запрашиваемые данные:

Jun 18 17:37:45 srv-ftp in.tftpd[26675]: RRQ from 192.168.10.187 filename 805ec0a15f94.boot

Jun 18 17:37:45 srv-ftp in.tftpd[26677]: RRQ from 192.168.10.187 filename y000000000000.boot

Jun 18 17:37:45 srv-ftp in.tftpd[26678]: RRQ from 192.168.10.187 filename y000000000052.cfg

Jun 18 17:37:45 srv-ftp in.tftpd[26679]: RRQ from 192.168.10.187 filename 805ec0a15f94.cfg

Jun 18 17:37:48 srv-ftp in.tftpd[26680]: RRQ from 192.168.10.187 filename T21P_E2-52.84.14.5.rom

И настройки с конфигурационного файла поднятулись. Видимо что-то с DNS записью 66, а она на DNS в винде прописана или работой DNS – это мелочи.

Итого я для себя разобрал, как настраивается Auto Provision для телефонных аппаратов Yealink. На этом у меня пока все, с уважением автор блога Олло Александр aka ekzorchik.