# 单网口OpenWrt旁路由(OpenClash redir\-host)\+群晖qBittorrent综合配置文档 # 单网口 OpenWrt 旁路由(OpenClash redir\-host)\+ 群晖 qBittorrent 综合配置文档 > 场景说明: > 主路由:OpenWrt,IP:`192.168.1.1` > 软路由:单网口 OpenWrt,部署 OpenClash,作为旁路由。 > 设计目标:**设备网关指向软路由 IP 才走代理;其余设备网关保持 \[192\.168\.1\.1\]\(192\.168\.1\.1\),流量直连主路由,不经过软路由。** > 群晖 NAS 部署 qBittorrent,控制 BT 流量不走代理,Tracker 按需走代理。 > > ## 一、网络拓扑 主路由 \(\[192\.168\.1\.1\]\(192\.168\.1\.1\)\) ↔ 交换机 ↔ 软路由(单网口旁路由)、群晖 NAS、局域网终端 - 不使用代理设备:网关 `192.168.1.1`,流量全部经过主路由,绕过软路由 - 需要代理设备:手动修改网关为软路由 IP,流量交由 OpenClash 处理 ## 二、软路由基础配置(OpenWrt) ### 2\.1 关闭 DHCP 服务器 软路由作为旁路由,不能开启 DHCP,避免局域网 IP 分配混乱。 1. LuCI → 网络 → DHCP/DNS 2. 停用 DHCP 服务器,保存应用。 ### 2\.2 关闭 DNS 劫持(系统层面) 清理 OpenWrt 自带 DNS 劫持规则,避免和 OpenClash DNS 劫持冲突。 ### 2\.3 关闭 OpenClash ARP 劫持(核心!解决全网卡顿根源) > 故障现象:开启 OpenClash 后全网变慢,关闭立刻恢复。 > 根因:ARP 劫持(ARP 欺骗)会劫持局域网所有去往主路由`192.168.1.1`流量,全部转发到软路由。单网口软路由性能不足,造成全网卡顿。 > 你的场景**完全不需要 ARP 劫持**。 > > #### 查看 ARP 劫持状态(SSH 软路由执行) ```sh # 查看arpspoof进程 ps | grep arpspoof # 查看iptables arp相关规则 iptables -L | grep -i arp ``` - 有 arpspoof 进程运行 = ARP 劫持正在生效。 #### 临时关闭 ARP 劫持(SSH,重启 OpenClash 会复原) ```sh # 终止arpspoof进程 killall arpspoof 2>/dev/null ``` > 永久关闭必须网页端操作: > OpenClash → 设置 → 取消勾选【ARP 劫持 / 局域网 ARP 欺骗】,保存,停止并重启 OpenClash 内核。 > > #### 客户端清除 ARP 缓存 macOS 终端: ```bash sudo arp -d 192.168.1.1 ``` 校验:`arp -a`,查看`192.168.1.1`MAC 地址,必须为主路由原生 MAC,不是软路由 MAC。 ## 三、OpenClash 配置:redir\-host 模式(fw4/nftables) > 系统环境:OpenWrt fw4,底层使用 nftables,不再使用传统 iptables。 > redir\-host 原理:基于 nftables 劫持 TCP/UDP 流量,仅对**网关指向软路由**的设备生效;网关为主路由的设备不受任何影响。 > redir\-host 自带 DNS 劫持,同时拦截境外 QUIC \(UDP443\),防止协议绕过代理。 > > ### 3\.1 OpenClash 网页关键参数 1. 运行模式:`redir-host` 2. 监听网卡:选择软路由唯一 LAN 网卡 3. ARP 劫持:❌ 关闭 4. DNS:开启 OpenClash 内置 DNS 劫持,防止 DNS 泄漏 5. QUIC 拦截:启用,拒绝境外 UDP:443(配置自动生成 nft 规则) ### 3\.2 校验 OpenClash 内核状态 ```sh ps | grep clash ``` ✅正常输出:存在 clash 主进程 \+ openclash\_watchdog 看门狗进程。 ### 3\.3 查看 nftables 流量劫持规则(fw4 环境) > fw4 环境没有 iptables CLASH nat 链,使用 nft 查看 > > ```sh nft list ruleset | grep -i clash ``` ✅正常特征: 1. `th dport 53 ... redirect to :53 comment "OpenClash DNS Hijack"`:DNS 劫持生效 2. `ip protocol tcp jump openclash` / `ip protocol udp jump openclash_mangle`:TCP/UDP 流量送入 clash 内核处理 3. `udp dport 443 ... reject with icmp port-unreachable comment "OpenClash QUIC REJECT"`:拦截境外 QUIC > 备注:`chain openclash {}`为空链属于 fw4\+redir\-host 正常现象,转发逻辑在 clash 内核内部实现,非故障。 > > ### 3\.4 redir\-host 业务功能自检清单(必做) 1. ✅ ARP 检查:无 arpspoof 进程;`192.168.1.1`MAC 为主路由原生 MAC,无 ARP 劫持 2. ✅ 非代理设备(网关 \[192\.168\.1\.1\]\(192\.168\.1\.1\)) - \[ifconfig\.me\]\(ifconfig\.me\):返回家庭宽带公网 IP,不是代理 IP - [dnsleaktest\.com](https://dnsleaktest.com):DNS 为国内运营商 / 公共 DNS,无泄露 3. ✅ 代理设备(网关 = 软路由 IP) - 国内网站:直连,使用宽带 IP;匹配规则的境外域名走代理 IP - [dnsleaktest\.com](https://dnsleaktest.com):DNS 由 OpenClash 接管,无 DNS 泄露 - ping \[223\.5\.5\.5\]\(223\.5\.5\.5\),延迟稳定,无大量丢包,全网不再卡顿 4. ✅ nft 规则:nft list ruleset 可读到 OpenClash 劫持规则 ## 四、群晖 Docker qBittorrent 配置(分流需求) > 需求:qb 主体流量直连不走代理;Tracker 可按需走代理。 > 拓扑:群晖网关保持主路由`192.168.1.1`,不受软路由 OpenClash 影响。 > > ### 方案说明 不使用全局代理,两种方案可选: 方案 A:qBittorrent WebUI 内配置代理,仅 Tracker 流量走代理,Peer 流量直连。 方案 B:Docker 网络层面控制,容器不走代理。 ### 查看 qb 日志,验证 Tracker 是否走代理 1. WebUI 查看日志 2. SSH 命令查看日志 3. 验证要点:Tracker 连接按预期走代理,Peer 流量直连。 > 重点:群晖网关不修改,保持主路由,qb 不会被软路由 redir\-host 劫持。 > > ## 五、常见故障排查 1. 一开 OpenClash 全网卡顿 - 原因:ARP 劫持开启,全局劫持内网流量。 - 解决:关闭 ARP 劫持,清理 ARP 缓存,重启 OpenClash 内核。 2. nft list 看不到 clash 规则,内核进程在运行 - 解决:OpenClash 网页保存配置,完全停止再重启内核,重新注入 nft 规则。 3. redir\-host 模式下 DNS 泄漏 - 解决:OpenClash 开启 DNS 劫持,拦截 53 端口 UDP/TCP,关闭上游 UDP DNS。 4. 网关指向软路由的设备无法走代理 - 检查:监听网卡选择是否正确;规则集、代理组配置;内核是否正常启动。 ## 六、重要注意事项 1. 单网口旁路由性能有限,不要使用超大 Meta 内核、超大规则集,减少 CPU 占用。 2. redir\-host 只劫持网关指向软路由设备,和本项目设计目标匹配。 3. 不要同时开启 ARP 劫持,ARP 劫持会全局接管整个局域网流量,造成性能瓶颈。 4. 软路由 fw4 \(nftables\) 环境,不要使用传统 iptables 命令查找 clash nat 链,会报错。 --- 如果你需要,我可以再单独导出一份**精简版一页纸快速核对清单**,方便你每次修改配置后快速打勾自检。需要吗? > (注:部分内容由豆包工作 AI 生成)