Назад | Перейти на главную страницу

Публикация нескольких веб-серверов с обратным прокси на локальном хосте с сохранением исходного IP-адреса клиента и имени хоста

Я использую ISA на Windows Server 2003 для публикации нескольких веб-серверов, размещенных на одном компьютере. Настройте следующим образом:

Я мог направлять запросы в зависимости от имени хоста на конкретный сервер, установив правила публикации в ISA. ISA позволила мне сохранить исходный IP-адрес клиента и запрошенное имя хоста, а также имела множество других функций, таких как проверка запросов, сопоставление URL-адресов, перезапись и кеширование.

Теперь я использую Windows Server 2008 R2, ISA здесь не работает, TMG - это огромная PITA (и даже не работает с моей настройкой IP - по умолчанию gw 10.255.255.1, маска подсети 255.255.255.255) и ISA в целом оказалась сложной задачей, когда дело касалось RPC и другого внутреннего сетевого трафика. Поэтому я ищу способ сделать то же самое, особенно когда дело доходит до сохранения исходного IP-адреса клиента. Я попробовал Faststream IQ Proxy, который выглядел многообещающим, особенно потому, что он установил собственный драйвер NDIS, и публикация сервера работала нормально, но IP-адрес клиента всегда теряется. Кандидатами могут быть делегат и кальмар. но они не устанавливают никаких драйверов сетевого уровня, поэтому им кажется невозможным сохранить исходный IP-адрес.

В настоящее время я использую IIS на внешнем IP-адресе и 127.0.0.1 и использую ARP с обратным прокси-сервером для публикации других серверов, однако он работает не слишком хорошо, и IP-адрес клиента по-прежнему теряется для прокси-серверов. Честно говоря, это дерьмо, и мне очень жаль, что IIS 7.5 до сих пор не включает жизнеспособное решение обратного прокси, как это было в ISA много лет назад.

Кто-нибудь знает программное обеспечение, которое архивирует те же эффекты публикации веб-сервера, что и в ISA, предпочтительно с приличным графическим интерфейсом (хотя я мог бы также жить с файлами конфигурации), которое обратное прокси-запросы к локальным веб-серверам без потери информации об имени хоста и исходном IP-адресе клиента ? Или я обречен на работу TMG в моей настройке?

На заметку, TMG можно установить с помощью некоторых уловок:

  1. Установите адаптер Microsoft Loopback (hdwwiz)

  2. Установите статический адрес в диапазоне частных IP-адресов (например, 10.0.0.1/255.0.0.0, без GW по умолчанию) для адаптера обратной связи и отключите регистрацию DNS в настройках TCP / IP для адаптера.

  3. Установить TMG

  4. Обновите TMG до SP1 или используйте загрузочную установку

  5. Необязательно: перейти на DC / RODC

  6. Необязательно: если сервером является DNS, добавьте «настоящий» адаптер как HKLM \ SYSTEM \ CurrentControlSet \ Services \ DNS \ Parameters \ PublishAddresses, чтобы частный адрес не был опубликован.

  7. Привяжите IIS с netsh http iplisten к 127.0.0.1 и 10.0.0.1

  8. Используйте правила публикации сервера в TMG для публикации 10.0.0.1

  9. Зарегистрируйте дополнительные адреса на адаптере обратной связи и привяжите свои приложения к адресам (10.0.0.2, 10.0.0.3 и т. Д.), Чтобы вы также могли опубликовать их в TMG

Не так гладко, как в ISA, но работает. Обязательно установите TMG перед переходом на DC, потому что Microsoft не поддерживает установку TMG на DC.

Вероятно, вам не нужно сохранять исходный IP-адрес в фактическом заголовке TCP. Многие установки обратного прокси позволяют передавать исходный IP-адрес, с которого был сделан запрос, в качестве заголовка HTTP. (См. Например: Директива конфигурации Squid forwarded_for.)

Apache с mod_proxy также сделает свое дело, а также добавит заголовки X-Forwarded-For для трафика с обратным проксированием. Это может быть удобно, поскольку на вашем компьютере уже запущен Apache.