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
相关推荐
光影62723 分钟前
Unittest单元测试基础速记
测试工具·单元测试·json·测试覆盖率
taktok_ai2 小时前
用 cc-switch 连接 Taktok
网络
小嘉丶学长4 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
pt10436 小时前
Cisco设备网络安全系列-18:SIEM与SOAR安全解决方案
网络·安全
Tel199253080046 小时前
温度湿度信号转WiFi/MQTT/Modbus TCP采集模块 无线传输
网络·网络协议·tcp/ip·工业自动化·工控设备
yyuuuzz7 小时前
云服务器安全组规则优先级的机制记录
运维·服务器·网络·安全·阿里云·aws
youce_1237 小时前
测速跑满,但是打开网页、刷视频总转圈?问题不在带宽
网络·智能路由器
lazy H9 小时前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408
Linux运维技术栈9 小时前
WAF部署在防火墙后面,获取不到真实IP怎么办?
服务器·网络·tcp/ip·安全·防火墙·waf
xie881018029 小时前
正则里的点号不匹配换行:多行模式的开关
运维·服务器·测试工具