Tcpdump使用指南

Tcpdump使用

基础使用

bash 复制代码
[root@server6 ~]# tcpdump
08:13:05.214859 IP 192.168.88.1.57083 > server6.ssh: Flags [.], ack 3412, win 511, length 0
08:13:05.274524 IP server6.ssh > 192.168.88.1.57083: Flags [P.], seq 3412:3648, ack 1, win 501, length 236
#时:分:秒:毫秒 网络协议IP 发送方.端口号 > 接收方.端口:数据包内容(flags标识符:seq号,ack号,win窗口,数据长度,[P.]表示PUSH标志位为1)

TCP协议报文头部

过滤方法:

基于IP地址进行过滤
host
bash 复制代码
[root@server6 ~]# tcpdump host 192.168.88.35
08:47:39.031579 IP server6 > 192.168.88.35: ICMP echo request, id 1, seq 1, length 64
08:47:39.032269 IP 192.168.88.35 > server6: ICMP echo reply, id 1, seq 1, length 64
dst
bash 复制代码
[root@server6 ~]# tcpdump dst 192.168.88.35
08:54:28.673482 IP server6 > 192.168.88.35: ICMP echo request, id 3, seq 1, length 64
08:54:29.697732 IP server6 > 192.168.88.35: ICMP echo request, id 3, seq 2, length 64
src
bash 复制代码
[root@server6 ~]# tcpdump src 192.168.88.35
08:51:21.308272 IP 192.168.88.35 > server6: ICMP echo reply, id 2, seq 1, length 64
08:51:22.369594 IP 192.168.88.35 > server6: ICMP echo reply, id 2, seq 2, length 64
基于网段进行过滤
net
bash 复制代码
[root@server6 ~]# tcpdump net 192.168.88.0/24
08:56:36.252126 IP 192.168.88.1.57083 > server6.ssh: Flags [.], ack 60, win 4098, length 0
08:56:36.252158 IP server6.ssh > 192.168.88.1.57083: Flags [P.], seq 60:256, ack 1, win 501, length 196
基于端口进行过滤
port
bash 复制代码
[root@server5 ~]# tcpdump tcp port 8080
09:06:45.934110 IP 192.168.88.1.62663 > server5.webcache: Flags [.], ack 1, win 513, length 0
bash 复制代码
[root@server5 ~]# tcpdump src port 8080
09:10:06.995767 IP server5.webcache > 192.168.88.1.55478: Flags [F.], seq 262, ack 467, win 501, length 0
port or port
bash 复制代码
[root@server5 ~]# tcpdump port 80 or port 8080
portrange
bash 复制代码
[root@server5 ~]# tcpdump portrange 8000-8080
基于协议进行过滤
bash 复制代码
[root@server6 ~]# tcpdump icmp

应用层的协议:http,dns,https,ssh等,不能直接写名字,用端口号/名字

bash 复制代码
[root@server6 ~]# tcpdump port http
[root@server6 ~]# tcpdump port 53

Tcpdump的常用参数:

-h

#查看所有参数

bash 复制代码
[root@server6 ~]# tcpdump -h    
tcpdump version 4.99.0
libpcap version 1.10.0 (with TPACKET_V3)
OpenSSL 3.0.7 1 Nov 2022
Usage: tcpdump [-AbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [--count]
		[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
		[ -i interface ] [ --immediate-mode ] [ -j tstamptype ]
		[ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
		[ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
		[ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
		[ --time-stamp-precision precision ] [ --micro ] [ --nano ]
		[ -z postrotate-command ] [ -Z user ] [ expression ]

-i

#指定监听指定网卡

bash 复制代码
[root@server6 ~]# tcpdump -i ens160
bash 复制代码
[root@server6 ~]# tcpdump -i any

-w

#将抓到的包保存到文件中(.cap或者.pcap结尾,可以直接用wireshark工具打开)

bash 复制代码
[root@server6 ~]# tcpdump icmp -w icmp.cap

-r

#在文件中读取数据

bash 复制代码
[root@server6 ~]# tcpdump -r icmp.cap

-n

#不把ip转换成域名,直接显示ip,避免执行DNS lookups的过程,提高速度

bash 复制代码
[root@server6 ~]# tcmpdump -n icmp
09:43:58.329116 IP 192.168.88.35 > 192.168.88.36: ICMP echo request, id 4, seq 1, length 64
09:43:58.329147 IP 192.168.88.36 > 192.168.88.35: ICMP echo reply, id 4, seq 1, length 64

-nn

#把协议和服务直接显示成端口号

bash 复制代码
[root@server6 ~]# tcpdump -nn
09:45:56.467934 IP 192.168.88.1.57083 > 192.168.88.36.22: Flags [.], ack 37052, win 4095, length 0

-t / -tttt

#不输出时间

bash 复制代码
[root@server0 ~]# tcpdump -t
IP server0.ssh > 192.168.88.1.57435: Flags [P.], seq 144872260:144872320, ack 2570452919, win 501, length 60

#时间戳之前添加日期

bash 复制代码
[root@server0 ~]# tcmpdump icmp -tttt
2026-01-16 08:18:05.851322 IP 192.168.88.31 > 193.168.88.30: ICMP echo request, id 1, seq 1, length 64

-v

#更详细的的输出,包括ttl,id标识,数据包长度,以及IP包的一些选项

bash 复制代码
[root@server0 ~]# tcpdump -v
08:21:56.498679 IP (tos 0x48, ttl 64, id 56904, offset 0, flags [DF], proto TCP (6), length 164)
    server0.ssh > 192.168.88.1.57435: Flags [P.], cksum 0x3207 (incorrect -> 0xd7b0), seq 1:125, ack 0, win 501, length 124

-c

#指定收取数据包的次

bash 复制代码
[root@server0 ~]# tcpdump -c 5 -r haha.cap
#从haha.cap文件中读取5个包

-C -W

#与 -w 配合使用,-C指定一个文件存储的大小(单位MB)

bash 复制代码
[root@server0 ~]# tcpdump -C 1 -W 3 -w ttl  #满了1MB就换文件,最多写3个文件,ttl0,ttl1,ttl2

-Q in / out

#选择本机接收进来/发送出去的包 (数据包的方向)

过滤规则逻辑运算

and / &&

bash 复制代码
[root@server0 ~]# tcpdump tcp port 53 and port 80

or / ||

bash 复制代码
[root@server0 ~]# tcpdump src 192.168.88.30 and port 80

not / !

bash 复制代码
[root@server0 ~]# tcpdump not tcp port 22
相关推荐
那就回到过去35 分钟前
VRRP协议
网络·华为·智能路由器·ensp·vrrp协议·网络hcip
极客小云1 小时前
【ComfyUI API 自动化利器:comfyui_xy Python 库使用详解】
网络·python·自动化·comfyui
符哥20081 小时前
用Apollo + RxSwift + RxCocoa搭建一套网络请求框架
网络·ios·rxswift
相思难忘成疾1 小时前
通向HCIP之路:第四步:边界网关路由协议—BGP(概念、配置、特点、常见问题及其解决方案)
网络·华为·hcip
君陌社区·网络安全防护中心2 小时前
基于Mininet模拟SDN环境
网络
Porco.w2 小时前
C#与三菱PLC FX5U通信
网络·c#
枷锁—sha2 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
zzdYEjLL2 小时前
嵌入式离散裂缝模型:从入门到文章发表
tcpdump
云飞云共享云桌面2 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
爱学习的程序媛2 小时前
PSTN(公共交换电话网)的起源与发展
网络·信息与通信