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
相关推荐
小小测试开发2 小时前
Playwright vs Selenium vs Cypress:从浏览器协议到 API 设计的全面对比与实测
人工智能·selenium·测试工具
星恒讯工业路由器4 小时前
5G FWA技术演进与趋势
网络·5g·信息与通信·4g·5g fwa·3gpp规范·fwa趋势
我的xiaodoujiao5 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
星夜夏空996 小时前
网络编程(1)
服务器·网络
川石课堂软件测试6 小时前
安全测试|常见SQL注入攻击方式、实例及预防
服务器·数据库·sql·功能测试·测试工具·安全·单元测试
上海云盾-小余7 小时前
中小站点防护避坑:低价高防服务存在的各类安全短板剖析
网络·爬虫·安全·ddos
数据知道9 小时前
邮件安全实战:SPF/DKIM/DMARC 配置与钓鱼绕过
网络·安全·web安全·网络安全·邮件安全
王莎莎-MinerU9 小时前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
Chloeis Syntax10 小时前
JAVAEE初阶 --- 构造HTTP请求
网络·网络协议·http·postman
砚凝霜10 小时前
软考网络工程师|第 1 章 计算机网络基础 完整备考笔记
网络·笔记·计算机网络