Я пытаюсь запустить следующее, чтобы сбросить 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 необходимые порты по умолчанию заблокированы (что хорошо).
Вам нужно открыть два набора портов:
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 близок к правильному, но открывает связь с 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
name="xxx"
dir=in
action=allow
description="xxx"
enable=yes
localport=135
localport=RPC
RPC
который сообщает брандмауэру Windows, находится ли он в динамическом диапазоне портов, чтобы разрешить его без необходимости указывать каждый порт отдельноprotocol=tcp
TCP
поэтому мы указываем это как протоколremoteip=x.x.x.x