# OpenWrt 排障工具箱：家庭软路由必装插件和常用命令

- 原文地址：https://www.kuddy.cn/archives/233
- 发布时间：2026-05-11 00:55:51
- 更新时间：2026-05-18 02:42:22
- 分类：网络
- 标签：DevOps, OpenWrt, 网络

> # OpenWrt 排障工具箱：家庭软路由必装插件和常用命令 搭建 OpenWrt 旁路由、OpenClash、Wire...

---

# OpenWrt 排障工具箱：家庭软路由必装插件和常用命令

搭建 OpenWrt 旁路由、OpenClash、WireGuard 后，最重要的不是装一堆插件，而是要有一套能快速定位问题的工具。

本文整理一些家庭软路由常用的监控、抓包、流量统计、DNS 测试和虚拟机增强工具。

本文基于 OpenWrt 25 之后的 `apk` 包管理器。如果你的系统仍使用 `opkg`，可将命令替换为对应的 `opkg install`。

## 一、基础命令

更新软件源：


```
apk update
```


搜索软件包：


```
apk search tcpdump
apk search strongswan
apk search wireguard
```


安装软件包：


```
apk add tcpdump
```


删除软件包：


```
apk del tcpdump
```


查看已安装软件包：


```
apk list -I
```


查看某类已安装包：


```
apk list -I | grep wireguard
apk list -I | grep strongswan
```


## 二、tcpdump：最重要的抓包工具

安装：


```
apk add tcpdump
```


抓某个客户端：


```
tcpdump -i br-lan host 192.168.1.100
```


抓某个客户端访问某个目标：


```
tcpdump -i br-lan host 192.168.1.100 and host 183.2.172.177
```


抓 HTTPS：


```
tcpdump -i br-lan host 192.168.1.100 and tcp port 443
```


抓 WireGuard：


```
tcpdump -i br-lan udp port 51820
```


典型用途：

- 判断客户端请求有没有到 OpenWrt。
- 判断目标服务器有没有回包。
- 判断 WireGuard UDP 51820 是否到达。
- 判断 DNS 请求是否走到指定 DNS。

如果访问国内网站时只看到：


```
客户端 → 目标 IP：Flags [S]
```


但看不到：


```
目标 IP → 客户端：Flags [S.]
```


通常说明直连转发/NAT 路径有问题。

## 三、conntrack：查看连接跟踪

安装：


```
apk add conntrack-tools
```


查看当前连接数量：


```
conntrack -C
```


查看某个客户端连接：


```
conntrack -L | grep 192.168.1.100
```


只看 UDP：


```
conntrack -L -p udp
```


如果没有安装 conntrack，也可以看内核记录：


```
cat /proc/net/nf_conntrack | grep 192.168.1.100
```


典型用途：

- 看某个设备当前连接数。
- 判断 NAT 连接是否创建。
- 排查连接跟踪表是否异常。

## 四、nlbwmon：按设备统计流量

安装：


```
apk add nlbwmon luci-app-nlbwmon
/etc/init.d/nlbwmon enable
/etc/init.d/nlbwmon start
```


LuCI 页面一般在：


```
状态 → 带宽监控
```


用途：

- 查看每台设备用了多少流量。
- 找出异常耗流量设备。
- 看日流量、月流量。
- 对家庭全屋代理环境很实用。

## 五、luci-app-statistics：系统状态趋势

安装：


```
apk add luci-app-statistics collectd collectd-mod-interface collectd-mod-cpu collectd-mod-memory
/etc/init.d/collectd enable
/etc/init.d/collectd start
```


用途：

- 查看 CPU 使用率。
- 查看内存趋势。
- 查看接口流量。
- 观察 OpenClash / TUN / WireGuard 是否让软路由性能吃紧。

如果你跑 TUN 模式或全屋 WireGuard，非常建议装。

## 六、curl、jq、drill：网络测试三件套

安装：


```
apk add curl jq drill
```


测试 HTTP：


```
curl -I https://www.baidu.com
curl -I https://www.google.com
```


测试 DNS：


```
drill baidu.com @192.168.1.3
drill google.com @192.168.1.3
```


查看 OpenClash API 连接信息：


```
curl -s http://127.0.0.1:9090/connections | jq '.connections[] | {source:.metadata.sourceIP, host:.metadata.host, rule:.rule, chains:.chains}'
```


用途：

- 判断 DNS 是否正常。
- 判断网站是否可达。
- 格式化 OpenClash API 输出。
- 排查规则命中和代理链路。

## 七、wg show：WireGuard 状态检查

WireGuard 安装后可以用：


```
wg show
```


成功连接时会看到：


```
interface: wg0
  listening port: 51820

peer: 客户端公钥
  endpoint: 客户端公网IP:随机端口
  allowed ips: 10.7.0.2/32
  latest handshake: 几秒前
  transfer: xxx received, xxx sent
```


常见判断：

- 没有 peer：客户端 Peer 没有加载。
- 有 peer 但 handshake never：密钥、PSK、Allowed IP 或防火墙问题。
- 有 handshake 和 transfer：WireGuard 已经通。

## 八、ss / netstat：查看端口监听

查看 WireGuard 是否监听：


```
netstat -lunp | grep 51820
```


或：


```
ss -lunp | grep 51820
```


正常：


```
udp 0 0 0.0.0.0:51820 0.0.0.0:*
udp 0 0 :::51820      :::*
```


查看其他服务端口也可以类似操作。

## 九、nft：查看防火墙规则

OpenWrt 新版本使用 firewall4 / nftables。

查看完整规则：


```
nft list ruleset
```


查某个端口：


```
nft list ruleset | grep 51820
```


查防火墙规则配置：


```
uci show firewall
```


查 WireGuard 规则：


```
uci show firewall | grep -i wireguard
```


用途：

- 确认 LuCI 规则是否真正下发。
- 确认端口是否被 accept。
- 排查防火墙区域转发问题。

## 十、ip route：查看路由

查看默认路由：


```
ip route
```


OpenWrt 旁路由自身通常应该有：


```
default via 192.168.1.1 dev br-lan
192.168.1.0/24 dev br-lan
```


WireGuard 客户端 Peer 正常加载后，可能会看到类似：


```
10.7.0.2 dev wg0
10.7.0.3 dev wg0
```


如果内网要访问 WireGuard 客户端，OpenWrt 必须知道对应 `10.7.0.x` 走 wg0。

## 十一、logread：查看系统日志

查看全部日志：


```
logread
```


实时查看：


```
logread -f
```


查看 WireGuard / 网络相关：


```
logread -f | grep -i wireguard
```


查看 OpenClash：


```
logread -f | grep -i openclash
```


查看 DHCP / DNS：


```
logread -f | grep -i dns
```


用途：

- 看服务启动失败原因。
- 看接口 up/down。
- 看防火墙、DNS、OpenClash 异常。

## 十二、open-vm-tools：VMware / ESXi 虚拟机增强

如果 OpenWrt 跑在 ESXi / VMware 上，建议安装：


```
apk add open-vm-tools
```


启动：


```
/etc/init.d/vmtoolsd enable
/etc/init.d/vmtoolsd start
```


作用：

- 更好地支持关机 / 重启。
- 向宿主机报告 IP 和虚拟机状态。
- 改善 VMware 管理体验。

还有一个包：


```
open-vm-tools-fuse
```


它主要用于 VMware 共享文件夹。OpenWrt 软路由一般不需要，除非你明确要在虚拟机里挂载宿主机共享目录。

## 十三、SQM：改善满速时延迟

如果上传或下载跑满时，游戏、视频会议、网页延迟明显上升，可以考虑 SQM。

安装：


```
apk add luci-app-sqm sqm-scripts
```


适合：

- 上传文件时视频会议卡。
- 下载时游戏延迟暴涨。
- 家庭宽带上行较小。
- Bufferbloat 明显。

注意：SQM 最好开在真正出口设备上。如果主路由拨号，优先在主路由出口做。如果只能在 OpenWrt 旁路由做，也可以测试，但效果可能不如主路由出口准确。

## 十四、推荐安装清单

基础排障：


```
apk add tcpdump conntrack-tools curl jq drill htop
```


流量统计：


```
apk add nlbwmon luci-app-nlbwmon
```


系统监控：


```
apk add luci-app-statistics collectd collectd-mod-interface collectd-mod-cpu collectd-mod-memory
```


WireGuard：


```
apk add wireguard-tools luci-proto-wireguard
```


VMware 虚拟机：


```
apk add open-vm-tools
```


可选网络优化：


```
apk add luci-app-sqm sqm-scripts
```


## 十五、常见排障思路

### 国内网站打不开，国外能访问

检查：


```
drill baidu.com @192.168.1.3
tcpdump -i br-lan host 192.168.1.100 and tcp port 443
```


如果只有 SYN 没有 SYN-ACK，检查 LAN NAT / MSS。

### WireGuard 只有发送没有接收

检查：


```
tcpdump -i br-lan udp port 51820
wg show
```


UDP 到了但没有握手，检查密钥、PSK、Peer、Allowed IP。

### OpenClash 是否代理了 WireGuard 流量

看 OpenClash Connections 是否有来源：


```
10.7.0.x
```


如果没有，检查 OpenClash 是否接管 wg0 / WireGuard 网段。

### DNS 是否走到 AdGuardHome

在 AdGuardHome 查询日志里搜索域名，或用：


```
drill baidu.com @192.168.1.3
```


## 总结

OpenWrt 排障不要只靠猜。最有效的方法是：

- `tcpdump` 看包有没有到。
- `wg show` 看 WireGuard 有没有握手。
- `conntrack` 看连接有没有被跟踪。
- `drill` 看 DNS 是否正确。
- `nft` 看防火墙规则是否生效。
- `nlbwmon` 看设备流量。
- `luci-app-statistics` 看性能趋势。

有了这些工具，旁路由、OpenClash、WireGuard、DNS 的大多数问题都能定位到具体层级。