通过F5提取TOA中的真实源地址
2020-11-27 17:22:57
Will Tang
1.需求
金融机构使用CDN是很普遍的现象,使用CDN后,客户端的真实源地址会被替换为CDN的地址。对于http协议的应用来说,可以使用XFF很方便地获取到客户端真实源IP。对于其它TCP协议的应用来说,业界最常用的透传源地址的方法就是TOA(TCP Option Address),即将客户端真实源地址放到TCP Option中。
不同于XFF,TOA方式需要对应用服务器做比较多的改动才能获取到客户端真实源地址,对于使用F5 LTM的应用来说,可以通过F5来实现TOA中真实源地址的提取,提取后直接使用这个真实源地址作为源IP连接后台应用服务器,从而实现应用服务器无需做任何调整即可获取到客户端的真实源地址。
2.F5配置
假设CDN将客户端真实源地址放置在TCP Option 78中,在F5针对IPv4和IPv6,需要做以下配置。
创建TCP Profile
ltm profile tcp /Common/option78 {
app-service none
defaults-from /Common/tcp
tcp-options "{78 first}"
}
创建iRules – IPv4
when CLIENT_ACCEPTED {
set opt78 [TCP::option get 78]
if { [string length $opt78] == 4 } {
set optaddr [IP::addr parse $opt78]
}
}
when LB_SELECTED {
if { [info exists optaddr] } {
snat $optaddr
}
}
创建iRules – IPv6
when CLIENT_ACCEPTED {
set opt78 [TCP::option get 78]
if { [string length $opt78] == 16 } {
set optaddr [IP::addr parse -ipv6 $opt78]
}
}
when LB_SELECTED {
if { [info exists optaddr] } {
snat $optaddr
}
}将TCP Profile和iRules关联到相应的IPv4和IPv6 vs上,后台应用服务器即可直接看到客户端真实源地址。
发布评论 加入社群
熊平
2020-11-28 14:18:20
0
赞
凤广11
2020-12-01 13:27:25
0
TOA只能取Syn包里面的TCP OPTION信息,上面的iRules无法在Syn包里面插入TCP OPTION,TOA是取不到真实客户端源IP和端口的。
王亚军
2020-12-03 14:08:52
0
赞赞赞
相关文章
博文精选|工行“去 O”数据库选型与分布式架构设计
F5小安
2021-09-17 10:45:32
1074
F5支持Proxy Protocol测试
邹善
2021-06-20 01:09:23
2478
通过F5实现IPv6地址TOA插入
熊平
2020-11-27 13:35:50
3048
回复评论
发布评论