Wireshark (简体中文) - ArchWiki

Jump to content

# Wireshark (简体中文)

From ArchWiki
翻译状态：本文是 Wireshark 的翻译。上次翻译日期：2020-11-28。如果英文版本有所更改，则您可以帮助同步翻译。

Wireshark 是一款自由且开源的包分析器。可用于网络排错、网络分析、软件和通讯协议开发以及教学等。

## 安装

Wireshark 软件包分成了 CLI 版本和依赖 CLI 版本的前端界面.

- CLI 版本 - 安装 软件包 wireshark-cli。
- Qt 前端 - 安装 软件包 wireshark-qt。

注意： Wireshark 3.0 已经移除了 GTK 界面

## 以普通用户身份抓包

以 root 身份运行 Wireshark 是不安全的。Wireshark 已经实现了权限分离，因此 Wireshark 的图形界面（或 tshark CLI）能够以普通用户身份运行，而数据包捕获工具使用 root 身份运行[1]。

wireshark-cli 的安装脚本会为 `/usr/bin/dumpcap` 设置数据包捕获能力。

`/usr/bin/dumpcap` 仅能被 root 用户或 `wireshark` 群组用户执行，因此需要将用户加入 `wireshark` 用户组以使普通用户能够正常运行 Wireshark （参见 Users and groups (简体中文)#用户组管理）。

使用如下命令获得当前用户的抓包权限（中文 wiki 注）：

    $ sudo groupadd wireshark
    $ sudo usermod -a -G wireshark $USER
    $ sudo chgrp wireshark /usr/bin/dumpcap
    $ sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap

执行完如上命令重启生效。

## 一些抓包技巧

你可以通过使用 capture filters 和 display filters 准确获取你想抓取的数据包。

注意： capture filters 语法请参考 pcap-filter(7) ，display filters 语法参考 wireshark-filter(4)。

### 过滤 TCP 包

只查看所有的 TCP 数据包，在 "Filter" 拦输入 `tcp`，或者在终端中输入：

    $ tshark -f "tcp"

### 过滤 UDP 包

只想查看所有的 UDP 数据包，在 "Filter" 拦输入 `udp`，或者在终端输入：

    $ tshark -f "udp"

### 查看指定 IP 地址的数据包

将 `1.2.3.4` 替换为要查看的 IP 地址。

- 只想查看发到某个特定地址的数据包，输入 `ip.dst == 1.2.3.4`。

- 只想查看从某个特定地址发出的数据包，输入 `ip.src == 1.2.3.4`。

- 要查看某个特定地址的所有数据包，输入 `ip.addr == 1.2.3.4`。

### 排除特定 IP 地址的数据包

将 `1.2.3.4` 替换为要排除的 IP 地址。

    ip.addr != 1.2.3.4

### 查看局域网数据包

如果只想查看局域网数据包，使用

     (ip.src==10.0.0/8 AND ip.dst==10.0.0/8) OR (ip.src==172.16.0.0/12 AND ip.dst==172.16.0.0/12) OR (ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16)

这样可以过滤出所有来自私有网络地址的数据包。

### 查看制定端口的数据包

查看某两个或更多端口的流量：

    tcp.port==80||tcp.port==3306
    tcp.port==80||tcp.port==3306||tcp.port==443

Categories:

- Security (简体中文)
- Networking (简体中文)