文档首页 > > 最佳实践>

如何获取真实源IP

如何获取真实源IP

分享
更新时间:2021/02/05 GMT+08:00

业务接入DDoS高防后,经过高防转发的流量到服务端之后真实源IP将被隐藏,在业务应用开发中,通常需要获取客户端真实的IP地址。例如,投票系统为了防止刷票,需要通过获取客户端真实IP地址,限制每个客户端IP地址只能投票一次。

本章节介绍如何通过安装DDoS高防提供的TOA模块获取真实源IP。

约束条件

源站服务器为以下Linux操作系统时,您通过安装DDoS高防提供的TOA模块获取高防转发后流量的真实源IP。
  • CentOS6.5(对应Linux内核版本2.6.X)
  • CentOS7(对应Linux内核版本3.10.X)
  • toa_common(通用版本toa,一般针对Linux内核3.0及其以上的系统,如Ubuntu 14/16 、Suse 11/42等)
  • toa_linux-2.6.32-220.23.1.el6.x86_64.rs(对应指定的版本:linux-2.6.32-220.23.1.el6.x86_64.rs)

如果源站服务器使用了其他操作系统(liruUbuntu、SUSE等),请参考TOA插件配置定制编译安装TOA插件以获取真实源IP。

应用场景

安装高防TOA插件是基于四层协议(TCP)获取真实源IP的方法。如果您的业务部署场景为DDoS+WAF,请参考如何在启用Web应用防火墙后获取访问者真实IP获取七层协议(HTTP)真实源IP。

原理说明

通常情况下,经过高防的流量会修改真实源IP与高防IP(由真实源IP->高防IP转换为回源IP->源站IP),用户在自己的源站服务器上看到的流量源IP是回源IP,如图1所示。

图1 原理说明
  • 高防IP:华为云为用户提供的IP,用来代理源站IP,确保源站的稳定可靠。
  • 回源IP:用户在自己的源站服务器上看到的所有流量的源IP就是回源IP。
  • 源站IP:用户的实际业务对外提供服务所使用的公网IP地址。

操作步骤

  1. 请参考TOA模块的开源代码编译安装TOA模块。

    挂载内核模块过程中,不影响服务器现有业务,不用修改原有服务器进程即可获取真实源IP。

  2. 验证TOA内核模块。

    可以参考TOA插件配置获取真实源IP,或参考原理说明如下示例获取源站IP。

    >>print(newServerSocket.getpeername())
    >>"('cip',cport)"

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问