【产品技术】如何获取真实源IP

举报
懒宅君 发表于 2020/06/27 20:24:41 2020/06/27
【摘要】 经过高防转发的流量到服务端之后真实源IP将被隐藏,如何通过华为高防提供的TOA模块获取真实源IP。网站类业务当使用域名接入时,业务通过CNAME解析的方式接入DDoS高防,高防将客户的访问请求转到后端服务器,此时,源站默认看到的是高防的回源IP,真实的客户端IP被放在HTTP头部的X-Forwareded-For字段。X-Forwareded-For:客户端真实IP,高防代理IP。源站只需获...

经过高防转发的流量到服务端之后真实源IP将被隐藏,如何通过华为高防提供的TOA模块获取真实源IP。

网站类业务

当使用域名接入时,业务通过CNAME解析的方式接入DDoS高防,高防将客户的访问请求转到后端服务器,此时,源站默认看到的是高防的回源IP,真实的客户端IP被放在HTTP头部的X-Forwareded-For字段。

  • X-Forwareded-For:客户端真实IP,高防代理IP。

源站只需获取HTTP头部的X-Forwarded-For字段的内容,就可获取到客户端真实IP。

非网络类业务

当使用非网站类业务接入时,客户通过把高防CNAME配置到DNS或者把高防IP直接配置到客户端的方式将流量接入高防,经过高防的流量会修改源IP与目的IP(由CIP->VIP转换为LIP->RIP),客户在自己的源站服务器上看到的流量源IP是华为的LIP。

本任务指导用户如何通过华为高防提供的TOA模块获取高防转发后流量的真实源IP。

原理说明

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

image.png


  • 高防IP:华为云为用户提供的IP,用来代理源站IP,确保源站的稳定可靠。

  • 回源IP:用户在自己的源站服务器上看到的所有流量的源IP就是回源IP。

  • 源站IP:用户的实际业务对外提供服务所使用的公网IP地址。

前提条件

华为高防提供的TOA模块,支持的Linux操作系统如下:

  • 内核版本2.6(一般对应操作系统CentOS6.5)。

  • 内核版本3.10(一般对应操作系统CentOS7)。

华为高防专用TOA模块在开源TOA的基础上做了优化,可直接在Linux服务器(CentOS系列,其他系统需要定制)上编译安装。

  1. TOA模块的获取方法:

华为高防提供了TOA模块的开源代码

    • 安装高防TOA插件是基于四层协议(TCP)获取真实源IP的方法。

    • 如果客户还使用了WAF,需要获取七层协议(HTTP)真实源IP。

  1. TOA模块的编译方法:

>> make   #进入对应目录下,根据自己的服务器版本而定,有gcc即可

>> rmmod toa   #卸载以前的toa版本

>> insmod toa.ko   #挂载编译好的toa

>> lsmod | grep toa   #查看是否成功


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

  • Linux环境下安装TOA之后,一般情况下,系统默认重启时不会自动加载TOA,如需重启自动加载TOA,请参考“TOA模块的开源代码”的后续说明事项。

  • 如果以上方法不能获取高防转发后流量的真实源IP,请联系华为技术支持。

验证方法

可以通过常规函数获取真实源IP,或参考原理说明的代码获取。

  • 如果用户的程序以前没有获取真实源IP的功能,则可以通过常规函数获取真实源IP,或参考原理说明的代码获取。

  • 如果用户的程序以前已有获取真实源IP的功能,则不需要做任何修改,直接验证获取的真实源IP是否正确。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。