admin 管理员组

文章数量: 887021


2024年1月17日发(作者:北京华清远见科技发展有限公司)

F5负载均衡器用tcpdump命令的抓包方法 内部公开

F5负载均衡器用tcpdump命令的抓包方法

作者:邹善

部门:业务与软件技术服务器 支撑技术团队

参考文档: <> 林浩泓

本文简单介绍在F5负载均衡器上用tcpdump命令进行抓包的方法,希望能对调试F5负载均衡器时有所帮助。

用tcpdump命令可以观察到从client端发出来的数据包有没有到F5负载均衡器,F5负载均衡器有没有把收到的数据包按设置发送出去,F5负载均衡器有没有收到后面真实服务器发过来的数据包。Tcpdump命令可以对从client端到F5再到真实服务器的数据流进行跟踪。

Tcpdump命令是F5本身自带的命令,不需要额外安装其他软件包。

1 Tcpdump命令

本文讲述TCPDUMP命令的基本用法,更详细的使用说明请参见“man tcpdump”。

命令语法:

tcpdump [ -adeflnNOpqRStvxX ] [ -c count ] [ -F file ]

[ -i interface ] [ -m module ] [ -r file ]

[ -s snaplen ] [ -T type ] [ -w file ]

[ -E algo:secret ] [ expression ]

其中:

-e

在输出行打印出数据链路层的头部信息

➢ -i

报文捕获监听的接口,如果不指定,默认为系统最小编号的接口(不包括华为机密,未经许可不得扩散 第1页, 共5页

2022-04-27

F5负载均衡器用tcpdump命令的抓包方法 内部公开

loop-back接口)

➢ -n 不将IP地址或端口号转化为域名或协议名称

➢ -r 从文件中读取(该文件由-w选项创建)

➢ -s 确定捕获报文大小

➢ -w 直接将捕获报文写入文件,而不是对其进行解析并通过屏幕显示(与-r选项对应)

➢ -x 每个报文以十六进制方式显示

➢ -X 每个报文同时以文本和十六进制显示

➢ expression 匹配表达式的分组将进行解析。如果不指定表达式,系统对所有分组进行捕获分析。复杂表达式可以使用“and”与、“or”或以及“not”非操作进行组合。表达式有三种:

✓ type 三种种类:host、net和port。比如:host 10.1.1.1。如果不指定类型,默认为host。

✓ dir

双向。

proto 常见协议有:ip、arp、tcp、udp、icmp等。如果不指定协议类型,默认为所有协议。

有src、dst、 src or dst和src and dst四种方向。默认为src or dst,即

2 在F5上用tcpdump抓包示例

以上图数据流为例,在F5上可以用tcpdump命令分别定位手机的数据流有没有到达F5负2022-04-27

华为机密,未经许可不得扩散 第2页, 共5页

F5负载均衡器用tcpdump命令的抓包方法 内部公开

载均衡器、F5负载均衡器是否把收到的数据包发真实的服务器上及真实服务器有没有把数据返回给F5。

上图中,手机的IP地址为10.139.0.0/16,F5上的做的VIP为10.0.0.174:9201,后台的真实IP地址为:10.0.0.196/26。F5上有两个vlan,一个为external vlan,用于接F5的外网,另一个为internal vlan,用于接F5的内网,在本例中,port 2.1接外网,port 1.9接真实服务器。

注意:在采用F5的双机时,要在数据流流经的F5上进行抓包,如果在数据流不经过的F5上抓包,是抓不到数据包的。

● 在F5上用tcpdump定位手机的数据流有没有到达F5:

因手机过来的地址是不定的,只是限定在一个地址池:10.139.0.0/16中,所以在F5上可以采用对源地址为10.139.0.0/16 (src net 10.139.0.0/16)进行抓包;F5是在通过port 2.1与外网相连,所以可以对interface 2.1进行抓包,所以抓包语句可写为如下:

JSNJ-B-SW001-WAP:~# tcpdump -i 2.1 src net 10.139.0.0/16

tcpdump: listening on 2.1

22:26:54.032326 10.139.110.6.49153 > 10.0.0.174.9201: udp 235

22:26:54.046591 10.139.110.6.49153 > 10.0.0.174.9201: udp 4

22:26:54.273444 10.139.110.6.49153 > 10.0.0.174.9201: udp 235

22:26:55.626692 10.139.110.6.49153 > 10.0.0.174.9201: udp 3

从以上抓到的包看,10.139.110.6已经把数据包送到VIP:10.0.0.174:9201上来。前面22:26:54.032326是时间标记。如果在外连接口上抓不到数据,则要检查从手机到F5之间的路由是否可达了。

● 在F5上用tcpdump定位手机的数据流有没有从F5上发向真实的服务器(10.0.0.196)

F5的port 1.9是连接真实服务器10.0.0.196的接口,可以在此接口上对目的地址为10.0.0.196 ,端口号为9201的数据进行抓包。

JSNJ-B-SW001-WAP:~# tcpdump -i 1.9 dst 10.0.0.196 and port 9201

tcpdump: listening on 1.9

22:31:19.575618 10.139.110.6.49153 > 10.0.0.196.9201: udp 237

22:31:20.989582 10.139.110.6.49153 > 10.0.0.196.9201: udp 3

2022-04-27

华为机密,未经许可不得扩散 第3页, 共5页

F5负载均衡器用tcpdump命令的抓包方法 内部公开

22:31:27.854904 10.139.110.6.49153 > 10.0.0.196.9201: udp 237

22:31:29.271142 10.139.110.6.49153 > 10.0.0.196.9201: udp 3

从结果上看:10.139.110.6的数据包已离开F5,发到10.0.0.196上。注意的是:此数据包的源IP地址还是手机的地址。结果从接服务器的接口上看不到离开F5的数据包,则需要检查F5的配置有没有问题。

● 在F5上用tcpdump定位真实服务器的数据流有没有返回F5

F5的port 1.9是连接真实服务器10.0.0.196的接口,可以在此接口上对源地址为10.0.0.196 ,端口号为9201的数据进行抓包

JSNJ-B-SW001-WAP:~# tcpdump -i 1.9 src 10.0.0.196 and port 9201

tcpdump: listening on 1.9

22:32:26.302664 10.0.0.196.9201 > 10.139.110.6.49153: udp 3 (DF)

22:32:26.393834 10.0.0.196.9201 > 10.139.110.6.49153: udp 1403 (DF)

22:32:26.394014 10.0.0.196.9201 > 10.139.110.6.49153: udp 176 (DF)

22:32:27.273660 10.0.0.196.9201 > 10.139.110.6.49153: udp 1403 (DF)

22:32:28.672322 10.0.0.196.9201 > 10.139.110.6.49153: udp 4 (DF)

22:32:29.832202 10.0.0.196.9201 > 10.139.110.6.49152: udp 4 (DF)

如果没有抓到相应的数据包,则有可能是真实服务器没有把数据包发回到F5上,此时,应当检查真实服务器配置,可以在真实服务器本地检查服务是否正常(如是IE应用在本地服务器上用IE浏览则可)。

从以上抓到的数据包可以看出数据包的目的地址不是F5,而是手机的真实地址,所以要注意检查真实服务器的网关有没有设置好,一般情况下真实服务器的网关要设置成F5

internal vlan 的self IP或share IP(双机情况)。现场已碰到很多因为没有设置真实服务器网关而造成访问不通的情况。

● 在F5上用tcpdump定位F5有没有把数据流返回到手机上:

在F5上对port 2.1 目的地址为10.139.0.0/16的网段抓包:

JSNJ-B-SW001-WAP:~# tcpdump -i 2.1 dst net 10.139.0.0/16

tcpdump: listening on 2.1

2022-04-27

华为机密,未经许可不得扩散 第4页, 共5页

F5负载均衡器用tcpdump命令的抓包方法 内部公开

12:25:24.899435 10.0.0.174.9201 > 10.139.110.6.8502: udp 3 (DF)

12:25:25.170922 10.0.0.174.9201 > 10.139.110.6.8502: udp 1569 (frag 60525:1480@0+)

12:25:25.170933 10.0.0.174 > 10.139.110.6: (frag 60525:97@1480)

12:25:27.479392 10.0.0.174.9201 > 10.139.110.6.8502: udp 3 (DF)

12:25:28.520496 10.0.0.174.9201 > 10.139.110.6.8502: udp 1290 (DF)

如果F5没有把数据包发送到外网去,则要检查F5的配置,同时也要非常注意F5有没有到外网的路由。检查F5到外网的路由可以在F5上用netstat –rn命令查看:

JSNJ-B-SW001-WAP:~# netstat -rn

Routing tables

Internet:

Destination Gateway Flags MTU If

default 10.0.0.140 UGS 1500 vlan0

10.0.0.128/26 link#29 UC 1500 vlan0

10.0.0.131 0.1.d7.23.21.b1 UHLc 1500 lo0

10.0.0.140 .20.70 UHLc 1500 vlan0

查看是否有default的路由。如果没有default路由,则需要到F5上用config进入配置菜单,配置gateway。

2022-04-27

华为机密,未经许可不得扩散 第5页, 共5页


本文标签: 服务器 有没有 数据包 命令 均衡器