9

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

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

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

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

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

1 ответ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)% . (Путь не был твоей проблемой, хотя.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .