Files
StudyDiary-20261009/02-学习笔记/Tips/OpenWrt单网口旁路由 + 群晖qBittorrent 综合配置手册.md
CrazyJasonwell e97be9ac8c commit all
2026-10-09 22:06:40 +08:00

306 lines
9.3 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenWrt单网口旁路由 \+ 群晖qBittorrent 综合配置手册
# OpenWrt 单网口旁路由 \+ 群晖 qBittorrent 综合配置手册
> 复制下面全部内容,粘贴到记事本,文件另存为:`OpenWrt_群晖QB配置手册.md`,编码选择 **UTF\-8**
>
>
```markdown
# OpenWrt单网口旁路由 + 群晖qBittorrent 综合配置手册
## 模块一 OpenWrt单网口旁路由(关闭DHCP+彻底关闭DNS劫持)
### 一、适用场景
- 设备:单网口软路由、无独立WAN口、单口复用
- 模式:纯旁路由模式,**主路由负责拨号、PPPoE、DHCP分配IP**
- 需求:关闭OpenWrt DHCP、关闭DNS 53端口劫持,不篡改终端DNS请求
- 核心原则:**全程不新建、不配置WAN接口**,防止单网口断后台
### 二、前置风险提示
1. OpenWrt关闭DHCP后,内网设备无法自动获取IP,IP分配全部交给上层主路由DHCP。
2. 单网口设备不要随意修改接口、新建WAN,极易丢失后台访问。
3. DNS劫持来源两类:防火墙53端口DNAT规则 / AdGuardHome/SmartDNS等插件强制拦截DNS。
### 三、核心配置步骤(LuCI图形界面 + SSH)
#### 步骤1 LAN接口基础配置(旁路由核心)
网络 → 接口 → LAN → 编辑
1. 常规设置
- IPv4地址:同网段静态IP(例:主路由`192.168.1.1`,旁路由`192.168.1.2`,避免IP冲突)
- 子网掩码:`255.255.255.0`
- IPv4网关:填写**主路由IP**
- DNS服务器:填写**主路由IP**
2. DHCP服务器选项卡:勾选【忽略此接口】,关闭LAN口DHCP分发
3. 物理设置:单网口建议拆除多余桥接,仅绑定eth0
保存&应用。
#### 步骤2 SSH命令永久关闭DHCP
```bash
uci set dhcp.lan.ignore="1"
uci commit dhcp
/etc/init.d/dnsmasq restart
```
校验命令:
```bash
uci show dhcp.lan
```
输出含 `dhcp.lan.ignore='1'` 代表 DHCP 关闭成功。
#### 步骤 3 清除 DNS 劫持
1. 图形界面:网络 → 防火墙 → 端口转发,**删除所有目标端口 53 的 DNAT 规则**,保存应用。
2. SSH 查看 53 端口劫持规则:
```bash
iptables -t nat -L PREROUTING --line-numbers | grep dpt:53
```
删除规则(行号替换为你查到的数字)
```bash
iptables -t nat -D PREROUTING 1
```
重复执行直到无输出。
3\. 插件设置(AdGuardHome / SmartDNS):关闭「拦截 53 端口、强制劫持 DNS」。
#### 步骤 4 防火墙必要设置
网络 → 防火墙
- LAN 区域转发:接受
- **开启 IP 动态伪装(MASQ)**,否则流量无法转发
- 不新增 WAN 区域
### 四、DNS 劫持有效性测试
Windows CMD 执行(设备网关设旁路由 IP,DNS 手动填 \[223\.5\.5\.5\]\(223\.5\.5\.5\))
```cmd
nslookup baidu.com 223.5.5.5
```
✅正常:服务器 =`223.5.5.5`
❌劫持:服务器显示旁路由内网 IP
OpenWrt 内 SSH 测试:
```bash
nslookup baidu.com 223.5.5.5
```
### 五、核对清单
* [ ] LAN DHCP 已忽略关闭
* [ ] 防火墙无 53 端口 DNAT 劫持规则
* [ ] DNS 插件劫持关闭
* [ ] LAN 防火墙 MASQ 开启
* [ ] 没有新建 WAN 接口
---
## 模块二 群晖 NAS qBittorrent 配置(Docker 部署)
> 环境:群晖 DSM,Docker 安装 qBittorrent,配合旁路由做流量出口,配套目录权限、文件整理、防踩坑设置
>
>
### 一、前置准备
1. 群晖存储空间:新建共享文件夹,示例命名`qb-download`
- 子目录建议:`incomplete`(临时未完成)、`complete`(完成文件)
2. 权限:给 Docker 的 qb 容器读写权限,**不要用 root 直接跑**,设置 PUID/PGID(群晖用户 UID)
3. 网络模式:推荐`bridge`桥接模式;如需走旁路由,容器网关指定为 OpenWrt 旁路由 IP。
### 二、Docker 容器环境变量(常用模板)
```Plain Text
PUID=1026
PGID=100
TZ=Asia/Shanghai
WEBUI_PORT=8080
```
端口映射:
- 8080:8080 Web 管理面板
- 50681:50681/TCP\+UDP BT 监听端口(自行选用)
挂载目录:
- `/volume1/qb-download/complete` → `/downloads`
- `/volume1/qb-download/incomplete` → `/incomplete`
- `/volume1/docker/qb/config` → `/config`
### 三、qBittorrent WebUI 核心参数配置
打开 WebUI → 选项
1. **连接**
- 监听端口固定,启用 UPnP/NAT\-PMP(有公网 IP 推荐开启)
- 限制全局连接数,防止占满内网带宽
2. **下载**
- ✅ 启用:未完成文件保存到单独目录(incomplete)
- 完成后自动移动到`complete`目录
- 预分配磁盘空间:按需开启(大文件推荐)
3. **BitTorrent**
- DHT、PEX、本地对等发现:按需开启(私种关闭 DHT/PEX)
4. **高级**
- 不要开启不必要的代理;如需走旁路由,**全局网关在 Docker 层面设置,不要在 qb 内单独配置代理**
### 四、配套:文件名清理 / 刮削脚本(Tinymediamanager)
> 需求:自动清理文件名特殊字符、目录监听、媒体库刮削
>
>
1. TinyMediaManager 用于媒体元数据刮削,自动匹配电影 / 剧集海报、简介
2. 文件名清洗脚本:正则过滤特殊符号,清理种子下载带来的杂乱文件名,避免 Emby/Jellyfin 识别失败
3. 注意:脚本运行用户 UID 必须和 qb 下载文件 UID 一致,防止权限报错。
### 五、权限 \& 避坑重点
1. 权限大坑:qb 下载文件归属 PUID 用户,**群晖文件管理器看不到 / 无法删除,就是 PUID 不匹配**
2. 旁路由联动:
- 群晖本身网关可保留主路由;仅 Docker 容器单独指定网关走 OpenWrt 旁路由
- 注意:DNS 设置,群晖 / 容器 DNS 不要被劫持,使用公共 DNS(\[223\.5\.5\.5\]\(223\.5\.5\.5\))
3. 端口:群晖防火墙放行 qb 监听端口;路由器端口映射(有公网 IP)
4. 硬盘:开启 SSD 缓存,大流量下载注意硬盘休眠策略,避免频繁启停损坏硬盘
### 六、备份建议
1. qBittorrent:备份 `/config` 整个目录(包含配置、种子列表)
2. 定期导出 torrent 种子文件做异地备份
---
## 附录 A:故障排查小节
### 1\. qBittorrent 无速度 / Tracker 连接失败
1. DNS 问题:容器内 DNS 被劫持。在 Docker 容器配置内手动指定 DNS 为`223.5.5.5`,不要自动获取。
2. 端口不通:
- 检查群晖防火墙放行 BT 监听端口 TCP/UDP
- 公网环境:主路由端口映射,确认 UPnP 正常
3. 私种站点:关闭 DHT、PEX;核对站点密钥、passkey,检查种子是否过期
4. 网关错误:容器网关没有正确指向旁路由 IP;检查 OpenWrt 防火墙 MASQ 是否开启
### 2\. 群晖文件权限报错(无法删除、看不到文件)
- 根源:PUID/PGID 和群晖本地用户 ID 不一致
- 解决:在容器环境变量修改 PUID,与你群晖登录用户 UID 保持一致;重建容器,不要直接修改已下载文件权限。
> 获取群晖 UID:SSH 登录群晖,执行 `id 你的用户名`
>
>
### 3\. OpenWrt 旁路由故障
1. 无法访问 OpenWrt 后台:检查电脑 IP 网段;单网口不要新建 WAN,修改 LAN IP 后需要用新 IP 访问
2. 设备网关指向旁路由但无法上网:LAN 区域 IP 动态伪装 \(MASQ\) 未开启;检查主路由与旁路由网段一致
3. DNS 劫持复现:重启防火墙后 53 端口 DNAT 规则恢复,回到 LuCI 防火墙端口转发页面删除持久化规则;检查 AdGuardHome/SmartDNS 插件劫持开关
### 4\. TinyMediaManager 刮削识别失败
1. 文件名残留特殊符号,正则清洗脚本未执行,媒体库无法识别剧集 / 电影
2. 文件权限:脚本运行用户没有读取 complete 目录权限
3. 网络:TMM 的 DNS 被劫持,无法访问元数据站点,使用公共 DNS
## 附录 B:定期自动备份脚本(群晖任务计划程序)
> 用途:自动备份 qb 的 config 目录和种子,保存到群晖另一存储目录,可设置定时任务(每日凌晨执行)
> 使用方法:群晖控制面板 → 任务计划程序 → 新增【用户定义的脚本】,填入下面脚本,修改路径为你实际路径
>
>
```bash
#!/bin/bash
# qBittorrent配置备份脚本
BACKUP_SRC="/volume1/docker/qb/config"
BACKUP_DST="/volume1/backup/qb_backup"
TMP_NAME="qb_backup_$(date +%Y%m%d_%H%M%S).tar.gz"
# 创建备份目录
mkdir -p ${BACKUP_DST}
# 打包备份
tar -zcf ${BACKUP_DST}/${TMP_NAME} ${BACKUP_SRC}
# 保留最近7天备份,删除旧备份
find ${BACKUP_DST} -name "qb_backup_*.tar.gz" -mtime +7 -delete
```
> 注意事项:
>
> 1. 修改脚本内路径为你真实的存储路径
>
> 2. 任务运行用户选择和 qb 相同 UID 的用户,避免权限报错
>
> 3. 建议备份目录放在不同硬盘 / 存储池,防止单盘损坏丢失
>
>
## 附录 C:整体网络拓扑
```Plain Text
光猫 → 主路由(拨号+DHCP)
↓
├─ 群晖NAS(Docker qBittorrent)
└─ 单网口OpenWrt旁路由(不拨号、无WAN,关闭DHCP+关闭DNS劫持)
```
```Plain Text
## 📝 保存操作步骤
1. 全选上面所有文本,复制
2. 电脑桌面右键 → 新建 → 文本文档
3. 粘贴内容进去
4. 文件 → 另存为
- 文件名:`OpenWrt_群晖QB配置手册.md`
- 编码:**UTF-8**
5. 保存完成,可用Typora、VS Code等软件打开查看。
如果你后续还要新增其他配置(比如飞牛OS、Audiobookshelf),我可以继续追加到这份文档里。
```
> (注:部分内容由豆包工作 AI 生成)