2024年9月2日发(作者:荣以松)
TCPDUMP使用说明
tcpdump命令参数解释 ............................................................................. 1
Tcpdump使用案例说明:......................................................................... 2
TCPDUMP出现“truncated-ip - 1215 bytes missing!”错误 .......................... 3
TCPDUMP 命令中的-i参数用VLAN名称与接口编号有什么区别 ............. 3
TCPDUMP 命令中出现“pcap_loop: Error: Interface packet capture busy”错
误信息? ................................................................................................. 5
tcpdump命令参数解释
TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网
络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉
无用的信息。
数据过滤
不带任何参数的TcpDump将搜索系统中所有的网络接口,并显示它截获的所有数
据,这些数据对我们不一定全都需要,而且数据太多不利于分析。所以,我们应当先想好
需要哪些数据,TcpDump提供以下参数供我们选择数据:
参数 描述 实例
-i
的数据
-i
的数据
-e 显示MAC地址 Tcpdump -e
-n
不进行IP地址到主机名的
Tcpdump -n
注:在bigip v9中,需要
转换。
使用-nn
-X Display packets in hex Tcpdump –x
and decondes in ASCII
可以看到一些访问的请求
信息
-s
76字节.实际使用时,建议
用-s 1600,这样可以保证
抓取完整的数据包
-w 将输出内容保存在指二进Tcpdump –w chen
制文件定中
-r 查看指定的二进制文件 tcpdump -r chen
>
件中,非二进制文件
host
滤的内容.包括访问与应
答。
ICMP,UDP,ARP,etc.
port
条件1 and 条件2 tcpdump -i exp1 host
61.55.138.133 and udp
条件1 or 条件2 tcpdump -i exp1 host
61.55.138.133 or udp
条件1 not 条件2 所有满足指定条件1并且
tcpdump -i exp1 host
61.55.138.133 not udp
除条件2的数据。
src
dst
过滤指定的来源地址.只显
示访问IP的请求包,不再
显示F5返回的包
过滤指定的目标地址.只显
示F5返回的包,不再显示
访问IP的请求包。
tcpdump -i exp1 src
61.55.138.133 or udp
注:tcpdump命令只针对经过CPU处理的数据包进行捕获,一但在BIGIP中的
某个VIP采用的是performance L4的方式,数据包则由四层加层ASIC芯片处理而没
有流经CPU,无法捕获数据。解决该问题的方法是:选取该Virtual Server将type由
Performance Layer4临时改为Standard再来用TCPDUMP命令抓包,抓包以后,改
回到Performance Layer4。
Tcpdump使用案例说明:
举例1:对external接口主机139.212.96.2并且端口为1433的流量进行监控。
端口不指定tcp和udp,默认为同时对tcp和udp进行报文捕获。本命令不解析IP地
址/端口号为主机名/服务名称,同时显示报文十二进制和文本信息,报文最大为1500
字节。
f5-1:~# tcpdump -i external -nn -X -s 1600 port 1433 and
host 139.212.96.2
tcpdump: listening on external
21:48:41.295546 139.212.96.2.1201 > 10.75.9.44.1433: .
302192826:302192827(1) ac
k 558871968 win 64360 (DF)
0x0000 012c 0800 4500 0029 38cf 4000 7f06
c3b2 .,..E..)8.@.....
0x0010 8bd4 6002 0a4b 092c 04b1 0599 1203
18ba ..`..K.,........
0x0020 214f b5a0 5010 fb68 a926 0000
00 !O..P..h.&...
21:48:41.296015 10.75.9.44.1433 > 139.212.96.2.1201: . ack
1 win 64636 (DF)
0x0000 012c 0800 4500 0028 cb2d 4000 7f06
3155 .,..E..(.-@...1U
0x0010 0a4b 092c 8bd4 6002 0599 04b1 214f
b5a0 .K.,..`.....!O..
0x0020 1203 18bb 5010 fc7c a812 0000 0000
0000 ....P..|........
0x0030 0000 ..
21:48:50.701130 139.212.96.2.1206 > 10.75.9.44.1433: .
304974934:304974935(1) ac
k 565108263 win 64882 (DF)
0x0000 012c 0800 4500 0029 38f7 4000 7f06
c38a .,..E..)8.@.....
0x0010 8bd4 6002 0a4b 092c 04b6 0599 122d
8c56 ..`..K.,.....-.V
0x0020 21ae de27 5010 fd72 0a6b 0000
00 !..'P..
21:48:50.702567 10.75.9.44.1433 > 139.212.96.2.1206: . ack
1 win 65267 (DF)
0x0000 012c 0800 4500 0028 d3a6 4000 7f06
28dc .,..E..(..@...(.
0x0010 0a4b 092c 8bd4 6002 0599 04b6 21ae
de27 .K.,..`.....!..'
0x0020 122d 8c57 5010 fef3 08ea 0000 0000 0000 .-
.WP...........
0x0030 0000 ..
举例2:对internal接口主机172.31.230.53和172.31.230.51之间端口8080的
流量进行分组捕获。本命令不解析IP地址/端口号为主机名/服务名称,报文最大为
1600字节,捕获信息以“/var/tmp/intdump”文件保存:
tcpdump -s 1600 -i internal -w /var/tmp/intdump host 172.31.230.53 and host
172.31.230.51 and port 8080
如果查看该捕获文件,请用tcpdump –r /var/tmp/intdump命令。也可以将捕获
的文件下载下来用Ethereal工具解包分析。
TCPDUMP出现“truncated-ip - 1215 bytes missing!”错误
在BIG-IP V9里面出现”Truncated-IP xxxx bytes missing”信息,一般来说并不是
网络上有丢包引起的,而是在执行TCPDUMP命令时没有加上 –s0或-s1600参数
时,而数据包大小超过TCPDUMP缺省的抓包大小(如果不加-s0或-s1600参数,则
缺省的每个数据包只抓前面400byes),就会出现truncated-ip的情况。出现这种情
况,只需要重新输入tcpdump命令,加上-s0或-s1600即可。
TCPDUMP 命令中的-i参数用VLAN名称与接口编号有什么区别
(如external或internal)与接口编号(1.1或2.1)有什么区别?
如果采用VLAN名称作为-i的参数,TCPDUMP收集的数据包是经由内部接口到
达TMM进程经由中央CPU处理的数据包。
采用VLAN名称作为-i参数的局限性在于,由于PVA四层加速芯片时位于BIG-
IP的交换板(Swithboard)上,并不需要经由主机板与交换机板的内部接口到达中央
CPU,因此TCPDUMP无法抓取这些四层加速的数据包。
因此采用VLAN名称作为-i的参数一般是用于对采用Standard作为Virtual
Server类型的应用抓包时采用。
注:如果Virtual Server是用PVA四层加速芯片作加速处理,则在Virtual
Server的属性中PVA Acceleration显示为Full。
(The PVA handles accelerated traffic in the following order:
The PVA receives accelerated traffic from the switch
subsystem
The PVA transforms the packet in order to redirect the
packet to the appropriate pool member
The PVA sends the packet back to the switch subsystem
Fully accelerated traffic never reaches the internal trunk
and is not processed by TMM. )
如果采用接口编号作为-i的参数,则进出该接口的数据包将先被镜像给
SCCP(SCCP是BIG-IP的管理子系统),然后送到主机板上通过TCPDUMP抓包。由
于是直接镜像了端口,因此经由四层加速芯处理的数据包也能被TCPDUMP获取。
采用接口编号作为-i的参数的局限性在于,由于数据包是经由SCCP(管理子系
统)转发给主机板,数据包的处理速度有限,每秒只能处理200个数据包。因此采用
接口编号作为-i的参数一般是用于做基本网络故障诊断时。
(When tcpdump is run on an interface, the packet is copied on switch
ingress to the SCCP, which then sends it to the host to be captured by
tcpdump.
Limitations
Running tcpdump on a switch interface is rate-limited to 200 packets
per second. Therefore, if you run tcpdump on an interface that is
processing more than 200 packets per second, the captured tcpdump file
will not include all of the packets.
For example, the following command will capture PVA accelerated traffic,
but the syntax will result in a rate limit of 200 packets per second。)
注:对于采用了PVA四层加速芯片加速处理的Virtual,而且网络流量又
比较大时,如果需要进行抓包分析,建议在上一级交换机作端口镜像,将网络
流量输出到外部的抓包主机上处理。
TCPDUMP 命令中出现“pcap_loop: Error: Interface packet
capture busy”错误信息?
同时执行多个TCPDUMP,出现“pcap_loop: Error: Interface packet capture
busy”错误,例如:
[root@bigip1:Active] config # tcpdump: listening on 1.1
[root@bigip1:Active] config # tcpdump -ni 1.3 -s 1600 -X -
w/var/tmp/ port 22 &
[3] 6813
tcpdump: listening on 1.3
[root@bigip1:Active] config # tcpdump -ni 1.4 -s 1600 -X -
w/var/tmp/ port 22 &
[4] 6820
tcpdump: listening on 1.4
[root@bigip1:Active] config # tcpdump: pcap_loop: Error:
Interface packet capture busy
tcpdump: pcap_loop: Error: Interface packet capture busy
这种情况一般只发生在TCPDUMP -i参数采用接口编号时。原因主要在于当采用
接口编号作为-i参数时,是通过BIG-IP的二层芯片将该接口的数据包镜像到中央
CPU作处理。而BIG-IP的二层芯片的接口镜像功能不支持多个接口同时镜像,因此
如果同时执行多个用接口名称作-i参数的TCPDUMP命令,就会出现Interface
packet capture busy的信息。
注:对于采用VLAN名称作为TCPDUMP –i参数,则不存在这个问题,
可以支持对多个VLAN同时执行TCPDUMP抓包命令。
(Currently only one tcpdump session is possible at a time on a switch interface
(tcpdump on vlan alllows multiple sessons). This is due to a limitation of the
Broadcom SDK, but we may be able to extend the SDK to support multiple sessions.
The root difficulty here is that mirrored packets don't carry a note saying "this is
where I came from." In a Broadcom switch fabric we can mirror from multiple ports,
and all the packets will funnel to the host -- but we don't know which tcpdump session
to route them to. One idea involves a layer 2 lookup on each packet performed by the
bcm56xx daemon on the sccp. This would be intense so we continue to have this
limitation.)
F5总部建议抓包使用的参数:
Tcpdump –ni
抓包时建议在client端,Bigip的进出两端,server端同时抓包。并使用b conn
查看连接。
2024年9月2日发(作者:荣以松)
TCPDUMP使用说明
tcpdump命令参数解释 ............................................................................. 1
Tcpdump使用案例说明:......................................................................... 2
TCPDUMP出现“truncated-ip - 1215 bytes missing!”错误 .......................... 3
TCPDUMP 命令中的-i参数用VLAN名称与接口编号有什么区别 ............. 3
TCPDUMP 命令中出现“pcap_loop: Error: Interface packet capture busy”错
误信息? ................................................................................................. 5
tcpdump命令参数解释
TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网
络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉
无用的信息。
数据过滤
不带任何参数的TcpDump将搜索系统中所有的网络接口,并显示它截获的所有数
据,这些数据对我们不一定全都需要,而且数据太多不利于分析。所以,我们应当先想好
需要哪些数据,TcpDump提供以下参数供我们选择数据:
参数 描述 实例
-i
的数据
-i
的数据
-e 显示MAC地址 Tcpdump -e
-n
不进行IP地址到主机名的
Tcpdump -n
注:在bigip v9中,需要
转换。
使用-nn
-X Display packets in hex Tcpdump –x
and decondes in ASCII
可以看到一些访问的请求
信息
-s
76字节.实际使用时,建议
用-s 1600,这样可以保证
抓取完整的数据包
-w 将输出内容保存在指二进Tcpdump –w chen
制文件定中
-r 查看指定的二进制文件 tcpdump -r chen
>
件中,非二进制文件
host
滤的内容.包括访问与应
答。
ICMP,UDP,ARP,etc.
port
条件1 and 条件2 tcpdump -i exp1 host
61.55.138.133 and udp
条件1 or 条件2 tcpdump -i exp1 host
61.55.138.133 or udp
条件1 not 条件2 所有满足指定条件1并且
tcpdump -i exp1 host
61.55.138.133 not udp
除条件2的数据。
src
dst
过滤指定的来源地址.只显
示访问IP的请求包,不再
显示F5返回的包
过滤指定的目标地址.只显
示F5返回的包,不再显示
访问IP的请求包。
tcpdump -i exp1 src
61.55.138.133 or udp
注:tcpdump命令只针对经过CPU处理的数据包进行捕获,一但在BIGIP中的
某个VIP采用的是performance L4的方式,数据包则由四层加层ASIC芯片处理而没
有流经CPU,无法捕获数据。解决该问题的方法是:选取该Virtual Server将type由
Performance Layer4临时改为Standard再来用TCPDUMP命令抓包,抓包以后,改
回到Performance Layer4。
Tcpdump使用案例说明:
举例1:对external接口主机139.212.96.2并且端口为1433的流量进行监控。
端口不指定tcp和udp,默认为同时对tcp和udp进行报文捕获。本命令不解析IP地
址/端口号为主机名/服务名称,同时显示报文十二进制和文本信息,报文最大为1500
字节。
f5-1:~# tcpdump -i external -nn -X -s 1600 port 1433 and
host 139.212.96.2
tcpdump: listening on external
21:48:41.295546 139.212.96.2.1201 > 10.75.9.44.1433: .
302192826:302192827(1) ac
k 558871968 win 64360 (DF)
0x0000 012c 0800 4500 0029 38cf 4000 7f06
c3b2 .,..E..)8.@.....
0x0010 8bd4 6002 0a4b 092c 04b1 0599 1203
18ba ..`..K.,........
0x0020 214f b5a0 5010 fb68 a926 0000
00 !O..P..h.&...
21:48:41.296015 10.75.9.44.1433 > 139.212.96.2.1201: . ack
1 win 64636 (DF)
0x0000 012c 0800 4500 0028 cb2d 4000 7f06
3155 .,..E..(.-@...1U
0x0010 0a4b 092c 8bd4 6002 0599 04b1 214f
b5a0 .K.,..`.....!O..
0x0020 1203 18bb 5010 fc7c a812 0000 0000
0000 ....P..|........
0x0030 0000 ..
21:48:50.701130 139.212.96.2.1206 > 10.75.9.44.1433: .
304974934:304974935(1) ac
k 565108263 win 64882 (DF)
0x0000 012c 0800 4500 0029 38f7 4000 7f06
c38a .,..E..)8.@.....
0x0010 8bd4 6002 0a4b 092c 04b6 0599 122d
8c56 ..`..K.,.....-.V
0x0020 21ae de27 5010 fd72 0a6b 0000
00 !..'P..
21:48:50.702567 10.75.9.44.1433 > 139.212.96.2.1206: . ack
1 win 65267 (DF)
0x0000 012c 0800 4500 0028 d3a6 4000 7f06
28dc .,..E..(..@...(.
0x0010 0a4b 092c 8bd4 6002 0599 04b6 21ae
de27 .K.,..`.....!..'
0x0020 122d 8c57 5010 fef3 08ea 0000 0000 0000 .-
.WP...........
0x0030 0000 ..
举例2:对internal接口主机172.31.230.53和172.31.230.51之间端口8080的
流量进行分组捕获。本命令不解析IP地址/端口号为主机名/服务名称,报文最大为
1600字节,捕获信息以“/var/tmp/intdump”文件保存:
tcpdump -s 1600 -i internal -w /var/tmp/intdump host 172.31.230.53 and host
172.31.230.51 and port 8080
如果查看该捕获文件,请用tcpdump –r /var/tmp/intdump命令。也可以将捕获
的文件下载下来用Ethereal工具解包分析。
TCPDUMP出现“truncated-ip - 1215 bytes missing!”错误
在BIG-IP V9里面出现”Truncated-IP xxxx bytes missing”信息,一般来说并不是
网络上有丢包引起的,而是在执行TCPDUMP命令时没有加上 –s0或-s1600参数
时,而数据包大小超过TCPDUMP缺省的抓包大小(如果不加-s0或-s1600参数,则
缺省的每个数据包只抓前面400byes),就会出现truncated-ip的情况。出现这种情
况,只需要重新输入tcpdump命令,加上-s0或-s1600即可。
TCPDUMP 命令中的-i参数用VLAN名称与接口编号有什么区别
(如external或internal)与接口编号(1.1或2.1)有什么区别?
如果采用VLAN名称作为-i的参数,TCPDUMP收集的数据包是经由内部接口到
达TMM进程经由中央CPU处理的数据包。
采用VLAN名称作为-i参数的局限性在于,由于PVA四层加速芯片时位于BIG-
IP的交换板(Swithboard)上,并不需要经由主机板与交换机板的内部接口到达中央
CPU,因此TCPDUMP无法抓取这些四层加速的数据包。
因此采用VLAN名称作为-i的参数一般是用于对采用Standard作为Virtual
Server类型的应用抓包时采用。
注:如果Virtual Server是用PVA四层加速芯片作加速处理,则在Virtual
Server的属性中PVA Acceleration显示为Full。
(The PVA handles accelerated traffic in the following order:
The PVA receives accelerated traffic from the switch
subsystem
The PVA transforms the packet in order to redirect the
packet to the appropriate pool member
The PVA sends the packet back to the switch subsystem
Fully accelerated traffic never reaches the internal trunk
and is not processed by TMM. )
如果采用接口编号作为-i的参数,则进出该接口的数据包将先被镜像给
SCCP(SCCP是BIG-IP的管理子系统),然后送到主机板上通过TCPDUMP抓包。由
于是直接镜像了端口,因此经由四层加速芯处理的数据包也能被TCPDUMP获取。
采用接口编号作为-i的参数的局限性在于,由于数据包是经由SCCP(管理子系
统)转发给主机板,数据包的处理速度有限,每秒只能处理200个数据包。因此采用
接口编号作为-i的参数一般是用于做基本网络故障诊断时。
(When tcpdump is run on an interface, the packet is copied on switch
ingress to the SCCP, which then sends it to the host to be captured by
tcpdump.
Limitations
Running tcpdump on a switch interface is rate-limited to 200 packets
per second. Therefore, if you run tcpdump on an interface that is
processing more than 200 packets per second, the captured tcpdump file
will not include all of the packets.
For example, the following command will capture PVA accelerated traffic,
but the syntax will result in a rate limit of 200 packets per second。)
注:对于采用了PVA四层加速芯片加速处理的Virtual,而且网络流量又
比较大时,如果需要进行抓包分析,建议在上一级交换机作端口镜像,将网络
流量输出到外部的抓包主机上处理。
TCPDUMP 命令中出现“pcap_loop: Error: Interface packet
capture busy”错误信息?
同时执行多个TCPDUMP,出现“pcap_loop: Error: Interface packet capture
busy”错误,例如:
[root@bigip1:Active] config # tcpdump: listening on 1.1
[root@bigip1:Active] config # tcpdump -ni 1.3 -s 1600 -X -
w/var/tmp/ port 22 &
[3] 6813
tcpdump: listening on 1.3
[root@bigip1:Active] config # tcpdump -ni 1.4 -s 1600 -X -
w/var/tmp/ port 22 &
[4] 6820
tcpdump: listening on 1.4
[root@bigip1:Active] config # tcpdump: pcap_loop: Error:
Interface packet capture busy
tcpdump: pcap_loop: Error: Interface packet capture busy
这种情况一般只发生在TCPDUMP -i参数采用接口编号时。原因主要在于当采用
接口编号作为-i参数时,是通过BIG-IP的二层芯片将该接口的数据包镜像到中央
CPU作处理。而BIG-IP的二层芯片的接口镜像功能不支持多个接口同时镜像,因此
如果同时执行多个用接口名称作-i参数的TCPDUMP命令,就会出现Interface
packet capture busy的信息。
注:对于采用VLAN名称作为TCPDUMP –i参数,则不存在这个问题,
可以支持对多个VLAN同时执行TCPDUMP抓包命令。
(Currently only one tcpdump session is possible at a time on a switch interface
(tcpdump on vlan alllows multiple sessons). This is due to a limitation of the
Broadcom SDK, but we may be able to extend the SDK to support multiple sessions.
The root difficulty here is that mirrored packets don't carry a note saying "this is
where I came from." In a Broadcom switch fabric we can mirror from multiple ports,
and all the packets will funnel to the host -- but we don't know which tcpdump session
to route them to. One idea involves a layer 2 lookup on each packet performed by the
bcm56xx daemon on the sccp. This would be intense so we continue to have this
limitation.)
F5总部建议抓包使用的参数:
Tcpdump –ni
抓包时建议在client端,Bigip的进出两端,server端同时抓包。并使用b conn
查看连接。