Интеграция OCS 2007 R2 и Google Talk / Jabber
Известно, что пользователи Office Communications Server 2007 R2, используя Office Communicator, могут общаться не только друг с другом, но и с клиентами других систем обмена сообщениями — AOL (и официальным ICQ), MSN Live Messenger, Yahoo — этот процесс называется федерация (federation). Пользователи видят таких клиентов в своем списке контактов, видят их состояние присутствия (так же, как и федеративные пользователи видят их состояние), и могут обмениваться текстовыми сообщениями.
Теперь количество интегрируемых с OCS систем увеличилось. Первого октября команда разработчиков Office Communications Server выпустила бесплатное дополнение для OCS 2007 R2 — XMPP Gateway, сервер для федерации с системами, работающими по протоколу Jabber — а это, например, Google Talk, или известный в России QIP.
Сервер XMPP Gateway устанавливается в сети периметра — той же самой, где находится сервер Edge. Сосуществовать с другими ролями OCS эта роль не может — для нее нужен отдельный сервер (или виртуальная машина). И, несмотря на то, что роль называется Gateway — она требует для работы лишь один сетевой интерфейс. Главное — чтобы XMPP Gateway мог связаться с сервером Edge по TCP-порту 5061, и с другими Jabber-серверами в Интернете по TCP-порту 5269. Второго мы можем добиться, например опубликовав порт 5269 на нашем внешнем firewall.
Обязательное требование к серверу XMPP Gateway — что он не должен быть членом домена, в котором развернут Office Communications Server. Рекомендуется, чтобы этот сервер просто принадлежал какой-либо рабочей группе.
Давайте попробуем развернуть эту роль и на практике посмотреть, как же можно связать пользователей Communicator и Google Talk:
Коротко о Jabber
Давайте сначала разберемся, как работает протокол XMPP.
По своей сути протокол — это специально сформированные сообщения в формате XML. Клиенты XMPP общаются с сервером по порту 5222. Серверы общаются между собой по порту 5269. Для того, чтобы два сервера могли обмениваться информацией между собой, используется так называемый Dialback — первый сервер подключается ко второму по порту 5269, и второй сервер устанавливает встречное соединение с первым, тоже на порт 5269.
Поскольку XML-сообщения это по сути открытый текст — протокол позволяет шифровать передаваемый межсерверный трафик по протоколу TLS.
Поиск нужного сервера
Если пользователь хочет отправить сообщение на адрес someuser@somedomain.ru — сервер выполняет DNS-запрос на получение записи типа SRV с именем _xmpp-server._tcp.somedomain.ru. Ответ DNS-сервера и содержит имя Jabber-сервера (или серверов) домена somedomain.ru, и порт, к которому нужно произвести подключение.
Структура сети
Схема сети выглядит следующим образом:
У нас есть контроллер домена DC, он же центр выдачи цифровых сертификатов, сервер OCS (Standard Edition), сервер EDGE (типа Consolidated Edge, все три роли на одном. Самое главное — что на нем есть Access Edge). Расположим в сети периметра сервер JABBER. Пользователи нашего OCS имеют SIP-адреса из домена, скажем, external.ru.
Сервер Access Edge имеет сетевое имя sip.external.ru.
Установка сервера JABBER
Установим на нем 64-битный Windows 2003 или 2008 — я остановился на 2003 R2 Datacenter. Оставляем этот сервер в рабочей группе, и припишем в настройках имени компьютера DNS-суффикс external.ru — чтобы его полное имя совпадало с тем, какой сертификат мы ему выдадим.
Связь сервера JABBER с сервером EDGE будет проходить по зашифрованному каналу — следовательно, оба сервера должны иметь сертификаты. Импортируем сертификат корневого центра сертификации DC в соответствующее хранилище сервера JABBER, и выдадим этому серверу сертификат шаблона Web Server на полное имя компьютера — jabber.external.ru. На сервере EDGE сертификат на имя sip.external.ru сертификат уже присутствует с момента развертывания OCS.
Установка XMPP Gateway
Скачаем с сайта Microsoft Download Center дистрибутив XMPP Gateway и запустим его. Сам дистрибутив программу не установит, а лишь разархивируется в каталог C:\Program Files\Microsoft Office Communications Server 2007 R2\XMPP Installer. Куда мы зайдем и запустим setup.exe.
Первый пункт установки развернет нам файлы приложения. После него нужно настроить IP-адрес для шлюза. Находим файл C:\Program Files\Microsoft Office Communications Server 2007 R2\XMPP Gateway\TGWConsoleGUI.dll.config и открываем его Блокнотом.
Впишем в него IP-адрес сервера JABBER, в два параметра. Первый параметр — для адреса, к которому будет получать доступ сервер EDGE. Второй параметр — для адреса, к которому будут получать доступ внешние серверы из Интернета. Для нас это один и тот же адрес, допустим, 192.168.1.222:
<?xml version="1.0" standalone="yes"?>
<configuration>
<appSettings>
<add key= "cultureName" value = "en-US"/>
<add key= "SipIP" value= "192.168.1.222"/>
<add key= "XmppIP" value="192.168.1.222"/>
</appSettings>
</configuration>
Сохраняем файл и возвращаемся в программу установки.
Второй шаг запустит программу настройки. Эта же программа будет доступна в дальнейшем через ярлык в Administrative Tools. Кстати, при любом изменении в этой программе необходимо рестартовать службу Office Communications XMPP Gateway.
Настройка программы — параметры доступа к OCS
Первый раздел программы слева — SIP Configuration, то есть связка с OCS. На первой закладке в поле Domain нужно указать SIP-домен организации, то есть в нашем тестовом случае, external.ru. В поле Host Name указывается имя сервера EDGE — в нашем случае, это sip.external.ru.
Нажимаем кнопку Save.
На второй закладке нужно выбрать сертификат для TLS-шифрования трафика с сервером EDGE. Выбираем ранее полученный нами сертификат на имя сервера jabber.external.ru.
На третьей закладке можно выбрать домен и убедиться, что сервер JABBER подключается к серверу EDGE.
Внимание: проверяется только возможность подключения, то есть доступность сервера по IP-адресу. Никакой трафик, вроде авторизации и так далее, не передается, то есть информация об успехе подключения всего лишь говорит что сервер нам доступен, а не то что он действительно работает правильно.
Настройка программы — параметры XMPP Configuration
В закладке Allow list мы указываем, с какими именно Jabber-доменами мы хотим «дружить», и методику связи с ними — в частности, следует ли использовать TLS или достаточно простого TCP подключения. Сервер gmail.com для Google Talk в отличие от многих других может работать и без TLS.
В поле Domain Name вводим домен, с пользователями которого мы хотим связываться — в нашем случае это gmail.com. Метод подключения выбираем TCP Dialback — то есть, без сертификатов и шифрования. Нажимаем OK — и домен появляется в списке.
На второй закладке мы ничего не указываем — потому что мы выбрали подключение без шифрования.
На третьей закладке мы можем проверить доступность серверов gmail.com.
Так же, как и раньше, проверяется только возможность подключения.
Раздел Settings можно не настраивать, оставив все по умолчанию.
Теперь можно вернуться в программу установки и нажать Start services.
Настройка сервера EDGE
Теперь, для того, чтобы наш EDGE знал, куда следует переадресовывать запросы на адреса для Jabber, нужно открыть оснастку управления на сервере EDGE, выбрать свойства сервера и найти закладку Allow.
На этой закладке нажимаем Allow и вписываем — домен gmail.com, и хост, на который нужно переадресовывать запросы — у нас это jabber.external.ru.
Естественно, нужно позаботиться о том, чтобы сервер EDGE знал, как найти IP-адрес сервера JABBER — например, указав его в файле hosts.
Настройка внешнего DNS
Как я говорил ранее, не только мы устанавливаем соединение с другим Jabber-сервером — и этот сервер должен установить еще одно соединение с нами. Для этого он должен нас найти.
Открываем консоль внешнего DNS-сервера, обслуживающего наш SIP-домен, и создаем там запись типа А для сервера JABBER — я назвал его xmpp.external.ru. Так как порт 5269 моего сервера я просто опубликовал на аппаратном firewall — то для этой записи A я указываю IP-адрес firewall-а.
Создаем еще одну запись, типа SRV, с именем _xmpp-server._tcp — именно по ней нас и найдут внешние сервера. Укажем порт 5269 и хост xmpp.external.ru — тот, который мы прописали чуть выше.
Проверка
Все! Настройка закончена. Если все прошло как надо, все нужные порты и записи присутствуют и службы запущены — мы можем добавить в Communicator запись с gmail-а, и увидеть статус присутствия, написать сообщения и даже получить ответ
Пользователь Google Talk в свою очередь увидит наш статус присутствия и тоже сможет нам писать.
Послесловие
Как можно видеть на картинке выше, в моем Communicator присутствуют еще записи из доменов qip.ru и jabber.ru, без состояния присутствия. Дело в том, что эти сервера требуют обязательного шифрования трафика по TLS — а значит, нужно будет присвоить серверу xmpp.external.ru сертификат, причем от публичного центра сертификации. Так что — продолжение экспериментов следует









