You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置IIS 8.5 IP地址和域限制后,允许IP访问出现404错误

问题排查与解决方案

一、允许IP访问出现404的原因及排查步骤

出现这种情况的核心逻辑是:被拒绝的IP在IIS的IP拦截环节就被阻断,返回403;而允许的IP通过了拦截,但后续请求资源时找不到对应内容,返回404。具体排查方向如下:

  1. 默认文档配置缺失
    当允许IP直接访问站点根域名(未指定具体文件名)时,如果站点未配置正确的默认文档(比如index.html、default.aspx),或者默认文档列表中的文件在服务器上不存在,就会返回404。

    • 排查方法:在IIS管理器中找到站点→默认文档,检查列表中是否有实际存在的文件;或者直接访问具体存在的文件(如http://你的域名/index.html),验证是否能正常打开。
  2. IP规则应用范围错误
    如果允许IP的规则仅应用在站点的某个子目录/应用程序上,而非站点根级别,那么访问根目录时规则虽然允许了IP,但根目录的资源可能因其他配置(如权限、默认文档)导致404。

    • 排查方法:在IIS管理器中找到站点→IP地址和域限制,查看规则的"作用域"是否为站点级别。
  3. 文件/目录权限不足
    IIS的匿名用户(IUSR)或IIS_IUSRS组没有站点根目录的读取权限时,会返回404(部分场景下权限不足会伪装成资源不存在)。

    • 排查方法:右键站点根目录→属性→安全,确认IUSR或IIS_IUSRS组拥有读取权限。
  4. URL重写规则冲突
    如果站点配置了URL重写规则,允许IP通过后,重写规则可能将请求导向了不存在的路径,导致404。

    • 排查方法:在IIS管理器中找到站点→URL重写,暂时禁用所有重写规则,重新测试访问。
  5. 查看IIS日志定位具体原因
    IIS日志会记录404的子状态码,能精准定位问题:

    • 404.0:资源确实不存在;
    • 404.3:MIME类型配置错误;
    • 404.13:请求内容长度超出限制等。
    • 操作方法:在IIS管理器中找到站点→日志,打开日志文件,查找允许IP的访问记录,查看sc-status和sc-substatus字段。
  6. IP限制功能设置错误
    确认IP地址和域限制的功能设置中,"访问类型"为拒绝未指定的客户端,且允许列表中的IP地址/范围填写正确(无拼写错误、子网掩码正确)。

二、其他限制IP访问的方法

1. 使用URL重写模块

安装IIS URL重写模块后,可通过web.config配置规则拦截IP:

<system.webServer>
  <rewrite>
    <rules>
      <!-- 拒绝指定IP范围 -->
      <rule name="Block Specific IPs" stopProcessing="true">
        <match url=".*" />
        <conditions>
          <add input="{REMOTE_ADDR}" pattern="^192\.168\.1\.[0-9]+$" />
        </conditions>
        <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Access Denied" />
      </rule>
      <!-- 仅允许指定IP,拒绝其他 -->
      <rule name="Allow Only Specific IPs" stopProcessing="true">
        <match url=".*" />
        <conditions>
          <add input="{REMOTE_ADDR}" pattern="^192\.168\.1\.100$" negate="true" />
        </conditions>
        <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Access Denied" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

2. 直接编辑Web.config的ipSecurity节

这是IP限制功能的配置文件形式,需确保已安装IP and Domain Restrictions功能:

<system.webServer>
  <security>
    <ipSecurity allowUnlisted="false">
      <!-- 允许单个IP -->
      <add allowed="true" ipAddress="192.168.1.100" />
      <!-- 允许IP段 -->
      <add allowed="true" ipAddress="192.168.1.0" subnetMask="255.255.255.0" />
    </ipSecurity>
  </security>
</system.webServer>

3. Windows防火墙规则(网络层拦截)

在Windows Defender防火墙高级安全中创建入站规则:

  • 选择端口,指定80/443端口;
  • 设置阻止连接或允许连接,添加目标IP范围;
  • 应用规则到域/专用/公用网络。
    这种方式拦截效率更高,不会到达IIS应用层。

4. 代码层面拦截(针对ASP.NET站点)

在Global.asax的Application_BeginRequest事件中检查IP:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    // 允许的IP列表
    List<string> allowedIps = new List<string> { "192.168.1.100", "192.168.1.101" };
    if (!allowedIps.Contains(Request.UserHostAddress))
    {
        Response.StatusCode = 403;
        Response.End();
    }
}

内容的提问来源于stack exchange,提问作者Som

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:40:41