本文最后更新于:2026年8月5日 下午

记录在 Ubuntu 22.04 上安装 Wireshark、配置免 sudo 抓包权限,以及用它诊断设备网络流量的过程。安装走官方 PPA 取最新稳定版,权限通过给 dumpcap 设置 capability 让普通用户也能抓,使用上关键是分清两套过滤器。最后以发现一台相机的 IP 作为实战场景。

环境:Ubuntu 22.04 (jammy) / x86_64;24.04 步骤基本一致。

快速安装

四条命令走完,之后在应用菜单打开 Wireshark、选网卡即可抓包,不需要 sudo:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 1) 加官方 stable PPA(Wireshark 团队维护)并更新
sudo add-apt-repository -y ppa:wireshark-dev/stable && sudo apt update

# 2) 安装 GUI 与命令行 tshark;安装时弹窗问"非 root 抓包?"选 <Yes>
sudo apt install -y wireshark tshark

# 3) 把当前用户加入 wireshark 组以免 sudo,随后注销重登或 newgrp 生效
sudo usermod -aG wireshark $USER && newgrp wireshark

# 4) 验证
wireshark --version # 期望 4.6.x
getcap $(command -v dumpcap) # 期望: cap_net_raw,cap_net_admin+eip
groups | grep -o wireshark # 期望: wireshark

走 PPA 的原因

Ubuntu 自带源里的 Wireshark 在 22.04 上还是 3.6.2,落后较多。几种安装方式对比:

方式 版本 维护 备注
官方 stable PPA(ppa:wireshark-dev/stable 最新稳定(4.6.x) Wireshark 团队官方,apt 自动更新 比较省心
apt install wireshark(自带源) 旧(3.6.2) 稳定 版本落后
Snap 版 较新 sandbox 抓网卡容易踩权限坑 不太顺手
源码编译 最新 依赖和升级都要自己来 仅研究用
官网 .deb 最新 不走 apt,升级手动 可选

走 PPA 主要是兼顾了版本新和 apt 托管,权限配置也能在安装时一并完成。

安全上有一点要注意:不要图方便用 sudo wireshark 抓包。Wireshark 解析协议的代码面很大,以 root 运行相当于把系统暴露给抓到的恶意包。做法是只给底层抓包程序 dumpcap 赋 capability,让普通用户也能抓。

安装与权限配置

安装

1
2
3
sudo add-apt-repository -y ppa:wireshark-dev/stable
sudo apt update
sudo apt install -y wireshark tshark

安装中会弹出 debconf 蓝色界面:

Should non-superusers be able to capture packets?

<Yes>。安装脚本会据此把 dumpcap 的属组设为 wireshark、赋予 cap_net_raw,cap_net_admin,并创建 wireshark 用户组。

如果之前装过旧版、当时选了 No,或者想改这个选项,随时:

1
sudo dpkg-reconfigure wireshark-common

免 sudo 抓包

把当前用户加入 wireshark 组:

1
sudo usermod -aG wireshark $USER

组变更不会在当前会话立即生效,二选一:注销后重新登录(最干净),或临时 newgrp wireshark(只对当前终端有效)。

验证

1
2
3
wireshark --version                       # 应显示 4.6.x
groups # 应能看到 wireshark
getcap "$(command -v dumpcap)" # 应显示 cap_net_raw,cap_net_admin+eip

三项都对即可。如果 getcap 输出为空,说明 capability 没配上,补一下:

1
sudo setcap 'CAP_NET_RAW,CAP_NET_ADMIN+eip' "$(command -v dumpcap)"

基本使用

启动

应用菜单搜 Wireshark,或终端 wireshark &。启动后是网卡列表,每条旁边的折线图是该网卡的实时流量。

Wireshark 启动后的网卡列表

一次抓包流程

  1. 选中要监听的网卡(如连相机的 enx...、无线 wlp...),双击或点左上鲨鱼鳍开始。
  2. 想降噪可以先在顶部 Capture 框写捕获过滤器,只抓关心的包。
  3. 抓包中每行一个包、自动滚动,三窗格:包列表 / 协议树 / 原始字节。
  4. 红色方块停止。
  5. Ctrl+S 保存为 .pcapng(推荐)或 .pcap

界面要点

区域 用途
顶部 Capture / Display Filter 输入框 左边漏斗是捕获过滤(抓前设),右边放大镜是显示过滤(抓后筛),两者语法不同
包列表 时间、源、目的、协议、长度、Info,点列头排序
协议树(中窗) 展开看每一层字段,右键字段可"作为过滤器应用"
底部 hex 原始字节,核对协议细节时用
底部状态栏 显示过滤器匹配数、抓包总数、丢包提示

过滤器

Wireshark 有两套过滤器,语法完全不同,这是使用中最容易混的地方。

捕获过滤器 Capture Filter 显示过滤器 Display Filter
时机 抓包前决定抓哪些 抓包后在已抓到的包里筛选
语法 BPF Wireshark 自有
位置 顶部 Capture 框(漏斗) 顶部 Display 框(放大镜)
写错后果 抓不到就是抓不到,无法挽回 只是显示不出来,数据还在,改对即可

习惯上先用捕获过滤器粗筛(只抓某主机/端口),再用显示过滤器精筛。

显示过滤器(高频)

1
2
3
4
5
6
7
8
9
10
11
12
ip.addr == 192.168.1.64            # 源或目的是它
ip.src == 192.168.1.64 # 仅源
eth.addr == 68:da:73:ad:5e:2d # 按 MAC
tcp.port == 8000 # 海康 SDK
tcp.port == 554 || udp.port == 554 # RTSP
arp # 所有 ARP(发现设备用)
icmp # ping
not tcp.analysis.retransmission # 排除重传

ip.addr == 192.168.1.64 && tcp.port == 8000
ip.addr == 192.168.1.64 && (tcp.port == 80 || tcp.port == 554 || tcp.port == 8000)
!(ip.addr == 192.168.1.159) # 排除自己

输入框颜色:绿合法、红非法、黄合法但可能不是想要的。在协议树里右键某字段 → Apply as Filter,可以自动生成表达式,不用背语法。

捕获过滤器(BPF)

1
2
3
4
5
6
7
host 192.168.1.64                  # 只抓和该主机的流量
dst host 192.168.1.64 # 只抓发往它的
tcp port 8000 # 只抓 8000 端口
udp # 只抓 UDP
arp # 只抓 ARP
not port 22 # 排除 SSH,远程调试时降噪很实用
host 192.168.1.64 and not port 22

实战:发现一台相机的 IP

监听连着相机的那张网卡的流量,给相机重新上电,就能看到它发出的包。

抓到的相机流量

图中这个 192.168.2.2 就是要找的相机 IP。

参考资料



文章链接:
https://www.zywvvd.com/notes/tools/wireshark/wireshark/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

Wireshark 在 Ubuntu 上的安装配置与抓包实践
https://www.zywvvd.com/notes/tools/wireshark/wireshark/
作者
Yiwei Zhang
发布于
2026年7月9日
许可协议