
# WAF获取真实客户端IP是从报文中哪个字段获取到的?
根据WAF不同的接入模式判断从报文中的哪个字段来获取真实客户端IP。
#### 云模式-CNAME接入、独享模式接入
WAF引擎会根据防护规则确定是否代理转发请求去后端，如果WAF配置了基于IP的规则（比如黑白名单、地理位置、基于IP的精准访问防护规则），那么WAF引擎就会获取真实IP后才能放行或者拦截代理请求。获取真实IP的方法基于以下原则：
- 在WAF中开启了代理，即添加域名时，"是否使用七层代理"选择了"是"，按以下顺序获取客户端IP：
  1. 优先取"upstream"中配置的客户端IP头列表，即在域名的基本信息页面配置的"IP标记"，具体的操作请参见[配置攻击惩罚的流量标识](https://support.huaweicloud.com/usermanual-waf/waf_01_0270.html)。如果未取到，执行[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。
获取客户端的真实IP的具体方法，详见[获取客户端真实IP](https://support.huaweicloud.com/bestpractice-waf/waf_06_0020.html)。
#### 云模式-ELB接入
1. 优先取"upstream"中配置的客户端IP头列表，即在域名的基本信息页面配置的"IP标记"，具体的操作请参见[配置攻击惩罚的流量标识](https://support.huaweicloud.com/usermanual-waf/waf_01_0270.html)。如果未取到，执行[2]。
   ![](https://support.huaweicloud.com/waf_faq/public_sys-resources/note_3.0-zh-cn.png)
   如果想以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"字段对应的值。
 
