В крупных компаниях с территориально распределённой структурой её объектов уже является необходимостью иметь какую-либо систему групповых звонков с поддержкой видео, что позволяет сократить немалые транспортные расходы и затраты по времени. Но не каждый продукт подойдёт под требования предприятия в виду наличия различных ограничений. Основное – это наличие интернета не у всех сотрудников, а значит Google Hangouts, Mozilla Hello, Skype не приемлемы в нашем случае, а OpenMeetings хоть и подходит для корпоративного сектора, все же не стоит в сравнении с богатым функционалом MS Lync 2013 [http://www.asa-it.ru/uploads/media/Lync.pdf, http://es.slideshare.net/cbwTest/microsoft-lync-30886277].  

На нашем предприятии в центральном офисе уже внедрён программный продукт MS Lync 2013, с помощью которого регулярно проводятся видеоконференции, обучение, консультации, передача файлов, обмен сообщениями с некоторыми филиалами. Таким типом работ озадачили и региональное представительство. Основными преимуществами внедрения ВКС в регионе являются сокращение транспортных расходов и времени, а использование мобильных устройств позволяет участвовать в видеоразговоре даже за пределами компании. При интеграции MS Lync с имеющейся в организации традиционной АТС появляется возможность задействовать обычные аналоговые телефоны одновременно с программной частью.

Тут вытекает основная проблема – 2 сервера Lync не могут существовать в одном лесу Active Directory. Решением стало развернуть отдельный (ресурсный) лес для регионального сервера Lync, а для удобного подключения к разным серверам Lync без перелогинивания в операционной системе - использовать дополнительно утилиту Profiles for Lync [https://gallery.technet.microsoft.com/office/Profiles-For-Lync-2013-1b193329 ]. Вторая появившаяся проблема - это добавление существующих пользователей основного домена в новый. Выходом является применение утилиты ADMT (Active Directory Migration Tool) [ https://khlebalin.wordpress.com/2012/07/12/миграция-домена-windows-2008r2/, https://technet.microsoft.com/en-us/library/cc974332%28v=ws.10%29.aspx, https://welcometoviktorp.wordpress.com/2012/10/12/migration_ad01/] или создание их вручную. К дополнению к этому, есть ещё одна небольшая проблема – некоторые настройки сервера происходят с помощью командлетов PowerShell, то есть системному администратору, который с ним не работал, понадобится потратить время на понимание принципов и приобретение навыков работы в командной строке.

 

Подготовительные действия

Для создания ВКС внутри компании достаточно иметь только 2 сервера – контроллер домена и Lync-сервер. В первую очередь необходимо развернуть новый контроллер домена, в котором установить роли DNS (Domain Name Services), ADDS (Active Directory Domain Services), CA (Certificate Authority), создать нужные DNS-записи и настроить зоны. Затем в ADDS завести пользователей и в обязательном порядке указать им почтовый ящик и желательно ещё и номер кабинета, номер телефона, название организации – это будет отражено в личной карте клиента. После этого происходит развёртывание сервера Lync, а именно: настройка топологии, базы данных MS SQL Server, входящих в него компонентов, хранилища и сертификатов. Требования и процесс развертывания сервера Lync 2013 подробно описаны в [http://windowspbx.blogspot.nl/2012/07/step-by-step-installing-lync-server.html , https://welcometoviktorp.wordpress.com/2013/03/26/разворачиваем-lync-2013-установка-lync-front-end-5/].  

 

Сертификаты

Подключение клиентов Lync к серверу основано на сертификатах [https://technet.microsoft.com/ru-ru/library/gg398094%28v=ocs.15%29.aspx, https://technet.microsoft.com/ru-ru/library/gg398066(v=ocs.15).aspx], поэтому так необходима была установка роли CA. Чтобы автоматизировать процесс распространения сертификата на компьютеры пользователей, будем использовать групповые политики (GPO - Group Policy Object).

Итак, на контроллере домена запускаем консоль mmc с правами администратора, заходим в меню “File->Add or Remove Snap-ins->Certificates->Add->Computer account->Local computer->Ok” (в русской версии это “Файл->Добавить или удалить оснастку->Сертификаты->кн. Добавить->учётная запись компьютера->Локальный компьютер->Готово”). В дереве переходим на ветку “Trusted Root Certification Authorities” (“Доверенные корневые центры сертификации”) и находим наш сертификат B-DC03-CA (см. рис. 1), экспортируем его в удобное место.

Рисунок 1. Доверенный сертификат компьютера.

Далее открываем консоль “Управление групповой политикой”, создаём объект для нужного контейнера (в моём случае это весь основной домен), заходим в редактор политик и проходим путь “Конфигурация компьютера->Политики->Конфигурация Windows->Параметры безопасности->Политики открытого ключа->Доверенные корневые центры сертификации”, в контекстном меню выбираем пункт Импорт и вписываем путь к сохранённому файлу с расширением *.cer (см. рис. 2).

Рисунок 2. Создание групповой политики.

 

Первоначальная настройка сервера

После развёртывания сервера Lync в Active Directory появятся множество дополнительных групп, названия которых начинаются на CS и RTC. Управление сервером может производить только администратор, поэтому необходимо какому-то пользователю предоставить расширенные права, а именно сделать его членом групп CSAdministrator, RTCUniversalServerAdmins, а также желательно ещё и DomainAdmins, и Administrators.

Запускаем Control Panel. Тут требуется ввести адрес Lync-сервера и учётные данные администратора. Чтобы каждый раз не вводить эту информацию, мы в свойствах браузера Internet Explorer указываем данный URL (https://admin.b-lync01.es) в “Security->Local Intranet”.

Далее нам нужно на сервере Lync добавить пользователей из Active Directory. Для этого переходим в раздел Users, жмём кнопку Enable Users и заполняем появившуюся форму: жмём кнопку Add и в строке поиска вводим несколько букв из ФИО пользователя, ниже выбираем пул сервера и жмём кнопку Enable. Результат можно увидеть на рисунке 3.

Рисунок 3. Добавленные пользователи на сервер Lync 2013.

Если необходимо задействовать администратора, как обычного пользователя в каких-то тестовых целях, то это делается исключительно из командной строки PowerShell [ https://technet.microsoft.com/ru-ru/library/gg398306%28v=ocs.15%29.aspx ]. Пытаясь внести изменения в свойства администратора из Control Panel, получим ошибку, связанную с недостатком прав, несмотря на то, что данный пользователь имеет полные права (см. рис. 4).

Рисунок 4. Ошибка при изменении настроек администратора.

Для добавления администратора на сервер Lync к общему списку пользователей нужно указать имя, пул, sip:

Enable-CsUser –Identity “имя” –RegistrarPool <пул> –SipAddress <sip>,

то есть

Enable-CsUser –Identity “Дудкин Виктор Андреевич” –RegistrarPool b-lync01.es –SipAddress sip:dudkin@es,

а для удаления администратора достаточно указать только его sip:

Disable-CsUser <sip>,

то есть

Disable-CsUser dudkin@es.

Так как на предприятии до сих пор достаточно большое количество ПК с ОС Windows XP, то следующим шагом отключаем контроль старых версий клиентов. По умолчанию политика (Global Policy) включена и содержит более 15 версий, как для стационарных ПК, так и для мобильных устройств. Вместо отключения работы глобальной политики мы её отредактируем. Для этого заходим в раздел Clients и в вкладку Client Version Policy, двойным щелчком левой кнопки мыши открываем глобальную политику и находим строку с версией клиента 4.0.7577.4103. По умолчанию установлены режимы Operation – “Order than or same as и Action – “Block, что означает блокирование (отторжение) подключения клиента с версией равной или меньше 4.0.7577.4103. Мы выберем режим Operation – “Never than or same as и Action – “Allow, что позволит подключаться клиенту со старой версией.

Мы уже можем осуществлять аудио-видео конференции, обмениваться файлами и вести переписку, но только с сотрудниками тех филиалов, где имеются быстрые каналы передачи данных (по ЛВС), достаточно клиентом подключиться к серверу и найти собеседника. Но в региональное представительство входят и такие филиалы, где до сих пор связь осуществляется только по телефонной линии, поэтому крайне необходимо объединить Lync с АТС, чтобы сотрудники могли хотя бы без видео принимать участие в коллективном разговоре.

 

Интеграция Lync с АТС

В компании имеется традиционная АТС, от которой к маршрутизатору Cisco 3845 приходит поток E1, он и используется для передачи аудио-видео трафика. Так как продукт MS Lync 2013 относится к IP-телефонии, то было решено задействовать ресурсы АТС (телефонные линии и 4х-значные внутренние номера, стационарные телефоны) и интегрировать аппаратный и программный комплексы.

Чтобы не было путаницы между внутренними номерами АТС и Lync, нужно добавить дополнительный код (цифру) для Lync-номеров. Решено было дополнительный код сделать из 3х цифр (666), таким образом для дозвона с телефонного аппарата на “компьютер” необходимо набирать 7 цифр, а также включить режим Enterprise Voice, по умолчанию используется режим PC-to-PC only (см. рис. 3). В этом случае пользователь Lync сможет не только совершать исходящие звонки на стационарный телефон, но и принимать с него входящие.

Теперь нужно телефонный номер с дополнительным кодом закрепить за пользователем. Делается это в разделе Users, двойным щелчком левой кнопки мыши открываем свойства пользователя, в поле Line URI вводим номер телефона tel:6663477, а в поле Telephony выбираем Enterprise Voice при этом на сервере появится 2 дополнительные поля – Dial Plan Policy и Voice Policy - для применения особых политик (не глобальных), а в клиенте Lync - новый режим набора номера и возможность создания переадресации.

Если администратору нужно включить такой же “звонящий” режим, как и другим работникам, то делается это с применением следующих командлетов PowerShell:

Set-CsUser –Identity <sip> или “имя” -EnterpriseVoiceEnabled $True,

то есть

Set-CsUser -Identity dudkin@es -EnterpriseVoiceEnabled $True,
для указания номера телефона нужно выполнить:
Set-CsUser -Identity <sip> или “имя” –LineURI <tel:номер телефона>, 

то есть
Set-CsUser -Identity dudkin@es –LineURI tel:6663477

На сервере Lync за входящие и исходящие звонки отвечает раздел Voice Routing (маршрутизация звонков), в который входят 5 компонентов Dial Plan, Voice Policy, Route, PSTN Usage, Trunk Configuration, расположенные в соответствующих вкладках. Путь проходит вызов от абонента-источника до абонента-получателя по следующей схеме:

Набор номера->Правила преобразования номера->Голосовая политика->PSTN Usage->Маршрут->Trunk Configuration->АТС

Опишем эти комппоненты.

Dial Plan (план набора) содержит в себе правила набора или нормализации номера (normalization rules), которые необходимы для преобразования длинного номера в более короткий и\или удобный. Правила набора номера чётко описывают схему следования цифр, набираемых пользователем для дозвона своему собеседнику. Они представляют собой регулярные выражения, большую часть которых можно создавать с помощью мастера, но существуют расширенные значения выражений, которые нужно вписывать вручную [https://rmamyshev.wordpress.com/2014/02/19/outbound-routing-lync-2013/ ].

Dial Plan можно создать Site Dial Plan (для сайта), Pool Dial Plan (для пула) и User Dial Plan (для пользователя) или использовать глобальный. Мы создадим свой отдельный план набора для пользователя по причине разделения сотрудников по отделам, группам и задачам. Применим 3 правила нормализации номера – для внутренних входящих (From) и исходящих звонков (To), и звонков в город (Into City) (см. рис. 5).

Рисунок 5. Создание правил набора номера.

Приведу несколько примеров регулярных выражений, которые можно создать с помощью мастера:

^(\d{4})$ - номер из любых 4х цифр;

^(666\d{4})$ - 7ми-значный номер, начинающийся на 666, а затем любые 4 цифры;

^666(\d{4})$ - при наборе 7ми-значного номера 666 отбрасывается.

Примеры регулярных выражений, вводимые вручную, так как в этом случае мастер недоступен:

^([6-8])(\d{4,})$ - под правило попадают номера, первая цифра которых может быть от 6 до 8, а затем 4 и более любых цифр;

^(?![6,8])(\d{4})$ - правилом будет пропускаться номер длиною в 4 цифры, кроме номеров, которые начинаются на 6 или 8.

Теперь созданный Dial Plan нужно присвоить соответствующим сотрудникам, делается это в свойствах пользователя в поле Dial Plan Policy.

После выполнения процедуры нормализации набранного номера при совершении звонка с Lync-клиента на стационарный телефон происходит проверка, может ли вызов идти дальше по маршруту. В этой проверке участвуют остальные три связанных между собой компонента: Voice Policy, Route, PSTN Usage.

Voice Policy (голосовая политика) состоит из следующих 2 компонентов – Route и PSTN Usage, имеет политику по умолчанию (Global). Если создавать свою политику, то её необходимо указать в свойствах пользователя в поле Voice Policy, иначе будет применяться глобальная политика и результат не будет ожидаемым.  

Route (маршрут) включает в себя регулярное выражение, ссылку на голосовой шлюз, через который проходит вызов и PSTN Usage.

PSTN Usage (тип вызовов) – содержат в себе маршруты. Типы вызовов можно использовать в разных политиках.

Trunk Configuration (настройка транка) – трансляция номеров на выходе. Здесь имеются Calling number translation rule (правила трансляции вызывающего номера) и Called number translation rule (правила трансляции вызываемого номера), которые применяются не к набираемому номеру, а к источнику (номеру абонента), так как городская АТС смотрит, от кого пришёл вызов и на основании этого уже решает, пускать дальше или нет.  

В нашем случае для дозвона клиенту на городской телефон нужно, чтобы номер звонящего начинался с 987 (условия городской АТС), что означает необходимость обрезать существующий (666) и добавить иной дополнительный код (987). То есть создаём правило трансляции вызывающего номера, которое состоит из следующего регулярного выражения: ^666(\d{4})$ -> (987\d{4})$1.  

В каждой вкладке имеется поле для проверки корректности созданных настроек, а также отдельная вкладка Test Voice Routing (см. рис. 5) для их совместного тестирования.

 

Настройка маршрутизатора (голосового шлюза)

Теперь возьмёмся за маршрутизатор Cisco 3845, на котором нужно разрешать прохождение пакетов от сервера Lync и обратно. Для этого необходимо описать протокол, кодек, шаблоны, под которые номера будут попадать, адрес сервера Lync и другое [ http://snakeproject.ru/rubric/article.php?art=cisco_E1_ISDN , http://www.justogroup.ru/dokumentacija/cisco/unificirovannye-kommunikacii/nastroyka_planov_nabora,.pdf ].

card type e1 0 3                       - Настройка типа карты.

isdn switch-type primary-qsig -  Тип сигнализации ISDN.

voice-card 0                             - Номер слота, где находятся платы с микросхемами DSP.

Dspfarm                                   - Включается конструкция dspfarm для DSP в слоте 0

voice service voip                    - Разрешаем прохождение SIP-трафика.

sip                                                                                 

voice class codec 1                  - Описание класса кодеков.

codec preference 1 g711alaw   - Кодек европейский, предпочитаемый.

codec preference 2 g711ulaw   – Кодек американо-японский, применяется вторым.

controller E1 0/3/0                     - Описание контроллера.

framing NO-CRC4                     -  Отключаем контроль чётности.

pri-group timeslots 1-31           - Формирование группы. Использовать каналы с 1 по 31, канал 0 – служебный.

dial-peer voice 2000 pots         - Линия E1 настраивается как POTS, определяет характеристики соединения с обычной телефонной сетью. Определяет локальную точку вызова, которая подключается к интерфейсу POTS.

destination-pattern .T              – Шаблон назначения сопоставляет набранным цифрам телефонное устройство. “.”- любое количество символов, “Т”- таймаут.

direct-inward-dial                     - Напрямую выполнять вызов.

port 0/3/0:15                            –  Привязка диал-пира к физической линии, D-канал настроен на 15-й порт.

forward-digits all                      - Настраивает метод пересылки цифр. Указывает маршрутизатору направить строку набора целиком.

dial-peer voice 1111 voip          - Определяет характеристики соединения по сети c коммутацией пакетов. Определяет удаленную точку вызова VoIP.

huntstop                                    – Нашли нужный диал-пир и другие не ищем.

answer-address 666....            - Определение откуда пришёл звонок. “….” означает 4 любые цифры.

destination-pattern 666....        - Шаблон назначения сопоставляет набранные цифры.

voice-class codec 1                - Применение кодеков.

session protocol sipv2            -  Использование протокола SIPv2.

session target ipv4:10.7.87.99  – IP-адрес SIP-сервера (Lync-сервера).

session transport tcp              – По умолчанию используется протокол UDP. Изменили на TCP, так как MS Lync c UDP не работает.

dtmf-relay rtp-nte                     - При передачи информации DTMF использовать пакеты RTP Named Telephony Event (NTE), а не голосовые.

fax rate disable                        – Отменяем дополнительные функции передачи факсового трафика, вызов идёт сквозь, через голосовой канал.

no vad                                       - Отключаем функцию, которая отменяет передачу пакетов во время паузы в разговоре.

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

  • пользоваться готовыми тестовыми инструментами, которые имеются в каждой вкладке раздела Voice Routing;
  • работать с журналом для искусственных транзакций с помощью командлетов PowerShell [ https://technet.microsoft.com/ru-RU/library/jj204798%28v=ocs.15%29.aspx ];
  • использовать утилиту OCSLogger [ https://technet.microsoft.com/ru-RU/library/jj688145(v=ocs.15).aspx ] из DebugTools. OCSLogger предназначен для отображения и дальнейшего анализа собранной информации (см. рис. 6), устанавливается в C:\Program Files\Microsoft Lync Server 2013\Debugging Tools\.

Рисунок 6. Утилита OCSLogger.

В данной утилите нужно сначала запустить процесс логирования по нажатию на кнопку Start Logging, попытаться с клиента Lync вызвать абонента и затем остановить логирование, после этого нажать кнопку Analyze Log Files и поискать ответ на имеющуюся проблему. Полученных данных очень много, но, в принципе, полезную часть найти несложно: это направление, тип сообщения, от какого пользователя, с каким номером телефона совершался вызов и кому, версия протокола, время и результат попытки установки соединения.

Я применял OCSLogger во время отклонения звонка клиентом, то есть когда пакеты даже на сервер не уходили при этом в тестовых полях всё соответствовало норме, а также при настройке регулярного выражения для звонков в город.

 

Вывод: настройка сервера Lync 2013 не является тривиальной задачей и вызывает немало сложностей, начиная с этапа планирования. Необходимо просчитать потребляемые сервером ресурсы, подумать о миграции пользователей Active Directory, среди массы найти более доступно написанную документацию, разобраться с командлетами PowerShell, принципами работы голосовых протоколов, регулярными выражениями при интеграции с традиционной АТС, а также сконфигурировать маршрутизатор. Преодолев все эти трудности, компания получит не только возможность осуществлять ВКС, но и богатый функционал, не сравнимый с другими продуктами.