Настройка маршрутизации запросов на сервере в DMZ
Зачем необходима маршрутизация?
Маршрутизация запросов может быть необходима в случаях:
- Если на сервере клиента заблокирован какой-либо внешний адрес. Например, Telegram или другой мессенджер. В этом случае настраивается первичный запрос на внешнем сервере (например, нашем) и дальнейшая переадресация на сервер клиента.
- В случае размещения основного сервера в защищенной зоне без прямого доступа из Internet. В данной ситуации маршрутизация настраивается на сервере DMZ для последующей переадресации запросов на основной сервер.
В инструкции ниже описано каким образом настраивается маршрутизация входящего и исходящего траффика. При этом для исходящего траффика рекомендуется использование стандартного прокси сервера, если такой сервер есть в корпоративной сети и для него не установлено блокировки на доступ к социальным сетям и мессенджерам.
Требуемые компоненты
Для настройки переадресации на шлюзовом сервере необходимо установить:
- Internet Information Server
- Компоненты IIS для поддержки ASP.Net 6 и сокетов
- Модуль переопределения URL адресов (смотри https://www.microsoft.com/ru-RU/download/details.aspx?id=7435)
- Модуль ARR (https://www.iis.net/downloads/microsoft/application-request-routing) Для его установки требуется ряд предварительно установленных компонент. Лучше запускать Web Platfrom Installer. Если это не возможно (например, сервер находится в закрытой зоне), то выполняется по следующей инструкции: https://blogs.technet.microsoft.com/erezs_iis_blog/2013/11/27/installing-arr-manually-without-webpi/
Примечание: для IIS 10 данные модули могут сразу не ставиться. В случае возникновения ошибки с тем, что требуется версия IIS 7 и позднее смотрите документацию http://markimarta.ru/windowsos/oshibka-pri-ustanovke-modulya-pereopredeleniya-url-adresov-2-dlya-iis-10-v-windows-10.html
Инструкция по настройке входящего траффика
Для настройки переадресации необходимо настроить на шлюзовом сервере:
- Настроить сайт IIS. Для него привязать используемый внешний адрес по протоколу https. Например, https://<endpoint>.ru.
- Открыть оснастку IIS [Переопределение URL адресов] для созданного сайта
- Добавить правило “Обратный прокси-сервер” для входящего трафика
- В открывшейся форме заполните
- Адрес внутреннего сервера
- Если внутренний сервер доступен по http протоколу, поставьте галочку для [Включить разгрузку SSL]
- Проверьте работу настроенной переадресации. Для этого откройте в браузере из внешней сети адрес сервера (внешний) и проверьте, что по данному адресу открывается интерфейс Sherlock Platform
Примечания:
- Для ограничения доступа к платформе можно ограничить маской открытие только API или отдельным страницам, которые обеспечивают получение сообщений от мессенджеров
- По результатам настройки в web.config сайта добавляются следующие строки:
<rewrite>
<rules>
<rule name=" Переадресация на внутренний сервер" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(https?)://" />
</conditions>
<action type="Redirect" url="{C:1}://<внутренний_адрес>/{R:1}" />
</rule>
</rules>
</rewrite>
Инструкция по настройке исходящего траффика
Для настройки переадресации необходимо настроить:
- Создать на шлюзовом сервере отдельный сайт или приложение внутри созданного выше сайта с названием Proxy. Скопировать для данного сайта содержимое приложения Proxy из дистрибутива Sherlock Platform.
- В случае, если приложение установлено внутри созданного для обработки внешних запросов сайт, то создать дополнительное правило переадресации:
- Добавить правило “Пустое правило” для входящего трафика
- В открывшейся форме заполните
- Название правила. Например, “Proxy”
- Для фильтрации трафика надо настроить шаблон для выбора запросов к приложению Proxy:
Для этого [Using] установить в “Regular Expressions” и [Pattern] в “proxy(.*)”.
- Тип действия установите в Нет, установите опцию “Остановить обработку последующих правил” в Да. (Action type = none)
- Поставьте приоритет для данного правила выше настроенного ранее правила для обратного Proxy сервера
- Добавить правило “Пустое правило” для входящего трафика
- В конфигурационных файлах на внутреннем сервере укажите дополнительную настройку:
<add key="SherlockProxyURL" value="<внутренний адрес DMZ сервера>" />
Данную настройку надо указать в следующих конфигурационных файлах:
- \www\appsettings.config
- \www\API\appsettings.config
- \ServiceManager\SherlockCRM.ServiceManager.exe.config
- Проверьте работу настроенной переадресации. Для этого отправьте сообщение из Sherlock Platform в мессенджеры.