Проблема, в общем-то, известна еще с ISA 2000-2006. По сути, это и не проблема вовсе, а конфигурация "из коробки", работающая исключительно по соответствующим (зарегистрированным в IANA, описанным в разных RFC) портам. И решение этой проблемы известно - добавление нужных номеров портов или диапазонов Tunnel Ports при помощи специального VBScript-скрипта, использующего COM-модель ISA/TMG и получающего таким образом доступ к компонентам и конфигурации серверов.
Почему нельзя это сделать из консоли управления TMG - у меня на это есть два варианта объяснения: либо кто-то что-то не додумал в свое время при планировании функционала, либо это просто разумный баланс security vs comfort - выбирайте по вкусу, как говорится.
Все найденные поиском решения, включая и описанное в документации Microsoft, позволяют добавлять порты к диапазону только для обычного сервера (single server). В случае с массивом серверов они не работают. В TMG Enterprise Edition существует специальная роль сервера Configuration Storage Server, предназначенная, как следует из названия, для хранения конфигурации и распространения ее на все сервера в массиве. По сути, CSS это еще один экземпляр базы данных ADAM (Active Directory Application Mode).
И вот тут-то в случае с массивом серверов вся собака и зарыта. Дело в том, что для внесения изменений в конфигурацию массива из VBScript-а нужно сначала получить доступ к CSS-серверу в режиме read-write. И оперировать при этом не объектом FPCRoot, а непосредственно массивом, получить который можно методом GetContainingArray().
Для доступа к настройкам диапазонов SSL-портов используем ArrayPolicy.WebProxy.TunnelPortRanges соответствующего объекта (для простого сервера это FPCRoot, а в нашем случае – это массив TMG и, соответствено, CSS-сервер. И весь скрипт для изменения диапазонов портов выглядит следующим образом:
Option Explicit
' Объявляем нужные объекты и переменные
Dim root ' корневой объект FPCLib.FPC
Dim tmgArray ' объект массива FPCArray object
Dim tpRange ' существующий диапазон SSL-портов
Dim newRange ' новый диапазон SSL-портов
' Создаем экземпляр объекта FPCRoot
Set root = CreateObject("FPC.Root")
' Получаем ссылку на массив серверов
Set tmgArray = root.GetContainingArray()
' Получаем все существующие диапазоны портов
Set tpRange = tmgArray.ArrayPolicy.WebProxy.TunnelPortRanges
' Добавляем новый диапазон с указанием имени диапазона,
' начального и конечного номеров портов
Set newRange = tpRange.AddRange("Range for CRM - port 40005", 40005, 40005)
' Сохраняем сделанные изменения
tpRange.Save True
' Отключаемся от CSS
root.DisconnectFromConfigurationStorageServer
Выполнять скрипт при этом надо не на сервере, где развернута EMS (а в нашем случае там by default располагался и CSS), а на любом из серверов массива. И после выполнения скрипта для того, чтобы изменения вступили в силу, нужно перезапустить службу Windows Firewall на том сервере, где выполнялся скрипт и затем на EMS-сервере.
Комментариев нет:
Отправить комментарий