tcpdump
是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。
tcpdump
支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
一、常用参数
1、-D
要列出可用于数据包捕获的接口,请使用 tcpdump -D
注意:any
接口可以由 0.0
表示
# tcpdump -D
1.eth0
2.mgmt
3.tmm
4.vlan_test
5.ha-vlan
6.tmm_bp
7.any (Pseudo-device that captures on all interfaces)
8.lo [Loopback]
2、-i
要捕获特定接口上的流量,请使用 tcpdump -i <接口名称>
,即 tcpdump -i 0.0
,示例如下:
注意:在捕获时对接口使用 0.0 时,请确保使用捕获筛选器,否则将获得太多信息,并可能影响 F5 的性能。
# tcpdump -i 0.0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on 0.0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:22:32.750177 IP bigip2.com.63463 > 192.168.10.223.syslog: [|syslog] out slot1/tmm0 lis=
(1) :n
:n
提供 wireshark F5 插件低等细节输出,输出示例如下:
# tcpdump -i 0.0:n
- Ingress : 标记入向或者出向流量。
- Slot : 处理流量的插槽
- TMM : 流量处理的 TMM 内核
- Virtual Server : 处理流量的虚拟服务器名称
(2):nn
:nn
提供 wireshark F5 插件低等和中等细节输出,输出示例如下:
# tcpdump -i 0.0:nn
- Flow ID number : 流 ID 号
- Peer Flow ID number : 对端流 ID 号
- Flow type : 流量类型
- HA unit : 高可用单元
- Priority : 优先级
(3):nnn
:nnn
提供 wireshark F5 插件低等、中等和高等细节输出,输出示例如下:
# tcpdump -i 0.0:nnn
- Peer IP Protocol : 对等 IP 协议
- Peer Vlan : 对等 VLAN
- Peer remote address : 对等远程地址
- Peer local address : 对等本地地址
- Peer remote port : 对等远程端口
- Peer local port : 对等本地端口
(4):nnnp
:nnnp
捕获与过滤条件相关的 F5 的客户端和服务器端的流量。
例如:虚拟服务地址为 10.1.20.103,池成员是 10.1.10.7,主机IP地址为 10.1.20.103,则可以捕获地址 10.1.20.103 即可得到从客户端到池成员的所有流量。
# tcpdump -i 0.0:nnnp host 10.1.20.103
3、-n
使用 tcpdump -n
禁用主机名的名称解析,示例如下:
# tcpdump -n -i 0.0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on 0.0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:26:40.396534 IP 192.168.10.84.icl-twobase5 > 192.168.10.223.syslog: [|syslog] out slot1/tmm1 lis=
4、-nn
使用 tcpdump -nn
禁用主机名和端口名的名称解析,示例如下:
# tcpdump -nn -i 0.0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on 0.0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:26:40.396534 IP 192.168.10.84.icl-twobase5 > 192.168.10.223.syslog: [|syslog] out slot1/tmm1 lis=
5、-X
使用 tcpdump -X
显示包括 ASCII 和十六进制的输出。这将使阅读屏幕输出更容易。示例如下:
[root@bigip2:LICENSE EXPIRES IN 5 DAYS:Active:Standalone] config # tcpdump -X -i 0.0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on 0.0, link-type EN10MB (Ethernet), capture size 65535 bytes
16:24:29.148469 IP bigip2.com.24874 > 192.168.10.223.syslog: [|syslog] out slot1/tmm1 lis=
0x0000: 4500 005a 00f0 4000 ff11 e41e c0a8 0a54 E..Z..@........T
0x0010: c0a8 0adf 612a 0202 0046 96db 5463 7064 ....a*...F..Tcpd
0x0020: 756d 7020 7374 6172 7469 6e67 206c 6f63 ump.starting.loc
0x0030: 616c 6c79 206f 6e20 3132 372e 312e 312e ally.on.127.1.1.
0x0040: 323a 3220 6672 6f6d 2031 3237 2e31 2e31 2:2.from.127.1.1
0x0050: 2e32 3534 3a35 3433 3831 f5de b0f5 0014 .254:54381......
0x0060: 0001 0001 0001 000c 0003 0000 0100 ..............
5、-w
使用 tcpdump -w
将数据包捕获写入/var/tmp/bigip1.pcap
文件。示例如下:
# tcpdump -nn -i 0.0 -w /var/tmp/bigip1.pcap
tcpdump: listening on 0.0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C276 packets captured
276 packets received by filter
0 packets dropped by kernel
6、-s
使用tcpdump -s0
捕获完整的数据包。s
后面的数字表示要捕获的每个数据包的位数。0
表示全部。
# tcpdump -nn -i 0.0 -s0
7、-C
使用tcpdump -C
捕获数据包大小,单位为M。一般与-W
配合使用,否则到抓包文件到-C
指定大小,会生成新的文件。
8、-W
使用 -W 开关写入多个文件。与文件大小的 -C 结合使用。在此示例中,我们将轮换 4 个文件,每个文件的大小为 50 Mb。第四个文件完成后,第一个文件将被删除,并写入一个新文件并继续,直到捕获停止。当不清楚事件何时发生并且您可以在偶数发生后不久停止时,这是循环日志记录的一个不错的选择。示例如下:
tcpdump -W 4 -C 50 -w /var/tmp/file.pcap
9、-r
使用tcpdump -r <文件名>读取文件。
tcpdump -r /var/tmp/file.pcap
10、-v -vv -vvv
-v :在解析和打印时,生成(稍微多一些)详细的输出。例如,打印IP数据包中的生存时间、标识、总长度和选项。还支持其他数据包完整性检查,例如验证IP和ICMP报头校验和。
使用-w选项写入文件时,每10秒报告捕获的数据包数。
-vv:更详细的输出。例如,从NFS回复数据包打印附加字段,并对SMB数据包进行完全解码。
-vvv:输出更加详细。例如,telnet SB。SE选项全部打印。使用-X Telnet时,选项也以十六进制打印。
二、过滤条件
1、host
捕获主机地址相关报文
tcpdump host 192.168.2.5
(1)src host
捕获指定地址相关报文。
tcpdump src host 192.168.2.5
(2)dst host
捕获指定目的地址相关报文。
tcpdump dst host 192.168.2.5
2、port
捕获指定端口相关报文。
tcpdump host 192.168.2.5
(1)src post
捕获指定源端口相关报文。
tcpdump src host 192.168.2.5
(2)dst host
捕获指定目的端口相关报文。
tcpdump dst host 192.168.2.5
3、tcp flag
(1) 要查看通过 BIG-IP 系统传输并包含 SYN 标志的所有数据包,请键入以下命令:
tcpdump 'tcp[tcpflags] & (tcp-syn) != 0'
(2) 若要查看通过 BIG-IP 系统传输并包含 RST 标志的所有数据包,请键入以下命令:
tcpdump 'tcp[tcpflags] & (tcp-rst) != 0'
三、参考文档
Overview of packet tracing with the tcpdump utility (f5.com)
请问 这是什么程序源码啊