Приветствую!

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

Хорошей, подробной и ясной инструкции я не нашел. Пришлось читать много мануалов производителя для разных моделей и, искать недостающие параметры в телефонах самому.

Если у вас 2-5 телефонных аппаратов, вам вряд-ли эта инструкция понадобится; быстрее вручную настроить телефонные аппараты. Если телефонов больше - читаем дальше :-)

А дочитавшим до конца будет бонус :-)

Купили большое количество 50-100+ IP телефонов фирмы Grandstream, в каждый надо внести очень много одинаковых настроек; от настроек языка и часового пояса до VoiceVLAN и обновления прошивок.

У нас есть два варианта автоматизации: 1. Зайти в каждый телефон, указать сервер конфигураций (web/tftp) и указать телефону скачивать настройки, а затем перезагрузить телефон. Телефон скачает конфигурацию, прошивку и телефонную книгу. Проделывать это надо с каждым телефонным аппаратом.

  1. Делаем красиво: Передаем средствами DHCP сервера опцию 66 с адресом сервера конфигураций (tftp) и телефоны сами все сделают.

Если выбрали первый вариант, листаем ниже к разделу Основной конфигурационный файл.

Если выбрали второй вариант, то читаем дальше. Открываем настройки DHCP сервера (у меня это DC), открываем Политики, Создаем новую политику, указываем условия

Быстрое гугление говорит нам о двух масках мак адресов: C074AD и 000B82. Добавляем их ставя галочку "Добавить подстановочный знак в конце. Переходим во вкладку Параметры, листаем до опции 66, активируем её и указываем адрес TFTP сервера

Эта опция должна находиться в области основного vlan (чаще 1). Т.е. в той области, где телефон/компьютер получает адрес после включения. VoiceVLAN укажем позже.

Чего мы этим добились: Телефон при включении находясь в vlan1 получает по DHCP Options 66 с адресом TFTP сервера где телефон ищет несколько файлов: cfg.xml - основной файл конфигурации который забирают все телефоны, cfggxp2140.xml - файл конфигурации для модели gxp2140 (1630 будет искать файл cfggxp1630.xml, 2170 будет искать файл cfggxp2170.xml), cfgc074ad5*****.xml - индивидуальный файл конфигурации для отдельного mac адреса.

Важно: При получении телефоном Grandstream Опции 66 по DHCP, телефон не забирает оттуда Телефонную книгу. Исключительно конфигурацию и прошивку. По этой причине в VoiceVLAN не должно быть Опции 66 на DHCP сервере.

Сначала я пробовал всё загружать через TFTP не используя WEB сервер, но столкнулся с тем что, прошивка не всегда стабильно загружалась в телефоны с первого раза. И это находясь на одном коммутаторе в соседнем помещении. При попытке скачать прошивку, в логах TFTP часто пишет ошибки. А если вы планируете администрировать телефоны на удаленных объектах, передавать прошивки по сети по udp не по-взрослому :-).

TFTP и WEB настраиваем на разные каталоги. У меня сервером TFTP и WEB будет NAS Qnap на котором активировал пару галочек. Как настроить вам на сервере/виртуалке - на хабре статей хватает. Здесь поговорим о телефонах.

Готовим конфигурационный файл для TFTP сервера cfg.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<gs_provision version="1">
<config version="1">
<!-- Уводим телефоны в VoiceVLAN -->
<P51>8</P51>
<!-- Обновление ПО и провижининг 0(Всегда проверять) -->
<P238>0</P238>
<!-- Автоматическое обновление 0(Нет)/1(Да, через заданные минуты)/2(Да, проверять каждый день) -->
<P194>2</P194>
<!-- Путь к серверу обновления ПО -->
<P192>gs.example.ru:59118</P192>
<!-- Прошивка. Имя пользователя -->
<P6768>sip</P6768>
<!-- Прошивка. Пароль сервера -->
<P6769>11111111</P6769>
<!-- Прошивка Обновление через 0(TFTP)/1(HTTP)/2(HTTPS) -->
<P6767>2</P6767>
<!-- Загрузить и обработать все файлы конфигурации -->
<P8467>1</P8467>
<!-- Путь к серверу конфигурации -->
<P237>gs.example.ru:59118</P237>
<!-- Конфиг. Имя пользователя -->
<P1360>sip</P1360>
<!-- Конфиг. Пароль сервера -->
<P1361>11111111</P1361>
<!-- Конфиг. Обновление через 0(TFTP)/1(HTTP)/2(HTTPS) -->
<P212>2</P212>
</config>
</gs_provision>

Телефонные аппараты получив по DHCP адрес сервера TFTP загружают конфигурацию где: получают настройку VoiceVLAN, получают адрес сервера с прошивками (WEB tcp) и адрес откуда им в будущем брать конфигурацию.
Заметил одну особенность: Телефоны 1630 получая новый vlan автоматически перезагружаются, а обновляют прошивку если есть свежая уже после перезагрузки. Телефоны серии 2100 автоматически перезагрузятся только после обновления прошивки если обнаружат на сервере свежую. Если свежей прошивки не окажется, телефоны серии 2100 скачают конфигурацию с новым vlan, но останутся на старом пока телефон не перезагрузить вручную через веб морду или по питанию.

Основной конфигурационный файл cfg.xml в каталоге web сервера:

<?xml version="1.0" encoding="UTF-8" ?>
<gs_provision version="1">
<config version="1">
<!-- Пароль пользователя admin -->
<P2>11111111</P2>
<!-- SIP Регистрация Аккаунт1. 0(Нет)/1(Нет) -->
<P31>1</P31>
<!-- Истечение регистрации (Указывает частоту (в минутах) обновления телефоном своей регистрации у указанного регистратора. Максимальное значение - 64800 минут (примерно 45 дней)) -->
<P32>2</P32>
<!-- Номер доступа голосовой почты -->
<P33>*98</P33>
<!-- SIP сервер Аккаунт1 -->
<P47>sip.example.ru</P47>
<!-- Отображение аккаунта 0(Имя пользователя)/1(Идентификатор пользователя) -->
<P2380>1</P2380>
<!-- Часовой пояс -->
<P64>TZS-5</P64>
<!-- NTP сервер -->
<P30>0.pool.ntp.org</P30>
<!-- Интервал обновления времени -->
<P5005>360</P5005>
<!-- Формат отобржения даты  0(гггг-мм-дд)/1(мм-дд-гггг)/2(дд-мм-гггг) -->
<P102>2</P102>
<!-- Формат отображения часов 0(12)/1(24) -->
<P122>1</P122>
<!-- Идентификатор класса поставщика (параметр 60) -->
<P148>Grandstream Provisioning</P148>
<!-- Автоматическое обновление 0(Нет)/1(Да, через заданные минуты)/2(Да, проверять каждый день) -->
<P194>2</P194>
<!-- Обновление ПО и провижининг 0(Всегда проверять)/1(Проверять обновление только при изменении префикса)/2(Всегда пропускать проверку обновлений) -->
<P238>0</P238>
<!-- Интервал обновления телефонной книги (в минутах) -->
<P332>20</P332>
<!-- Удалять отредактированные вручную записи при загрузке 0(Нет)/1(Да) -->
<P333>1</P333>
<!-- Сортировка телефонной книги 0(Фамилия)/1(Имя) -->
<P2914>1</P2914>
<!-- Язык экрана -->
<P1362>ru</P1362>
<!-- Использовать службы автоматического определения местоположения. 0(Нет)/1(Да) -->
<P8338>0</P8338>
<!-- Вкл. прогноз погоды. 0(Нет)/1(Да) -->
<P1402>0</P1402>
<!-- Шкала температур -->
<P1379>c</P1379>
<!-- Включить блокировку клавиатуры 0(Нет). По-умолчанию выключено. Активируем настройку на случай случайной блокировки пользователем -->
<P1382>0</P1382>
<!--  Автоматическое предоставление 3CX -->
<P1414>0</P1414>
<!-- Функция кнопки Phonebook. 2(Локальная телефонная книга) -->
<P1526>2</P1526>
<!-- Включить LLDP 0(Отключено) -->
<P1684>0</P1684>
<!-- ПОДПИС. на регистрацию 1(Да) -->
<P2319>1</P2319>
<!-- Режим Не беспокоить (DND) Вкл -->
<P2344>*78</P2344>
<!-- Режим Не беспокоить (DND) Выкл -->
<P2345>*79</P2345>
<!-- Показывать дату в строке состояния 1(Да) -->
<P8387>1</P8387>
<!-- QoS уровня 2 Voice VLAN -->
<!-- <P51>8</P51> -->
<!-- QoS уровня 2 Voice VLAN 0(access)/1(тегированный vlan1)/8(тегированный vlan8) -->
<!-- <P51>8</P51> -->
<!-- Значение приоритета уровня 2 QoS 802.1p -->
<P87>7</P87>
<!-- порт ПК VLAN тег 0(access)/1(тегированный vlan1) -->
<P229>0</P229>
<!-- Позволяет DHCP-параметру 2 переопределять настройки часового пояса 0(Отключено) -->
<P143>0</P143>
<!-- Разрешить DHCP опцию 42 поверх NTP сервера 0(Нет) -->
<P144>0</P144>
<!-- Обновление в 3(03:00) -->
<P285>3</P285>
<!-- Обновление день недели 0(воскресенье)/1(понедельник)/6(суббота) -->
<P286>6</P286>
<!-- Загрузить и обработать все файлы конфигурации -->
<P8467>1</P8467>
<!-- Путь к серверу конфигурации -->
<P237>gs.example.ru:59118</P237>
<!-- Конфиг. Имя пользователя -->
<P1360>sip</P1360>
<!-- Конфиг. Пароль сервера -->
<P1361>11111111</P1361>
<!-- Конфиг. Обновление через 0(TFTP)/1(HTTP)/2(HTTPS) -->
<P212>2</P212>
<!-- Путь к серверу обновления ПО -->
<P192>gs.example.ru:59118</P192>
<!-- Прошивка. Имя пользователя -->
<P6768>sip</P6768>
<!-- Прошивка. Пароль сервера -->
<P6769>11111111</P6769>
<!-- Прошивка Обновление через 0(TFTP)/1(HTTP)/2(HTTPS) -->
<P6767>2</P6767>
<!-- Путь к серверу Телефонной книги -->
<P331>gs.example.ru:59118</P331>
<!-- Имя пользователя Телефонной книги -->
<P6713>sip</P6713>
<!-- Пароль Телефонной книги -->
<P6714>11111111</P6714>
<!-- Включить загрузку телефонной книги XML 0(Disabled)/1(HTTP)/2(TFTP)/3(HTTPS) -->
<P330>3</P330>
</config>
</gs_provision>

Каждый параметр с комментарием.

Из основной конфигурации закомментировано указание VoiceVLAN. Телефон в нем уже сидит но, если вы решите дать телефон работнику на удаленку или в другой офис, vlan надо будет убрать выставив вручную в веб-морде телефона в настройках vlan 0 или выставить другой vlan.

Погода: Погоды больше не будет. Чтобы не видеть на экранах телефонов N/A - отключаем.

Протокол передачи: Если вы будете удаленно передавать конфигурацию, лучше это делать по https. В файле есть адреса и пароли.

Второй момент https: Телефонную книгу мы тоже будем передавать по сети, доступ к web серверу будет с авторизацией. И если конфигурация и прошивки проходят по HTTP с авторизацией, то телефонная книга с авторизацией передается только по HTTPS!

Если телефонные аппараты не будут выходить из офиса, можно оставить HTTP без авторизации.

Авторизация на web сервере:

Создаем в каталоге веб сервера (рядом с cfg.xml) файл .htaccess Путь до файла .htpasswd надо указывать полный.

AuthType Basic
AuthName "Authorization"
AuthUserFile /share/CACHEDEV1_DATA/Web/gs.example.ru/.htpasswd
Require valid-user

Создаем там же файл .htpasswd

sip:$apr1$zbr2colj$bXVmZRPH/wQJFR1fzQuDg.

Пароль можно зашифровать на https://hash.online-convert.com/ru/apache-htpasswd или https://hostingcanada.org/htpasswd-generator/ выбрав Apache specific salted MD5

Телефонная книга; Заходим через веб интерфейс в какой-нибудь телефон, т.к. на сервере файла еще нет, настройки в телефоне можем не менять. Просто заполняем книгу.

После заполнения книги переходим на страницу управления телефонной книгой и скачиваем файл phonebook.xml

Скачанный файл размещаем на web сервере рядом с основным файлом настроек cfg.xml

Если файл телефонной книги на сервере уже есть и нам надо отредактировать существующую телефонную книгу, меняем адрес сервера на произвольный чтобы не потерять обновления через 20 минут (задано настройками выше) или удаляем файл телефонной книги с web сервера на время пока вносим изменения. Не забываем перекачать отредактированную книгу на web сервер.

Если изменения незначительные, можем отредактировать сам файл phonebook.xml размещенный на сервере.

<?xml version="1.0" encoding="UTF-8"?>
<AddressBook>
	<pbgroup>
		<id>1</id>
		<name>Blacklist</name>
	</pbgroup>
	<pbgroup>
		<id>2</id>
		<name>Whitelist</name>
	</pbgroup>
	<Contact>
		<id>1001</id>
		<FirstName>Имя1</FirstName>
		<LastName>Фамилия1</LastName>
		<Frequent>0</Frequent>
		<Phone type="Work">
			<phonenumber>1</phonenumber>
			<accountindex>0</accountindex>
		</Phone>
		<Primary>0</Primary>
	</Contact>
	<Contact>
		<id>1002</id>
		<FirstName>Имя2</FirstName>
		<LastName>Фамилия2</LastName>
		<Frequent>0</Frequent>
		<Phone type="Work">
			<phonenumber>2</phonenumber>
			<accountindex>0</accountindex>
		</Phone>
		<Primary>0</Primary>
	</Contact>
</AddressBook>

Заходим на официальный сайт Grandstream в раздел прошивок и скачиваем файлы прошивок для наших телефонов. Размещаем файлы прошивок на web сервер рядом с файлом cfg.xml.

Содержимое каталога web сервера:

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

Останется только внести в каждый телефон SIP User ID и пароль с вашей АТС или предоставленные провайдером виртуальной АТС. SIP сервер мы телефонам уже передали ранее конфигурационным файлом.

В будущем, при появлении обновлений прошивок, в пятницу вечером смотрим прогноз погоды и если нет гроз в ночь на субботу, можем размещать новые прошивки на наш web сервер. В три часа утра в субботу телефоны обновятся.

Обещанный бонус:

Что делать если мы хотим добавить параметры, которые не можем нагуглить или найти в официальной документации (а таких много)?

К сожалению, данный метод не работает на телефонах серии gxp1600. Но прекрасно работает на телефонах серии gxp2100.

Открываем веб интерфейс телефона, включаем в браузере режим разработчика, переходим на вкладку Сеть (FireFox), Network (Chrome), ищем строку начинающуюся на config_get?pvalues=

Жмем дважды по этой строке и открывается страница со значениями параметров и самих значениях на просматриваемой странице. Chrome отображает все данные подряд в неудобном для чтения виде:

FireFox в этом плане будет удобнее:

Ищем нужные нам ячейки, выбираем/подбираем (методом научного тыка) параметры и найдя нужный заносим в файл конфигурации.

pvalue это параметр <P**></P**>

value это значение параметра. То, что находится между >*<

Комментарии (4)


  1. gibson_dev
    12.07.2022 16:02
    +2

     Chrome отображает все данные подряд в неудобном для чтения виде:

    Используйте вкладку Preview вместо Response


  1. ximik666
    12.07.2022 15:14

    Может подскажите: есть АТС yeastar s20, есть телефоны yealink t19, все работает, все хорошо. Решил поставить grandstream gxp1610, настроили, а он кладет трубку каждые 30 секунд. Если трубку положить, то линия будет занята некоторое время, пока не пройдет время кратное 30 секундам. Вроде все настройки проверил, но ничего связанного с 30 секундами не нашел.


    1. IvanLeka Автор
      12.07.2022 15:44

      Я со сбросом через 30 сек. сталкивался когда забыл пробросить на фаерволе RTP порты. Для FreePBX это UDP 10000-20000.

      Актуально если абонент находится за NAT. Если все телефоны и АТС находятся в одной сети и такое происходит, я не знаю чем Вам помочь.


  1. gibson_dev
    12.07.2022 16:02
    +2

     Chrome отображает все данные подряд в неудобном для чтения виде:

    Используйте вкладку Preview вместо Response


    1. IvanLeka Автор
      12.07.2022 16:08

      Посмотрел. Буду знать.

      Спасибо!