Fool's blog Fool's blog
首页
  • Ansible
  • Jenkins
  • Docker
  • Kubernetes
  • Linux常用命令
  • Git
  • Nginx
  • PVE
  • Samaba
  • Tcpdump
  • Python
  • Go
GitHub (opens new window)

The Fool

运维萌新
首页
  • Ansible
  • Jenkins
  • Docker
  • Kubernetes
  • Linux常用命令
  • Git
  • Nginx
  • PVE
  • Samaba
  • Tcpdump
  • Python
  • Go
GitHub (opens new window)
  • Git
  • Nginx
  • PVE
  • Samba
  • tcpdump
    • 常规过滤规则
      • 基于IP地址进行过滤:host
      • 基于端口进行过滤:port
      • 基于协议过滤:protocal
    • 常用参数
    • 逻辑运算符
  • Tools
The Fool
2026-1-27
目录

tcpdump

# tcpdump

默认输入tcpdump这个命令,它将监听第一个网络接口上所有流过的数据包,如下图:

1768391402642.png

  • 19:49:18.981276:表示抓包的时间,精确到微秒

  • IP:表示这是 IPv4 协议的数据包

  • HKGP.ssh:HKGP是主机名,.ssh 表示源端口是 22

  • >:表示数据包的流向,从 HKGP.ssh 发送到后面的目标地址

  • 目标地址与端口:.. 表示目标 IP 地址被省略或显示为两个点,可能是因为没有反向解析到主机名,9081 是目标端口。

  • Flags [P.]:表示 TCP 包头的标志位:

    P = PUSH,表示发送方希望接收方尽快将数据推送给应用程序,

    . = ACK,表示该包也携带确认号(acknowledgment)。

    常见标志组合: [S] = SYN [P.] = PUSH + ACK [F.] = FIN + ACK [.] = 只有 ACK

  • seq 3800796638:3800796754 :seq 是 TCP 序列号,这里是一个范围 起始值:结束值,3800796754 - 3800796638 = 116 字节(与最后的 length 一致)。

  • ack 270387180:表示该数据包的发送方期望收到的下一个字节的序列号是 270387180(是对之前对方发来数据的确认)。

  • win 166:接收窗口大小,表示发送方当前声明的接收窗口大小(单位是字节),这里是 166 字节。

  • length 116:数据长度,这里为长度是 116 字节

# 常规过滤规则

# 基于IP地址进行过滤:host

获取特定主机的报文

tcpdump host baidu.com
1

获取源地址或目标地址为baidu.com的报文

tcpdump dst baidu.com # src代表源地址、dst代表目标地址
1

获取网段的报文

tcpdump net 192.168.187.0/24
tcpdump net 192.168.187
1
2

# 基于端口进行过滤:port

获取80端口的报文

tcpdump tcp port 80
tcpdump port 80 or 22
tcpdump portrange 8000-9000 #获取端口范围
1
2
3

# 基于协议过滤:protocal

一般常用的协议:ip,ipv6,arp,icmp,tcp,udp等

tcpdump icmp
1

应用层的协议如http,https,ssh,dns不能直接tcpdump http,要

tcpdump port http #或者 tcpdump port 80
1

# 常用参数

  • -i:指定监听网络接口

默认监听在第一块网卡上,监听所有经过此网卡通过的数据包,在 tcpdump 后面加一个 -i 的参数,后面跟具体需要捕获的接口名称,就可以抓取经过这个具体接口的所有数据包。

tcpdump -i eth0
1

监听所有的网卡接口、用来查看是否有网络流量

tcpdump -i any
1
  • -w:将捕获到的信息保存到文件中,且不分析和打印在屏幕
tcpdump -w test.cap
tcpdump -w test.pcap
或者
tcpdump -i ens17 port ssh > test.txt
1
2
3
4
  • -r:从文件中读取数据,同时可以使用过滤器语法进行过滤分析
tcpdump -r test.cap
1
  • -n:不把ip转换为域名
  • -nn:不把协议和端口转换为名字
  • -c:指定抓包的次数
tcpdump -c 5
1
  • -C:配合-w使用,检查文件大小是否超过file-size(百万字节),如果超过关闭文件,另创一个文件继续写入
#-C 2 每个文件最大为 2 MB,-W 3最多保留 3 个这样的文件
tcpdump -C 2 -W 3 -w test.cap
1
2
  • -Q:选择数据包的方向
tcpdump -Q in
tcpdump -Q out
tcpdump -Q inout
1
2
3
  • -q:输入更简洁的内容
  • -D:显示所有可用网络接口的列表
tcpdump -D
1
  • -L:列出网络接口的已知数据链路
tcpdump -L
1
  • -s:指定抓取到的每个包的大小,单位byte,默认262144bytes
  • -A:已ASCII格式打印
tcpdump -A | grep www.baidu.com
1
  • -e:打印出数据链路层的头部信息,可以显示出MAC地址
tcpdump -e
1

# 逻辑运算符

and也可以用&&
or也可以用||
not也可以用!
1
2
3
#Linux#tcpdump
上次更新: 2026/03/12, 14:16:16
Samba

← Samba

最近更新
01
viper
12-20
02
Jenkins基础
12-19
03
Jenkins实践
12-19
更多文章>
Theme by Vdoing | Copyright © 2024-2026 The Fool
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式