本文介绍了将业务接入游戏盾防护后,如何获取客户端的真实IP。

背景介绍

游戏盾是FullNat代理模式,经过游戏盾的请求,其客户端的IP地址会变成游戏盾的IP地址。针对有获取客户端真实IP需求的游戏盾用户,本文提供了获取客户端IP的解决方案。

实现原理

游戏盾通过TCP协议的Option字段来携带和传递客户端的IP信息,俗称TOA。由于游戏盾的TOA协议格式属于游戏盾专有,服务器需要集成游戏盾提供的TOA模块才能获取客户端IP信息。游戏盾提供内核级、应用级、代码集成等多种方式来集成TOA模块,您可以根据实际情况选择最简单的方式进行集成。

选择集成方式

表 1. 部署架构支持情况
场景 支持的架构 不支持的架构
四层TCP协议获取客户端真实IP
  • 游戏盾->阿里云服务器/非阿里云服务器
  • 游戏盾->阿里云SLB-4层转发->阿里云服务器
游戏盾->非阿里云SLB-4层转发->服务器
七层HTTP/HTTPS协议获取客户端真实IP
  • 游戏盾->阿里云服务器/非阿里云服务器
  • 游戏盾->阿里云SLB-4层转发->阿里云服务器
  • 游戏盾->阿里云SLB-7层转发(包含WAF/高防IP的7层接入)->阿里云服务器
  • 游戏盾->非阿里云SLB-4/7层转发->服务器
说明 游戏盾是四层转发,不托管HTTPS证书,无法查看您HTTPS数据流中的数据信息。所以,七层协议获取客户端真实IP不是通过XFF字段获取的,是通过在服务端的TOA模块适配直接获取客户端真实IP。
表 2. 服务器环境支持情况
模块 Linux Windows
内核TOA模块(无需修改代码) 部分支持 不支持
应用层Hook-TOA模块(无需修改代码) 支持 部分支持
应用层代码集成式模块(需要做代码集成) 支持 支持

选择实现方式

  • Linux

    Linux服务器环境,优先选择安装应用层Hook-Toa模块,内核模块暂无更新与维护。

    如果内核版本在游戏盾支持的列表中,选择安装内核模块。不在支持列表中,则必须集成应用层Hook-Toa模块。

    如果无法使用应用层Hook-Toa模块,再通过修改应用内的代码来集成TOA。

    具体操作,请参见Linux

  • Windows

    Windows服务提供部分程序的应用层Hook-TOA模块,优先选择集成应用层Hook-Toa模块。

    如果无法通过Hook方式集成,则通过在应用内修改代码来集成TOA。

    具体操作,请参见Windows