文档首页/ Web应用防火墙 WAF/ 常见问题/ 防护日志/ WAF获取真实IP是从报文中哪个字段获取到的?
更新时间:2024-10-30 GMT+08:00

WAF获取真实IP是从报文中哪个字段获取到的?

根据WAF不同的接入模式判断从报文中的哪个字段来获取客户端的真实IP。

云模式-CNAME接入、独享模式接入

WAF引擎会根据防护规则确定是否代理转发请求去后端,如果WAF配置了基于IP的规则(比如黑白名单、地理位置、基于IP的精准访问防护规则),那么WAF引擎就会获取真实IP后才能放行或者拦截代理请求。获取真实IP的方法基于以下原则:

  • 在WAF中开启了代理,即添加域名时,“是否使用七层代理”选择了“是”,按以下顺序获取源IP:
    1. 优先取“upstream”中配置的源IP头列表,即在域名的基本信息页面配置的“IP标记”,具体的操作请参见配置攻击惩罚的流量标识。如果未取到,执行2

      如果想以TCP连接IP作为客户端IP,“IP标记”应配置为“remote_addr”

    2. 取config中配置的源IP头列表“cdn-src-ip”字段对应的值,未取到,执行3
    3. “x-real-ip”字段的值,未取到,执行4
    4. “x-forwarded-for”字段左边开始第一个公网IP,未取到,执行5
    5. 取WAF看到的TCP连接IP,“remote_addr”字段对应的值。
  • 在WAF中未开启代理,即添加域名时,“是否使用七层代理”选择了“否”,直接取“remote_ip”字段的值为真实IP。

云模式-ELB接入

  1. 优先取“upstream”中配置的源IP头列表,即在域名的基本信息页面配置的“IP标记”,具体的操作请参见配置攻击惩罚的流量标识。如果未取到,执行2

    如果想以TCP连接IP作为客户端IP,“IP标记”应配置为“remote_addr”

  2. 取config中配置的源IP头列表“cdn-src-ip”字段对应的值,未取到,执行3
  3. “x-real-ip”字段的值,未取到,执行4
  4. “x-forwarded-for”字段左边开始第一个公网IP,未取到,执行5
  5. 取ELB看到的TCP连接IP,“remote_addr”字段对应的值。