【产品技术】如何获取真实源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
高防IP:华为云为用户提供的IP,用来代理源站IP,确保源站的稳定可靠。
回源IP:用户在自己的源站服务器上看到的所有流量的源IP就是回源IP。
源站IP:用户的实际业务对外提供服务所使用的公网IP地址。
前提条件
华为高防提供的TOA模块,支持的Linux操作系统如下:
内核版本2.6(一般对应操作系统CentOS6.5)。
内核版本3.10(一般对应操作系统CentOS7)。
华为高防专用TOA模块在开源TOA的基础上做了优化,可直接在Linux服务器(CentOS系列,其他系统需要定制)上编译安装。
TOA模块的获取方法:
华为高防提供了TOA模块的开源代码。
安装高防TOA插件是基于四层协议(TCP)获取真实源IP的方法。
如果客户还使用了WAF,需要获取七层协议(HTTP)真实源IP。
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是否正确。
- 点赞
- 收藏
- 关注作者
评论(0)