Как настроить брандмауэр Windows для разрешения всех портов, используемых IIS Express

9

Мое понимание этого Technet статьи , на странице , которая привела меня туда *, что я могу настроить брандмауэр Windows , чтобы весь входящий трафик на любом порту используется указанный исполняемый файл.

Я понимаю, что ответом по умолчанию будет «Не делай этого», поэтому, пожалуйста, поймите ; Я использую Visual Studio и IIS Express внутри виртуальной машины и хочу иметь возможность подключаться к операционной системе хоста для целей тестирования, и поэтому не очень обеспокоен последствиями для безопасности открытия всех портов, используемых IIS Express.

Я создал входящее правило с установленным значением Program %ProgramFiles% (x86)\IIS Express\iisexpress.exe, которое является исполняемым файлом, работающим в соответствии с диспетчером задач. Все остальные спецификации правил оставлены пустыми (любой локальный адрес, любой удаленный адрес и локальный порт, любой удаленный порт, «любые» разрешенные пользователи, «любые» разрешенные компьютеры). Тем не менее, соединение работает, только если у меня есть правило для определенного порта, обслуживаемого IIS Express.

Так как это облегчит мою жизнь (и, в основном, в принципе, так как technet говорит, что это должно работать), я бы предпочел не добавлять правило брандмауэра для каждого приложения, которое я создаю.

* Задача «Создать правило, позволяющее программе прослушивать и принимать входящий сетевой трафик на любых необходимых ей портах».

user1039855
источник
1
Поскольку вы упомянули, что безопасность не является проблемой, есть ли проблема с открытием всех портов?
Абраксас
Просто выключите брандмауэр в гостевой операционной системе .. :-) Я всегда отключаю все, что могу в моих гостевых ОС ..
Коди Браун

Ответы:

1

Здесь есть пара проблем. Во-первых, iisexpress.exeпроцесс не отвечает за прослушивание HTTP-трафика. Эта функциональность реализована http.sys как часть режима ядра сетевого стека Windows . (Это было сделано из соображений производительности. Для получения дополнительной информации см. Введение в архитектуры IIS .) Поэтому создание правила для iisexpress.exeничего не даст.

Во-вторых, http.sysпо умолчанию запрещается запускать программы, не являющиеся администраторами, для прослушивания других компьютеров. Согласно разделу «Обслуживание внешнего трафика с помощью WebMatrix» , вам нужно запустить эту команду в административной командной строке, чтобы все пользователи могли прослушивать другие машины с помощью http.sys:

netsh http add urlacl url=http://MACHNAME:PORT/ user=everyone

Замените MACHNAMEна имя хоста, которое будет использоваться для связи с сайтом и PORTс портом трафика. Я читал, что использование *вместо определенного имени хоста позволяет ему прослушивать все имена / интерфейсы, но я лично не проверял это, и +вместо этого используется некоторая документация . В любом случае, после настройки ACL вы можете создать правило для входящего брандмауэра для порта .

Дальнейшее чтение: Настройка HTTP и HTTPS .

Боковой комментарий: Там есть фактическая переменная среды , которая указывает на 32-битной версии Program Files: %PROGRAMFILES(X86)%. (Путь не был твоей проблемой, хотя.)

Бен Н
источник