Sunday, September 23rd, 2018

Использование Windows 2000 NLB с правилами публикации ISA

Published on Февраль 16, 2009 by   ·   Комментариев нет

Вы задумываетесь об использовании NLB на внешнем интерфейсе ваших серверов ISA? Если да, то тогда прочтите эту статью и узнайте, как конфигурация NLB влияет на правила публикации вашего сервера.

Служба Windows 2000 Network Load Balancing (балансирование загрузки сети) позволяет вам обеспечить переносимость по умолчанию и балансирование  загрузки для всех членов массива NLB. Вы можете использовать NLB совместно с сервером ISA и привязывать его к внешнему или внутреннему интерфейсу, но не к обоим. Вы можете предоставить высокий уровень доступности, связав NLB с внешним интерфейсом массива серверов ISA. Массив ISA Server NLB может быть использован для публикации служб во внутреннем интерфейсе с использованием Server Publishing Rules (правил публикации для сервера).

Если вы читали мою серию статей «basics of NLB», вы имеет хорошее представление о том, как работают службы Windows 2000 NLB. Рисунок ниже показывает, как NLB улучшает доступность к опубликованным страницам. Входящие соединения распределяются среди членов массива NLB так, что сервер ISA не перегружается входящими соединениями. Если один из серверов ISA становится недоступным, то массив уменьшается и входящие соединения распределяются среди оставшихся членов массива. До тех пор, пока хотя бы один член массива активен, входящие запросы к вашим опубликованным серверам будут обслуживаться.

Примечание:
NLB не позволяет вам использовать несколько ISP, чтобы обеспечить переносимость по умолчанию для доступа к Internet. Все интерфейсы NLB должны иметь одинаковый сетевой ID, который означает, что вы можете использовать единственный ISP в этой конфигурации.

Далее в этой статье мы рассмотрим следующие моменты:

  • Проблема «half NAT»
  • Решение проблемы «half NAT»
  • Настройка NLB на внешних интерфейсах серверов ISA

Проблема «Half NAT»

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

IP адрес места назначения всегда должен быть изменен для того, чтобы пакеты смогли дойти до сервера, опубликованного во внутренней сети. На месте IP адреса источника может остаться оригинальный IP адрес источника (иногда называемый «half NAT») или IP адрес внутреннего интерфейса сервера NAT (full NAT). Оба этих действия позволяют перенаправить входящий пакет на сервер во внутренней сети, а также позволяет отвечать компьютеру из внешней сети, пославшему запрос.

На рисунке ниже показаны различия между Half NAT и Full NAT. Сервер ISA слева использует конфигурацию публикации сервера по умолчанию и оставляет в качестве IP адрес источника, IP адрес клиента, пославшего запрос. Опубликованный сервер видит IP адрес внешнего клиента и может ответить на запрос клиента внешней сети, перенаправив ответ на шлюз по умолчанию. Сервер ISA справа настроен как Full NAT — IP адрес клиента заменяется IP адресом внутреннего интерфейса сервера ISA. Опубликованный сервер может ответить клиенту, послав ответ на IP адрес внутреннего интерфейса сервера ISA.

Правила публикации сервера по умолчанию используют Half NAT. Обычно при этом не возникает никаких проблем. Вы просто настраиваете опубликованный сервер в качестве клиента SecureNAT. Обратите внимание, что шлюз по умолчанию может не быть внутренним интерфейсом сервера ISA Server, входящие пакеты просто должны быть перенаправлены на внутренний интерфейс сервера ISA. Если клиент SecureNAT имеет не такой же сетевой ID, как внутренний интерфейс сервера ISA, то инфраструктура маршрутизации должна быть настроена для поддержки клиента SecureNAT.

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

Обычно half NAT не создает какие-либо проблемы, но он может доставить много головной боли, если вы попытаетесь опубликовать сервера за пределами массива ISA Server NLB (где NLB настроен на внешнем интерфейсе сервера ISA). Что вы думаете случится, если у вас в массиве находится два сервера ISA, а входящее соединение принимается сервером ISA, который не настроен для шлюза по умолчанию? На рисунке ниже показана последовательность событий.

  • Внешний клиент посылает запрос на виртуальный IP адрес, который используется для публикации внутреннего сетевого сервера.
  • Все кадры посылаются всем членам массива. Алгоритм NLB определяет, какой сервер должен принять запрос. Пакеты передаются другим членам NLB массива.
  • Член массива NLB, принявший пакеты, перенаправляет пакеты опубликованному серверу.
  • Опубликованный сервер возвращает ответ на свой шлюз по умолчанию. Проблема в том, что этот сервер ISA не знает о том факте, что это правильный ответ на правильный входящий запрос. До тех пор пока этот сервер ISA озадачен, опубликованный сервер посылает SYN-ACK на соединение, для которого нет записи. Т.к. в таблице состояний этого сервера ISA не никаких записей об оригинальном SYN, пакет теряется и соединение прерывается.

Чтобы лучше понять, что происходит, посмотрите на следующие снимки экрана. На первом снимке вы видите внешнего клиента с IP адресом 192.168.1.3, который пытается соединиться с VIP массива ISA Server NLB по адресу 172.16.0.1, используя TCP порт источника 1041 и порт места назначения 25 (SMTP).

Рисунок ниже показывает отпечаток, полученный на внешнем интерфейсе сервера ISA, который принимает входящий SMTP запрос.

Рисунок ниже показывает netstat –na на сервере ISA члене массива, который получает запрос на входящее SMTP соединение. Обратите внимание, что состояние TIME_WAIT показывает, что клиент послал FIN перед тем как разъединиться. По умолчанию Windows 2000 держит пару сокетов открытой в течении 240 секунд, после закрытия активной сессии (FIN).

На рисунке ниже показан отпечаток, полученный на внутреннем интерфейсе сервера ISA члена массива, который не получил входящий запрос. Этот сервер ISA настроен как шлюз по умолчанию для опубликованного сервера. Опубликованный сервер пытается ответить внешнему клиенту, посылая ответы на шлюз свой по умолчанию. Проблема заключается в том, что этот сервер ISA не ожидает эти ответы. Динамический фильтр пакетов не был создан для того, чтобы позволить опубликованному серверу посылать так называемые «неразрешенные исходящие ответы «. Опубликованный сервер отвечает на соответствующий адрес и порт, но не получает ответов, потому что сервер ISA блокирует его ответы.

Рисунок ниже показывает netstat –na, демонстрирующее, что не было установлено соединение с внешним интерфейсом сервера ISA, на который опубликованный сервер посылал свои ответы. Снова, так как сервер ISA никогда не видел входящего запроса, и потому что члены массива NLB не делятся информацией о состоянии соединения, этот сервер ISA обрубает ответы от опубликованного сервера.

Должно быть понятно, что комбинация half NAT и NLB на внешнем интерфейсе может вызывать проблемы. Опубликованный сервер является клиентом SecureNAT и можете иметь только один шлюз по умолчанию. Если клиент SecureNAT настроен на адрес шлюза по умолчанию, который отличается от адреса на сервере, который принял входящий запрос, то пакет будет потерян. Не существует способа решить эту проблему на клиенте SecureNAT, но вы можете сделать кое-что на сервере ISA для решения этой проблемы.

Решение проблемы Half NAT

Решение проблемы half NAT заключается в настройке серверов ISA для выполнения full NAT для правил публикации сервера. Когда сервера ISA обеспечивают full NAT, IP адрес источника в перенаправляемом пакете заменяется на IP адрес внутреннего интерфейса сервера ISA, который принимает пакет. Опубликованный сервер не имеет проблем, чтобы послать ответ, потому что ему всего лишь необходимо послать запрос напрямую на внутренний адрес сервера ISA. Он не зависти от его конфигурации шлюза по умолчанию.

  • Внешний клиент посылает запрос на виртуальный IP адрес, используемый для публикации внутреннего сетевого сервера.
  • Все кадры посылаются всем членам массива. Алгоритм NLB определяет, какой сервер должен обработать запрос. Пакет передаются другими членами массива NLB.
  • Член массива NLB, принявший пакет перенаправляет пакеты на опубликованный сервер.
  • Опубликованный сервер имеет адрес шлюза по умолчанию 10.0.0.2. Однако, адрес шлюза в этом случае не имеет значения, потому что в IP адресе источника в пакете, посылаемом на сервер стоит 10.0.0.1, т.к. сервер ISA выполнил с пакетом преобразование full NAT. Опубликованный сервер посылает свой ответ на адрес 10.0.0.1, а сервер ISA перенаправляет ответ внешнему клиенту.

Full NAT решает проблему ассиметричной маршрутизации входящих запросов. Вы можете настроить сервер ISA, для работы по схеме full NAT, выполнив следующую последовательность шагов:

  • Перейдите к узлу Services в консоли ISA Management и остановитесь на Firewall service.
  • Нажмите на Start и выполните команду Run.
  • В поле Open неберите команду regedit
  • Перейдите к:

HKEY_LOCAL_MACHINE\system\currentcotrolset\services\fwsrv\parameters

  • Добавьте следующий параметр REG_DWORD:

Value name: UseISAAddressInPublishing
Data type: REG_DWORD
Radix: Binary
Value data: 1

  • После того, как вы добавите значение, перезагрузите службу Firewall. Я предпочитаю перезагрузить всю машину с ISA.

Примечание:
Хотя Full NAT решает проблему ассиметричной маршрутизации, появляется проблема с Web Publishing Rules. Т.к. IP адрес источника в перенаправляемом пакете заменяется на адрес внутреннего интерфейса сервера ISA, файлы журналов на опубликованном сервере больше не содержат полезной информации, касающейся запрашивающих клиентов.

Настройка IP адресации и параметров NLB

Помните, что вы можете настроить NLB для работы в режиме unicast или multicast. Нам нужен единый внешний интерфейс для поддержки уникального адреса и одного или нескольких адресов NLB. Нам также бы хотелось, чтобы этот единый интерфейс был способен общаться с другими интерфейсами NLB в массиве. Мы должны использовать режим multicast, чтобы удовлетворить все эти требования. Если у вас маршрутизатор Cisco, то вы должны задать необходимую статическую таблицу ARP. Что мы не хотим делать – это устанавливать второй интерфейс для поддержки IP адреса.

В этом примере мы назначим каждому из двух серверов ISA/VPN членов массива один IP адрес и один NLB адрес. IP адрес отличается на каждом сервере, а адрес массива одинаков на каждой машине. Выполните следующие шаги для первого члена массива:

  • Щелкните правой кнопкой мыши на My Network Places и выберите Properties. В окне Network and Dial-up Connections щелкните правой кнопкой мыши на внешнем интерфейсе (external interface) и выберите Properties.
  • В диалоговом окне Internet Protocol (TCP/IP) Properties нажмите на кнопку Advanced.
  • У машины уже есть уникальный назначенный ей IP адрес. Теперь вы должны ввести NLB адрес. Нажмите на кнопку Add в рамке IP addresses. В диалоговом окне TCP/IP Address укажите NLB адрес и маску подсети. Помните, что это должен быть правильный IP адрес в сети, напрямую присоединенной к внешнему интерфейсу сервера ISA. Нажмите Add, затем OK. Нажмите OK еще раз, чтобы закончить настройку IP адреса первого члена массива NLB.
  • Если не появилось сообщений об ошибках, то вы готовы к следующему шагу. На первом члене массива щелкните правой кнопкой мыши на внешнем интерфейсе и выберите Properties. Поставьте галочку в поле Network Load Balancing и нажмите на кнопку Properties.
  • Первое, что вы увидите – это закладка Cluster Parameters. В текстовом поле Primary IP address наберите IP адрес, который будет использовать весь кластер. Обратите внимание, что это первичный IP адрес кластера, а не первичный адрес сервера ISA/VPN. Вспомните различия между ними, которые мы обсуждали в статьях о NLB. Задайте необходимую маску подсети в текстовом поле Subnet mask. Full Internet name должна соответствовать записи DNS, которую вы ввели в диалоговом окне для Primary IP address. Поставьте галочку в поле Multicast support. Если вы хотите управлять кластером, задайте пароль, а затем поставьте галочку в поле Remote control.
  • Перейдите на закладку Host Parameters. Для первого члена массива поставьте значение 1 в текстовом поле Priority (Unique host ID). Каждый член массива должен иметь различный ID. Поставьте галочку в поле active, чтобы служба NLB автоматически запускалась вместе с сервером. В поле Dedicated IP address введите IP адрес – это также первичный адрес сервера ISA/VPN (IP адрес  наверху списка адресов в диалоговом окне Advanced TCP/IP Properties). Задайте необходимую маску подсети.
  • Перейдите к закладке Port Rules. Microsoft рекомендует использовать Port Rule по умолчанию, которое уже было создано для вас. Это позволяет балансировать нагрузку от входящих TCP и UDP соединений с использованием Single affinity (единого сходства). Single affinity привязывает IP адрес внешнего клиента к определенному серверу ISA/VPN на протяжении соединения. Для этого существует ряд причин: прочитайте другие статьи о NLB, если вам не понятно эти режимы, и что они значат. Установите Load Weight равными, если нет большого различия в конфигурациях аппаратного обеспечения на серверах. Помните, что алгоритм NLB не учитывает загрузку CPU или памяти, поэтому, если существуют принципиальные различия в конфигурации серверов, то вам необходимо вручную установить параметр Load Weight.
  • Два раза нажмите OK. Откройте Event Viewer. В System Log вы увидите две записи для WLBS. Эти записи подтверждают, что первый член массива ISA/VPN Server array объединяется сам с собой. Когда мы закончим, второй член массива будет объединяться с первым.

Теперь выполним следующие шаги для второго члена массива ISA/VPN Server Array:

  • Щелкните правой кнопкой мыши на My Network Places и выберите Properties. Щелкните правой кнопкой мыши на внешнем интерфейсе и выберите Properties. В этот раз мы настроим свойства NLB до того, как мы добавим виртуальный IP адрес в список адресов. Причина для этого заключается в том, что серверу не нравится копировать адрес, если он не знает, что это NLB адрес. Поставьте галочку в поле Network Load Balancing и нажмите на кнопку Properties.
  • На закладке Cluster Parameters, введите точно такую же информацию, какую вы ввели на закладке Cluster Parameters ранее для первого члена массива ISA/VPN. Помните, что массив не объединится, если настройки кластера различны для разных членов.
  • Перейдите к закладке Host Parameters. Задайте значение Priority для этого компьютера. Т.к. это второй член массива, а присвою ему значение 2. Поставьте галочку в поле Initial cluster state и введите первичный IP адрес для внешнего интерфейса сервера ISA/VPN в поле Dedicated IP address. Задайте необходимую маску подсети в поле Subnet mask. Вам не надо добавлять новые Port Rules, поэтому вы можете нажать OK.

    Сервис fwsrv

  • Нажмите на Internet Protocol (TCP/IP) и нажмите на кнопку Properties. В диалоговом окне Internet Protocol (TCP/IP) Properties нажмите кнопку Advanced.
  • В закладке IP Settings нажмите на кнопку Add. Мы должны добавить виртуальный IP адрес. Введите виртуальный IP адрес в диалоговом окне TCP/IP Address и задайте маску подсети. Нажмите Add. Список IP адресов должен содержать адрес первичного сервера ISA/VPN, и виртуальный IP адрес. Нажмите OK. Снова нажмите OK, а затем нажмите OK еще один раз.
  • Вам не надо делать никаких изменений в PortRules, поэтому дважды нажмите OK. Откройте Event Viewer и проверьте состояние массива. Если все работает правильно, вы должны увидеть объединенные члены массива 1 и 2.

Вы можете убедиться, что вы находитесь в режиме multicast, выполнив команду ping для IP адреса другого члена массива. Помните, что в режиме unicast, вам необходимо добавить второй NIC для поддержки IP адреса.

Теперь установите сервер ISA и создайте ваши правила публикации сервера (Server Publishing Rules). Нет особенных требований для конфигурации NLB; просто создайте правила публикации для сервера с помощью помощника Server Publishing Wizard. Единственное различие заключается в том, что вы будете использовать один из VIP во внешнем интерфейсе сервера ISA Server вместо IP адреса. Не забудьте сделать изменения в реестре, чтобы подключить full NAT после установки сервера ISA Server.

Примечание:
Я настоятельно рекомендую вам установить ISA Server Service Pack 1 и ISA Server Feature Pack 1. После их установки ISA Server будет работать более стабильно. Обратите внимание, что вам не надо использовать специальные возможности Feature Pack (такие как link translation или URLScan). Feature pack содержит обновления, которые помогут улучшить производительность вашей системы.

Резюме

В этой статье мы рассмотрели некоторые проблемы при использовании NLB для входящих соединений, используемый для правил публикации сервера. Вы увидели, как сервер ISA принимает входящие соединения NAT, и как вы можете контролировать выполнение этого процесса. Мы рассмотрели детали настройки NLB интерфейсов. Используя методы, описанные в этой статье, вы должны избежать проблем при публикации простых протоколов, которые не требуют дополнительных соединений.

www.isaserver.org








Смотрите также:

Tags: , , , ,

Readers Comments (Комментариев нет)




Да человек я, человек! =)

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]