Как разрешить (удаленный) сброс IIS через брандмауэр на Win Server 2008
Я пытаюсь запустить следующее, чтобы сбросить IIS на удаленной машине.
IISReset
Если я отключаю брандмауэр домена, все работает нормально. При включенном брандмауэре я получаю
Сервер RPC недоступен.
Сначала я попытался включить удаленное администрирование (RPC-EPMAP) и любые другие правила, которые выглядели даже незначительно связанными. Затем я попытался включить все предопределенные правила, но безуспешно.
3 ответа
Вы можете попробовать следующие командные строки, чтобы добавить входящие правила для брандмауэра на веб-сервере:
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 требуемые порты по умолчанию блокируются (что хорошо).
Вам нужно открыть два набора портов:
135/tcp
- Это порт-маппер, как уже упоминали другие. Договаривается о порте вRPC Dynamic Port Range
общаться наRPC Dynamic Port Range
- Это диапазон портов, согласованный выше, который используется для выполнения задач. Мне не удалось найти какую-либо документацию, которая все еще активна для этого диапазона. Как @Ansgar Wiechers упоминает, что это высокий порт и изменился в Windows Server 2008. Я подозреваю, что это изменение в поведении, поэтому документация ( https://support.microsoft.com/en-us/help/217351 Формально Microsoft KB217351 DCOM проблемы конфигурации диапазона портов) был удален.
Если вы используете брандмауэр Windows, он предоставляет мнемонику для открытия диапазона портов. @Greg Bray's Response близок к правильному, но он открывает связь с 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
поэтому мы указываем это как протокол
- Все вызовы RPC используют
remoteip=x.x.x.x
- Это супер важно; в нем говорится, что это правило брандмауэра должно применяться только к указанному IP-адресу. Хотя это и не требуется, настоятельно рекомендуется указать это для узкого определения правила брандмауэра.