我已经读到,要在 IIS8 中对网站进行 IP 限制,以仅允许一个或多个 IP 并拒绝其他所有人,您可以执行以下操作:
- 将“未指定客户端的访问”设置为“拒绝”
- 添加 IP 地址以“允许”
(如下面的截图所示)
但是,当我执行此操作时(如下面的屏幕截图所示),我仍然能够从其他 IP 访问该网站。
这里缺少什么?还有其他需要做的事情吗?
我尝试了 iisreset,但该页面不是测试机器上的浏览器缓存,因此应该无法访问。
答案1
如果安装了 IIS Windows 功能下的 IP 安全,您可以将其添加到您的 web.config 中以阻止 IP:
<location path="Default Web Site">
<system.webServer>
<security>
<ipSecurity allowUnlisted="false"><!-- this line blocks everybody, except those listed below -->
<clear/> <!-- removes all upstream restrictions -->
<add ipAddress="192.168.100.1" />
<add ipAddress="169.254.0.0" subnetMask="255.255.0.0" />
</ipSecurity>
</security>
</system.webServer>
</location>
答案2
后很多乱七八糟的事情,我发现下面的方法对我有用(win server 2012 R2 上的 IIS 8.5.X)
确保已启用 web.config 管理功能
- 在互联网信息服务
- 单击根服务器
- 双击功能委托(管理下)
- 向下滚动至IP 地址和域限制
- 改成读/写
(就我的情况而言,它是只读的,这就是问题所在)
然后编辑 web.config 以包含
<system.webServer>
<security>
<!-- this line blocks everybody, except those listed below -->
<ipSecurity allowUnlisted="false">
<!-- removes all upstream restrictions -->
<clear />
<add ipAddress="X.X.X.X" allowed="true" />
<add ipAddress="127.0.0.1" allowed="true" />
</ipSecurity>
</security>
</system.webServer>
其中 XXXX 是您希望允许的 IP(为您希望允许的每个 IP 或 IP 子网组合添加这样的一行)
值得注意的文档似乎遗漏了允许=“真”以及任何提及要求允许委托该功能。感谢@Summit 提供的提示这里
答案3
客户端和 IIS 服务器之间有代理吗?您可以在 IIS 日志中显示客户端来自哪个 IP。
答案4
在 IIS 7 及更高版本中执行文件级 IP 限制的步骤
在 IIS 管理器中->在内容视图中,突出显示特定文件->在操作窗格上单击“切换到功能视图”->在功能视图中,双击“IP 地址和域限制”,然后设置限制
我认为它也适用于经典的 ASP 页面。