(问题小记)安装toa模块报错解决

问题现象:

安装腾讯的toa模块报错

图片

原因:

查看当前内核版本号,确认 kernel-devel ,kernel-headers 已安装,并保证版本号与内核版本保持一致。不一致先升级小版本内核(需要重启)

解决过程:

升级内核

图片
图片

重启后,内核版本已经升级~如何有大拇指看 Linux之motd和tar学习

图片

重新加载toa成功运行~

图片

理论知识补充:

toa存在于TCP OPTION字段,业务四层端口接入后,高防节点和源站经过三次握手,在最后一个ACK数据包的TCP Option中插入了源端口号和源IP等信息,共占8个字节。

Linux 内核在监听套接字收到三次握手的ACK包之后,会从SYN_REVC状态进入到TCP_ESTABLISHED状态。这时内核会调用 tcp_v4_syn_recv_sock 函数。Hook 函数tcp_v4_syn_recv_sock_toa首先调用原有的tcp_v4_syn_recv_sock函数,然后调用get_toa_data函数从TCP OPTION中提取出TOA OPTION,并存储在sk_user_data字段中。再用inet_getname_toa hook inet_getname,在获取源 IP 地址和端口时,首先调用原来的inet_getname,然后判断sk_user_data是否为空,如果有数据从其中提取真实的IP和port,替换inet_getname的返回。服务端程序在用户态调用getpeername,返回的 IP 和 port 即为客户端的原始 IP。(举例:安装完toa后,程序日志看到的源ip已经是真实源ip,不是高防回源段地址)

阿里:

图片

腾讯:

图片

业务接入高防ip后,到达源站的所有业务流量都由高防ip回源段地址转发,为了获取client真实源ip,可以由以下2种方式获取真实源ip

1、非网站类tcp业务,服务端通过安装TOA模块(4层)。

2、网站类业务,通过域名证书解密后会在转发请求中的X-Forwarded-For记录用户真实ip(7层)。

扫码访问小程序中的本文

微信小程序二维码

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部