首页/云/云网络与负载均衡速查/四层获取真实客户端 IP
负载均衡54 条

四层获取真实客户端 IP

四层转发不解析 HTTP,后端看到的源地址是负载均衡地址:腾讯云提供 TOA 内核模块用于解析真实源地址;另有 Proxy Protocol 方式在连接前插入客户端信息,需要后端支持相应解析。

四层为什么拿不到真实 IP

四层转发不解析 HTTP,只按连接做地址转换,因此后端应用看到的源地址是负载均衡的地址,而不是真实客户端。需要按客户端做风控、限流、日志追溯时这个问题就必须解决。常见方案有两条:一是加载特定内核模块解析真实源地址(如腾讯云的 TOA),二是在连接前插入 Proxy Protocol 头携带客户端信息,由后端负责解析;选哪条取决于产品支持与后端内核能力。

基本信息

问题四层转发改写源地址,应用取到的对端是负载均衡
方案 A内核模块解析真实源地址(如腾讯云 TOA)
方案 BProxy Protocol:转发时插入客户端地址信息,后端需解析
验证应用日志或连接记录中确认源地址是否为真实客户端

典型使用场景

  • 按客户端 IP 做访问控制与限流的网关类服务
  • 审计日志需要记录真实来源地址,满足合规要求
  • 风控与反作弊依赖来源地址做画像与拦截
  • 排查地域性访问异常时,需要区分不同来源的请求

核验后端看到的源地址

核验后端看到的源地址
curl -s http://10.0.1.30/whoami; echo
# 结果应为真实客户端地址,而不是负载均衡地址
# 同时检查应用日志中的 remote_addr 字段是否一致

两种方案对比

维度内核模块(TOA 类)Proxy Protocol
改造位置后端主机内核后端应用解析
应用改动通常无需改动需支持协议解析
适用厂商生态内协议兼容性更广
风险内核兼容性不支持的应用会解析失败
方案选择取决于产品与后端内核能力:无法改内核时优先考虑支持 Proxy Protocol 的组合,或接受应用层记录代理地址。

落地时的注意点

无论选哪种方案,都要先在一台非关键后端上验证再全量铺开,因为这两种机制都可能让服务直接不可用:内核模块版本不匹配可能无法加载,Proxy Protocol 开启后,后端若仍按普通 TCP 解析,会把协议头当成业务数据读到,出现难以理解的解析错误。验证通过后还要同步调整风控与限流策略——此前基于负载均衡地址做的规则,在拿到真实源地址后需要重写,否则可能把正常客户端误封。

易错点

  • 四层监听下直接用 remote_addr 做风控,把负载均衡地址误封
  • 跨云架构套用同一方案,不同厂商机制并不通用
  • 开启 Proxy Protocol 但后端未做解析,业务数据解析错乱
  • 拿到真实源地址后未重写限流规则,原有白名单意外失效

数据来源与参考

  • 腾讯云 TOA 文档
  • 腾讯云 CLB 四层获取真实 IP 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌