Files
StudyDiary-20261009/02-学习笔记/Tips/OpenWrt单网口旁路由 + 群晖qBittorrent 综合配置手册.md

306 lines
9.3 KiB
Markdown
Raw Normal View History

2026-10-09 22:06:40 +08:00
# 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 生成)