找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

259

积分

0

好友

37

主题
发表于 昨天 05:01 | 查看: 20| 回复: 0
环境准备

为了确保您能顺利跟随本指南进行操作,请准备好以下环境:

  • 操作系统:Ubuntu 24.04 LTS 桌面版(其他如22.04、20.04等主流版本也基本适用)。
  • 软件工具:Wireshark 最新稳定版。
  • 权限要求:需要一个具有sudo权限的用户账户。
Wireshark是什么?

Wireshark是一款开源、跨平台的网络协议分析器。它就像一台用于网络世界的“显微镜”,能够捕获流经网卡的数据包,并将其内部细节(从底层以太网帧到高层应用数据)层层解析并展示出来。

对于网络管理员、开发者或安全工程师而言,Wireshark是排查故障、调试程序和分析流量的必备工具。同时,它也是初学者直观学习TCP/IP等网络协议的最佳途径之一。

在Ubuntu上安装与配置Wireshark

在Ubuntu等Linux系统上,我们推荐使用命令行进行安装,高效且准确。

1. 安装Wireshark

打开终端,依次执行以下命令:

# 更新软件包列表
sudo apt update
# 安装Wireshark(包含图形界面和命令行工具tshark)
sudo apt install -y wireshark

安装过程中,会弹出一个配置窗口,询问“是否允许非超级用户捕获数据包?”。请使用键盘方向键选择“”,然后按回车确认。这一步是关键,它通过权限配置,允许普通用户进行抓包操作。

2. 配置用户权限(关键步骤)

安装完成后,为了让当前用户能直接使用Wireshark抓包,需要将其加入wireshark组。

# 将当前登录用户添加到wireshark组
sudo usermod -aG wireshark $USER

执行此命令后,请务必注销当前用户并重新登录,或者重启电脑,以使新的组权限生效。

3. 验证安装

重启后,打开终端输入以下命令验证:

wireshark -v

如果成功显示Wireshark的版本信息,则说明安装成功。

初识Wireshark界面与核心概念

通过应用程序菜单搜索“Wireshark”启动,或直接在终端输入wireshark命令启动。

启动后,在开始抓包前,我们先快速了解三个核心窗口:

Wireshark主界面

  1. 数据包列表面板:以表格形式按时间顺序列出所有捕获的数据包。包含编号、时间戳、源/目标IP、协议等信息摘要。
  2. 数据包详情面板:这是分析数据包最重要的区域。单击列表中的一个数据包后,此处会以树状结构分层解析其所有内容(如帧、以太网头、IP头、TCP/UDP头、应用数据等)。
  3. 数据包字节流面板:以十六进制和ASCII码格式显示数据包最原始的二进制内容。当你在详情面板点击某个字段时,这里会高亮对应的原始字节。
实战:抓取并分析你的第一个Ping包

现在,让我们通过分析一次ping命令,来亲手捕获数据包。

第一步:选择网卡并开始捕获

  • 在Wireshark主界面的接口列表中,选择正在使用的网络接口(有线网络通常是 eth0,Wi-Fi通常是 wlan0)。可以通过观察接口名称后的流量波形图来判断活跃接口。
  • 双击该接口,Wireshark会立即开始捕获所有经过此接口的数据包。

第二步:执行Ping操作

  • 迅速打开一个新的终端窗口,输入命令:ping -4 -c 4 www.baidu.com。这个命令会向百度的服务器发送4个ICMP请求包(Ping请求)。

第三步:停止捕获并过滤

  • 当终端显示完Ping的回复结果后,回到Wireshark,点击工具栏左上角的红色停止按钮。
  • 此时可能已捕获大量数据包。为了快速找到Ping包(ICMP协议),在顶部显示过滤器栏中输入:icmp,然后按回车。界面将只显示ICMP协议的数据包,你应该能看到清晰的“请求”(Echo request)和“回复”(Echo reply)配对出现。

第四步:解读数据包

  • 在数据包列表中点选一个ICMP请求包(Type为8),然后在数据包详情面板中逐层展开。
  • 展开 Internet Protocol Version 4 层,可以看到源IP地址(你的电脑IP)和目标IP地址。
  • 继续展开 Internet Control Message Protocol,可以看到 Type: 8 (Echo (ping) request) 等信息。

恭喜!你已经成功完成了第一次抓包分析!

核心技能:使用显示过滤器精准定位

面对海量数据,显示过滤器是你的“火眼金睛”。它可以在捕获完成后,帮助你快速筛选出感兴趣的数据。以下是一份常用显示过滤器速查表,供你参考。

Wireshark 常用显示过滤器速查表

过滤器用途 过滤器表达式示例 说明
基础IP/端口过滤 ip.addr == 192.168.1.1 过滤与指定IP地址相关的所有流量(源或目标)
ip.src == 10.0.0.0/24 过滤源IP地址属于特定网段的数据包
tcp.port == 80 过滤TCP协议源或目标端口为80(HTTP)的数据包
!arp 排除ARP协议数据包,减少干扰
TCP协议分析 tcp.flags.syn == 1 过滤TCP SYN包,用于查看TCP连接请求(三次握手)
tcp.analysis.retransmission 非常实用,过滤出所有重传的TCP包,用于判断网络质量
tcp.flags.reset == 1 过滤TCP RST包,表示连接被重置
HTTP/HTTPS协议 http.request.method == “GET” 过滤HTTP的GET请求
http.response.code == 404 过滤HTTP状态码为404(未找到)的响应
tls.handshake.type == 1 过滤TLS/SSL握手的ClientHello报文
网络诊断 icmp.type == 3 过滤ICMP目标不可达错误
dns 过滤DNS域名解析查询和响应
逻辑组合 (ip.src == 192.168.1.100) && (tcp.port == 443) 组合过滤,只看来自某IP的443端口流量
http && !(ip.addr == 192.168.1.50) 查看除特定IP外的所有HTTP流量

Wireshark过滤器示例

小技巧:在显示过滤器输入框内输入时,Wireshark会自动提示可用字段。如果表达式背景变绿,说明语法正确;如果变红,则说明有误。

总结

至此,你已经成功在Ubuntu上安装并配置了Wireshark,完成了第一次ICMP抓包分析,并掌握了显示过滤器的基本用法。接下来,可以尝试抓取一次访问普通HTTP网站产生的数据包,并使用过滤器tcp.port == 80观察TCP三次握手和HTTP请求/响应的完整过程,这将帮助你更深入地理解网络通信的实际流程。

您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区(YunPan.Plus) ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-3 14:19 , Processed in 0.060279 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 CloudStack.

快速回复 返回顶部 返回列表