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

Azure Web App对192.168.*客户端IP返回403错误排查求助

排查Azure Web App中192.168.* IP请求被403拦截且未到达控制器的思路

针对你遇到的这个问题,结合Azure Web App和Web API 2的运行环境,我整理了几个实用的排查方向,你可以按顺序逐一验证:

1. 优先检查Azure Web App的访问限制规则

虽然你提到应用的阻止列表为空,但Azure Web App本身的访问限制功能(在门户的「网络」→「访问限制」面板)可能配置了允许列表而非阻止列表。如果你的Web App只允许特定公网IP访问,192.168.*这类私有内网IP不在允许范围内,会直接被Azure的前端网关拦截,根本不会进入到你的应用控制器,自然不会产生控制器日志。

另外,如果你的Web App前端部署了Azure Front Door或CDN,也要检查这些服务的IP访问规则,它们也可能提前拦截不符合要求的内网IP请求。

2. 验证Web App的身份验证/授权配置

检查Azure门户中Web App的「身份验证」设置:

  • 如果开启了Azure AD或其他身份提供商的验证,确认「未经过身份验证的请求」的处理方式是否设置为拒绝。如果是,那些未携带有效身份凭证的192.168.*请求会被Azure的身份验证层直接拦截,不会到达你的控制器。
  • 也可以临时将处理方式改为「允许」,测试这类请求是否能正常到达控制器,以此验证是否是身份验证导致的拦截。

3. 排查虚拟网络集成与NSG规则

192.168.*是私有内网IP,这类请求能到达Azure Web App,大概率是通过VPN/Express Route或虚拟网络集成实现的:

  • 检查Web App的虚拟网络集成配置是否正常,确认对应的虚拟网络中,是否有网络安全组(NSG)的入站规则拦截了192.168.*段的IP请求。
  • 同时检查是否配置了Blob存储的虚拟网络服务端点,虽然这一般不会影响Web App本身的访问,但可以作为排除项确认。

4. 分析Azure平台级日志

控制器日志只记录应用层的请求,而网关层面的拦截需要查看Web App的平台日志:

  • 进入Azure门户的「监控」→「日志」,使用Kusto查询筛选192.168.*的403请求,重点关注子状态码来定位原因:
    AppServiceHTTPLogs
    | where ClientIP startswith "192.168."
    | where StatusCode == 403
    | project TimeGenerated, ClientIP, StatusCode, ScStatus, ScSubStatus, RequestUri
    
    比如ScSubStatus为403.7表示需要客户端证书,403.14表示目录列表被禁止,这些细节能快速缩小排查范围。

5. 检查Web.config中的IIS级安全规则

虽然应用阻止列表为空,但Web.config中可能存在IIS层面的IP限制或URL重写规则:

  • 查看Web.config文件中的<ipSecurity>节点,是否有针对192.168.*段的拒绝配置;
  • 检查<rewrite>规则,是否有将特定IP的请求直接返回403的逻辑。这些规则在IIS层面生效,请求不会到达控制器。

6. 排除Blob存储的IP限制(次要排查项)

由于你提到请求未到达控制器,这个可能性较低,但可以快速确认:检查Blob存储容器的「网络」设置,是否配置了IP允许/阻止规则,避免后续控制器调用Blob时的干扰(不过这不会导致请求未到控制器就被拦截)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:44:16