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

Как разрешить (удаленный) IISReset через брандмауэр на Win Server 2008

Я пытаюсь запустить следующее, чтобы сбросить IIS на удаленном компьютере.

IISReset <remoteMachine>

Если я отключу брандмауэр домена, все будет работать нормально. Когда брандмауэр включен, я получаю

Сервер RPC недоступен.

Сначала я попытался включить удаленное администрирование (RPC-EPMAP) и любые другие правила, которые выглядели хотя бы слабо связанными. Затем я попытался включить все предопределенные правила, но безуспешно.

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

netsh advfirewall firewall add rule name="Remote IIS inetinfo" dir=in action=allow description="Remote IIS Service Managment" program="%systemroot%\System32\inetsrv\inetinfo.exe" enable=yes

netsh advfirewall firewall add rule name="COM+ Remote Administration (All Programs)" dir=in action=allow description="" program="%windir%\system32\dllhost.exe" enable=yes localport=RPC protocol=tcp

Мне пришлось использовать их для решения проблем WMI / RPC при попытке доступа к службам IIS. Ошибки вроде:

Creating an instance of the COM component with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} from the IClassFactory failed due to the following error: 800706ba.

135/tcp это только порт-маппер. Он используется для согласования второго подключения, которое выполняется на высокий порт (49152-65535/tcp в Server 2008), поэтому вам также необходимо разрешить порт для этого соединения. Чтобы облегчить обход межсетевого экрана, можно заблокировать порт.

Основная причина, как определили другие, заключается в том, что IISReset требует RPC, и по умолчанию в более новых версиях Windows необходимые порты по умолчанию заблокированы (что хорошо).

Вам нужно открыть два набора портов:

  1. 135/tcp - Это порт-маппер, как уже упоминали другие. Он согласовывает порт в RPC Dynamic Port Range общаться на
  2. RPC Dynamic Port Range - Это согласованный выше диапазон портов, который используется для выполнения задач. Мне не удалось найти действующую документацию для этого диапазона. Как отмечает @Ansgar Wiechers, это высокий порт, который был изменен в Windows Server 2008. Я подозреваю, что это изменение поведения является причиной того, что документация (https://support.microsoft.com/en-us/help/217351 Формально Microsoft KB217351 проблемы конфигурации диапазона портов DCOM) был удален.

Если вы используете брандмауэр Windows, он предоставляет мнемонику для открытия диапазона портов. Ответ @Greg Bray близок к правильному, но открывает связь с inetinfo.exe, который, насколько я могу судить, не нужен.

У нас работает:

netsh advfirewall firewall add rule name="COM+ (DCOM-In) Port Mapper" dir=in action=allow description="Allow Communication to the DCOM Service Control Manager" enable=yes localport=135 protocol=tcp remoteip=x.x.x.x

netsh advfirewall firewall add rule name="COM+ (DCOM-In) Dynamic Port Range" dir=in action=allow description="Allow DCOM Communication" enable=yes localport=RPC protocol=tcp remoteip=x.x.x.x

Я объясню каждый раздел приведенных выше команд:

  • netsh advfirewall firewall add rule
    • Мы собираемся добавить правило в брандмауэр Windows
  • name="xxx"
    • Название этого правила; Настройте так, как считаете нужным
  • dir=in
    • Это входящее правило
  • action=allow
    • Мы собираемся разрешить общение
  • description="xxx"
    • Описание; Настройте по своему усмотрению.
  • enable=yes
    • Мы хотим включить эти правила
  • localport=135
    • В этом первом использовании мы явно открываем номер порта
  • localport=RPC
    • Во второй команде мы устанавливаем это значение RPC который сообщает брандмауэру Windows, находится ли он в динамическом диапазоне портов, чтобы разрешить его без необходимости указывать каждый порт отдельно
  • protocol=tcp
    • Все вызовы RPC используют TCP поэтому мы указываем это как протокол
  • remoteip=x.x.x.x
    • Это очень важно; он говорит, что это правило брандмауэра должно применяться только к указанному IP-адресу. Хотя это не обязательно, НАСТОЯТЕЛЬНО рекомендуется указать это, чтобы точно определить правило межсетевого экрана.