Доступ к Lync Mobility из внутренних сетей WiFi

2012-03-29, 16:45 / Argon

В предыдущей заметке я описал способ подключения мобильных клиентов Lync к веб-службам, использующим SSL-сертификат, к которому устройство изначально не имеет доверия.

Однако действия по установке сертификата корневого CA на каждое устройство могут быть не удобны в масштабах большого предприятия. Выход из ситуации один: веб-службы Lync должны использовать публичный SSL сертификат, выпущенный CA из списка рекомендованных.

Задача осложняется тем, что Lync использует как внутренние пути к веб службам (на front end), так и внешние (на reverse proxy). Естественно, устанавливать публичный сертификат на внутренние веб-службы только для обеспечения совместимости с Lync Mobility не очень хочется.

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

Часть работы за нас уже сделали разработчики: служба автообнаружения Lync Mobility спроектирована использовать DNS-записи:

  • lyncdiscoverinternal.lab.argon.pro для нахождения веб-служб Lync из внутренней сети
  • lyncdiscover.lab.argon.pro — для внешней

В обоих случаях Lync Discover выдаёт клиентам редирект на адрес внешних веб-служб Lync.

Однако если для внешних и внутренних служб используется одно DNS-имя типа lsweb.lab.argon.pro (Split-Brain DNS, внутреннее имя домена AD совпадает с публичным именем в интернете), мы имеем серьезную проблему… В такой конфигурации внутренние мобильные клиенты не будут иметь способа подключиться к внешним службам, а всегда будет попадать на внутренние службы с внутренним SSL-сертификатом.

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

Следующий важный момент — на какой IP-адрес указывает DNS-запись для внешних веб-служб при разрешении из внутренней сети. Может показаться удобным направить DNS-имя для внешних веб-служб Lync на внутренний IP-адрес reverse proxy, через который осуществляется публикация. Но если подумать о такой особенности работы мобильных устройств, как частое переключение между WiFi и мобильным интернетом, то эта идея не подходит из-за проблем с кешированием DNS-записей:

  1. Устройство через WiFi разрешает внутренний IP-адрес reverse proxy
  2. Переключается на мобильный интернет
  3. Находит в кэше DNS для имени внешних веб-служб Lync тот же внутренний IP адрес
  4. Не может подключиться, пока не истечет срок жизни кэша DNS

Чтобы избежать этой проблемы, адрес внешних веб-сервисов должен разрешаться на один и тот же публичный IP-адрес reverse proxy как из внутренней сети, так и снаружи.

Заключение

Для беспроблемной работы Lync Mobility из внутренней сети (WiFi) должны быть обеспечены следующие условия:

  • Внешние веб-службы Lync должны использовать публичный SSL-сертификат, выданный рекомендованными поставщиками
  • Запись DNS типа lyncdiscover.lab.argon.pro должна вести на публичный IP-адрес reverse proxy
  • Запись DNS типа lyncdiscoverinternal.lab.argon.pro не требуется
  • Адрес DNS для внешних веб-служб Lync должен отличаться от адреса внутренних веб-служб и разрешаться на один и тот же на публичный IP-адрес reverse proxy как из внутренней сети, так и снаружи

Источники вдохновения



11 комментариев

Zuz666
# Комментарий от 2012-03-30, 11:08

«В обоих случаях Lync Discover выдаёт клиентам редирект на адрес внешних веб-служб Lync.»
Разве это так?
Насколько помню для внутреннего клиента, выдаётся внутренняя ссылка https://lyncint.domaint.int/autodiscover/autodiscoverservice.svc/root/domain
а, потом сходя по ней выдаёт полный набор с вгутренними и внешними сервисами, а сам клиент уже использует только внешние, а внутриние не использует. Или я заблуждаюсь?

Беглая проверка браузером показала, что так оно и есть на портах 80 и 443.

Argon
# Комментарий от 2012-03-30, 11:17

Для lyncdiscoverinternal будет следующая цепочка редиректов:

lyncdiscoverinternal > lync-web-services-internal > lync-web-services-external

Как видишь, в середине присутствуют внутренние веб-службы с их неугодным SSL-сертификатом. Именно поэтому я написал, что DNS-запись lyncdiscoverinternal не нужна.

Более подробно процесс редиректов разобран в последней ссылке в «источниках вдохновения» ;)

Argon
# Комментарий от 2012-03-30, 11:22

А чтобы мобилкам всегда возвращались внутренние веб-сервисы, нужно использовать Set-CsMcxConfiguration с ключем ExposedWebURL.

Zuz666
# Комментарий от 2012-03-30, 12:30

Дык, об этом и была речь, если бы в обоих случаях первый этап выдавал ссылку сразу на внешние веб-сервисы, то и не было бы и проблемы. Я это имел в виду.

А, так в большенстве случаев для доступа к корпоративному WiFi используется EAP-TLS следовательно корни корпоративного ЦС уже есть на мобильном устройстве, поэтому на серверах линка можно оставлять сертификат выпущенный внутренним ЦС, а вот для публикации edge нужны внешние ибо федерация и пуш-нотификации.

Internal\Mcx указывает на внешние веб-сервисы для того, чтобы при роуменге между WiFi/сотовыми сетями не было проблем с разрешением имён. Чтобы реконет происходил гладко. Можно как в статье играть с TTL, но это надо тестировать, кто его знает как на самом деле мобильные клиенты коннектятся.

Argon
# Комментарий от 2012-03-30, 16:43

Теперь мы одинаково друг друга понимаем… Как будет время, допилю заметку с акцентом на процесс редиректа.

По поводу сертификатов для WiFi. Пока у нас в MS были Win Mobile 6.5, то для коннекта действительно требовалось поставить сертификат. На WP 7.5 для подключения к той же сети достаточно учетных данных в домене. Еще не разбирался, почему так.

Zuz666
# Комментарий от 2012-03-31, 12:35

Беда WP7 в том, что она не умеет (по факту просто интерфейс не допилен) аутентификацию в рамках EAP-TLS делать. Для меня это самая ожидаемая фича.

SIDERMAN
# Комментарий от 2012-06-01, 15:18

дважды прочитал…
не понятно в чём проблема дать разные имена внешней и внутренней службе?!
внутри будет обращаться по одному имени извне по другому.
Правда у меня внутри почему-то обращается по внешнему, хотя внутреннее имя доступно, пробовал и по внутреннему имени через браузер и по имени пула, и по дискаверинтернал — всё доступно, но в упор не хочет обращаться на внутренний сайт. вернее наверное обращается, но ошибка.
Где я ошибся?

Argon
# Комментарий от 2012-06-01, 17:16

Дать имена разные — никакой проблемы нет, написал я это для того, чтобы предупредить заранее. Так как есть соблазн использовать для веб-служб одинаковые имена.

Обращения всегда идут на внешний, даже изнутри, это такое умолчание, о чем я написал в статье (и более подробно описано по ссылкам). Если хочется использовать внутренний адрес, то смотри команду

Set-CsMcxConfiguration –ExposedWebUrl

SIDERMAN
# Комментарий от 2012-06-01, 17:30

понял. А если хочется использовать внутри внутренний, а снаружи внешний, как собственно я и думал єто работает)))
так можно?))

Argon
# Комментарий от 2012-06-01, 17:40

В этом случае надо мучаться с одним адресом веб-служб, что внутри сети, так и снаружи, но разрешаемым в разные IP-адреса.

Развёртывание Lync Server 2010 Mobility и Reverse Proxy на IIS « Заметки ИТ инженера
# Уведомление от 2013-02-20, 10:04

[…] #CU4 Quick Deployment Tool (EN, html, ps1) — Deploying the Lync 2010 Mobility Service (EN, html) — Доступ к Lync Mobility из внутренних сетей WiFi (RU, html) — Reverse Proxy на базе IIS. Блог Станислава Булдакова (RU, […]

Добавить комментарий