如何配置Windows防火墙以允许IIS Express使用所有端口


9

我对这篇Technet文章的理解是,按照进入我的页面 *,我可以配置Windows防火墙以允许指定可执行文件使用的任何端口上的所有入站流量。

我意识到事实上的答案很可能是“不要这样做”,所以请理解;我正在虚拟机中运行Visual Studio和IIS Express,并且希望能够从主机OS进行连接以进行测试,因此并不真正关心打开IIS Express使用的所有端口的安全性。

我创建了一个入站规则%ProgramFiles% (x86)\IIS Express\iisexpress.exe,其中Program设置为,这是根据任务管理器运行的可执行文件。所有其他规则规范都保留为空(任何本地地址,任何远程地址和本地端口,任何远程端口,“任何”允许的用户,“任何”允许的计算机)。但是,只有在我有针对IIS Express服务的特定端口的规则时,该连接才有效。

由于这会使我的生活更轻松(并且在很大程度上,因为technet认为它应该可以工作),因此,我宁愿不必为我创建的每个应用程序添加防火墙规则。

*任务“创建一个规则,使程序可以侦听并接受所需的任何端口上的入站网络流量。”


1
既然您提到安全性不是问题,那么打开所有端口是否有任何问题?
Abraxas

只需关闭防火墙在客户操作系统.. :-)我一直禁止一切我可以在客户机操作系统..
Kody布朗

Answers:


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,就可以为port创建入站防火墙规则。

进一步阅读: 配置HTTP和HTTPS

旁注:有一个实际的环境变量,它指向程序文件的32位版本:%PROGRAMFILES(X86)%。(不过,这不是您的问题。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.