安装了toa 仍然无法查看真实客户端IP是什么情况呢?

知识问答作者:U大使日期:2021-01-25点击:153

我已经安装了toa,但是看不到ip

toa原理是从tcp包中取出option字段,解析出真实客户端IP,最后通过内核钩子函数完成替换,服务程序调用的socket库可以通过getpeername方法获取到真实客户端IP。由于toa目前不支持ipv6, 如果源站服务监听了ipv6地址,如golang服务默认监听方式,也会导致无法获取真实客户端IP,需要业务调整服务监听方式。如果必须支持ipv6栈下获取真实客户端IP,请联系我们讨论解决方案。

如果整条链路转发过程中出现了tcp连接截断的情况,分成两段tcp连接。如在rs前使用了七层负载均衡或tcp请求代理模式,就会导致安装toa成功,仍然获取不到真实客户端IP:

1)client -------> pathx 4层转发 --------- tcp packet (option字段包含:客户端IP ) --------> 7层负载均衡或tcp请求代理负载均衡 ----------tcp packet (option字段不再包含 客户端IP) --------> 源站RS(安装toa 不能获取客户端IP)

2)client -------> pathx 4层转发 --------- tcp packet (option字段包含:客户端IP ) --------> 源站RS(安装toa 可以获取客户端IP)

3)client--------> pathx 4层转发 --------- tcp packet (option字段包含:客户端IP ) --------> 4层负载均衡(ulb4开启报文转发 或 AWS NLB开启保留源IP) ----------tcp packet (option字段包含 客户端IP) --------> 源站RS(安装toa 可以获取客户端IP)

如果使用http协议场景,七层转发 不需要安装toa模块就可以获取真实客户端IP:

4)client--------> pathx 7层转发 ------X-Forwarded-For---------> 各类LB --------> 源站RS(从http header获取客户端IP)

5)client--------> pathx 7层转发 ------X-Forwarded-For---------> 源站RS(从http header获取客户端IP)

有没有更具体的信息或日志,我们好帮你排查

下一篇       上一篇