F5社区-F5技术交流中心

通过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}"
}

创建iRulesIPv4

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
    }
}

创建iRulesIPv6

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和端口的。

Will Tang 回复 南瓜布 : 这里针对的场景只是提取,插入由CDN做了。如果要了解如何插入TOA,可以参考这篇文章:http://community.f5chinanetworks.com/pc-post-573.html

王亚军 2020-12-03 14:08:52 0

赞赞赞

相关文章

博文精选|工行“去 O”数据库选型与分布式架构设计

F5小安

2021-09-17 10:45:32 904

F5支持Proxy Protocol测试

邹善

2021-06-20 01:09:23 2166

通过F5实现IPv6地址TOA插入

熊平

2020-11-27 13:35:50 2751

Login

手机号
验证码
© 2019 F5 Networks, Inc. 版权所有。京ICP备16013763号-1