收起左侧

折腾qwrt旁路由的经验分享【doubao+其他教程】

2
回复
166
查看
[ 复制链接 ]

0

主题

4

回帖

0

牛值

江湖小虾

Qwrt 旁路由配置验证+nas和容器互通+网关自动切换

纯新手踩坑记录,求大佬指导,过程中nas失联重装过,实现仅NAS/指定设备走代理、后面有NAS网关自动切换配置,防止qwrt掉线,nas上不了网

文档说明

本文档仅适用于飞牛OS应用商店提供的「定制版Qwrt」,该版本已内置自动macvlan网络配置,无需手动敲复杂的Docker网络命令;默认关闭DHCP服务,IP伪装可直接通过Web界面配置,小白也能快速上手,全程可视化操作占比90%以上。


前置条件

  1. 飞牛OS(fnOS)正常运行,已接入局域网
  2. 主路由(如小米/华为/TP-Link)正常上网,IP段为 192.168.31.0/24(若不是,需同步调整后续所有IP参数)
  3. 已准备好代理节点信息(仅需代理功能时才需要,仅做旁路由转发可跳过)

核心优势(对比通用Docker OpenWrt)

自动配置macvlan网络:无需手动敲Docker命令创建网络、容器

自动分配同网段IP:默认分配 192.168.31.3,无需手动修改容器网络

默认关闭DHCP服务:开箱即用,避免与主路由DHCP冲突,无需额外禁用

自动开启IP转发:旁路由底层能力已内置,无需额外配置内核参数

Web界面一键配置IP伪装:无需手动敲iptables命令,规则永久生效

NAS专属配置入口:飞牛OS应用商店提供一键配置向导

支持网关自动故障切换:Qwrt掉线NAS自动切回主路由,不影响正常上网


第一阶段:飞牛OS应用商店安装Qwrt

  1. 登录飞牛OS管理后台
  2. 进入「应用商店」,搜索「Qwrt」
  3. 点击「安装」,按向导填写以下参数(其他默认即可):| 参数项 | 填写内容 |
    | -------- | ---------------------------------------------- |
    | 容器名称 | qwrt(或自定义) |
    | 父网卡 | 选择飞牛OS的物理网卡(如 enp2s0) |
    | Qwrt IP | 192.168.31.3(默认即可,需与主路由同网段) |
    | 主路由IP | 192.168.31.1(默认即可,需与实际一致) |
  4. 点击「确认安装」,等待1-2分钟,容器自动启动

第二阶段:Qwrt旁路由基础配置

2.1 登录Qwrt后台

浏览器访问 http://192.168.31.3,输入默认账号密码(飞牛OS应用商店安装页有提示,通常为 root/passwordadmin/admin

2.2 核对DHCP服务状态(核心!飞牛定制版默认已关闭)

飞牛OS应用商店安装的Qwrt默认已关闭DHCP服务,仅需核对确认,避免与主路由冲突:

  1. 进入「网络」→「接口」→「LAN」→「修改」
  2. 切换到「DHCP服务器」→「基本设置」,确认已勾选「忽略此接口」
  3. 切换到「DHCP服务器」→「IPv6设置」,确认「路由通告服务」「DHCPv6服务」「NDP代理」全部设为「已禁用」
  4. 若状态不符,修改后点击「保存&应用」,状态正确则无需操作

2.3 开启IP动态伪装(核心!Web界面一键配置,无需手动命令)

方式1:Luci可视化界面(推荐,永久生效,重启不丢失)

  1. 进入「网络」→「防火墙」→「区域设置」
  2. 找到第一行 lan 区域,勾选「IP动态伪装(Masquerading)」,同步建议勾选同排的「MSS钳制」(优化TCP大包卡顿问题)
  3. 拉到页面最底部,点击「保存&应用」,等待防火墙重启完成
  4. 配置完成后,系统会自动生成永久生效的伪装规则,无需手动敲任何iptables命令

方式2:命令行(仅可视化界面配置不生效时备用)

  1. 进入飞牛OS终端,执行 docker exec -it qwrt bash 进入Qwrt容器
  2. 编辑防火墙自定义规则:vi /etc/firewall.user
  3. 在文件末尾添加:
    # Qwrt旁路由专属LAN口伪装规则
    iptables -t nat -I postrouting_lan_rule -o br-lan -j MASQUERADE
    
  4. Esc → 输入 :wq 保存退出
  5. 重启防火墙:/etc/init.d/firewall restart

2.4 (可选)配置代理功能

根据你使用的代理插件(如Clash/PassWall/ShadowSocksR Plus+),在Qwrt后台的「服务」菜单中找到对应插件,填写代理节点信息并开启「全局代理/透明代理」即可。


第三阶段:飞牛OS(NAS)配置(仅NAS走代理)

3.1 临时配置(测试用,重启失效)

进入飞牛OS终端,依次执行以下命令:

# 1. 开启物理网卡混杂模式
sudo ip link set enp2s0 promisc on > /dev/null 2>&1

# 2. 删除旧的macvlan-proxy接口(避免重复创建报错)
sudo ip link del macvlan-proxy 2>/dev/null

# 3. 创建macvlan虚拟接口(绕开macvlan原生隔离)
sudo ip link add macvlan-proxy link enp2s0 type macvlan mode bridge

# 4. 分配同网段IP并启用接口
sudo ip addr add 192.168.31.4 dev macvlan-proxy
sudo ip link set macvlan-proxy up

# 5. 添加到Qwrt的静态路由
sudo ip route add 192.168.31.3 dev macvlan-proxy

# 6. 添加高优先级默认路由(优先走Qwrt,metric 50 < 主路由默认100)
sudo route add default gw 192.168.31.3 dev macvlan-proxy metric 50

3.2 永久配置(开机自启,推荐)

步骤1:编辑开机自启脚本

进入飞牛OS终端,执行 sudo vi /etc/rc.local

步骤2:粘贴配置内容

exit 0 之前粘贴以下内容(注意替换 enp2s0 为你的实际物理网卡名):

#!/bin/bash
# 飞牛OS Qwrt旁路由永久配置
ip link set enp2s0 promisc on > /dev/null 2>&1
ip link del macvlan-proxy 2>/dev/null
ip link add macvlan-proxy link enp2s0 type macvlan mode bridge
ip addr add 192.168.31.4 dev macvlan-proxy
ip link set macvlan-proxy up
ip route add 192.168.31.3 dev macvlan-proxy
route add default gw 192.168.31.3 dev macvlan-proxy metric 50

exit 0

步骤3:赋予脚本可执行权限并启用服务

sudo chmod a+x /etc/rc.local
sudo systemctl enable rc-local
sudo systemctl restart rc-local

第四阶段:验证配置是否成功

4.1 验证Qwrt基础能力

进入Qwrt后台,执行「网络诊断」→「Ping测试」,输入 baidu.com,能正常ping通即可。

4.2 验证飞牛OS(NAS)流量路径

进入飞牛OS终端,执行:

traceroute baidu.com

预期输出

1  192.168.31.3 (Qwrt)  0.1xx ms  → 第一跳是Qwrt,路由优先级配置成功
2  192.168.31.1 (主路由)  0.5xx ms  → 第二跳是主路由,流量转发正常

4.3 验证飞牛OS(NAS)实际上网

进入飞牛OS终端,执行:

# 测试TCP访问(浏览器核心协议)
curl -s http://www.baidu.com | grep "百度"
# (可选)验证代理是否生效(返回代理节点IP)
curl ip.sb
  • 能看到“百度”关键词 → TCP流量正常
  • 返回代理节点IP → 代理功能生效

第五阶段:(可选)指定其他设备走Qwrt

如果想让手机、电脑等其他设备也走Qwrt,不要修改主路由全局DHCP网关(容错性差,Qwrt挂了全屋断网),仅需在设备网卡设置里**手动设置静态IP,把网关改成 192.168.31.3**即可。


第六阶段:(可选)NAS网关自动切换配置(Qwrt掉线自动切主路由)

功能说明

配置后实现:

  • Qwrt正常在线 → NAS优先走Qwrt旁路由
  • Qwrt故障/关机/掉线 → 3秒内自动切回主路由,保证NAS正常上网
  • Qwrt恢复在线 → 自动切回旁路由,全程无需人工干预

6.1 创建自动切换看门狗脚本

进入飞牛OS终端,执行:

sudo vi /etc/gw-monitor.sh

i 进入编辑模式,粘贴以下完整内容(参数已适配文档内的IP/网卡,无需修改):

#!/bin/bash

# 配置参数(与文档内配置保持一致,无需修改)
QWRT_IP="192.168.31.3"
MAIN_GW="192.168.31.1"
INT_MACVLAN="macvlan-proxy"
INT_PHYSICAL="enp2s0"
LOG_FILE="/var/log/gw-monitor.log"

# 日志函数
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}

# 主循环
while true; do
    # 检测Qwrt是否在线(从macvlan网卡ping,避免误判)
    if ping -c 2 -W 1 -I $INT_MACVLAN $QWRT_IP >/dev/null 2>&1; then
        # Qwrt在线,确认当前网关是否为Qwrt
        CURRENT_GW=$(ip route show default 2>/dev/null | awk '/via/ {print $3}' | head -1)
        if [ "$CURRENT_GW" != "$QWRT_IP" ]; then
            # 清空现有默认路由
            ip route del default 2>/dev/null
            # 添加Qwrt优先路由+主路由备用路由,保留系统原生配置
            ip route add default via $QWRT_IP dev $INT_MACVLAN metric 50
            ip route add default via $MAIN_GW dev $INT_PHYSICAL metric 100
            log "Qwrt在线,已切换至旁路由网关"
        fi
    else
        # Qwrt掉线,确认当前网关是否为主路由
        CURRENT_GW=$(ip route show default 2>/dev/null | awk '/via/ {print $3}' | head -1)
        if [ "$CURRENT_GW" != "$MAIN_GW" ]; then
            # 清空现有默认路由
            ip route del default 2>/dev/null
            # 仅添加主路由网关,保留系统原生配置,不重复添加
            ip route add default via $MAIN_GW dev $INT_PHYSICAL metric 100
            log "Qwrt掉线,已自动切回主路由网关"
        fi
    fi
    # 检测间隔3秒,可自行调整
    sleep 3
done

Esc → 输入 :wq 保存退出。

6.2 赋予脚本执行权限

sudo chmod +x /etc/gw-monitor.sh

6.3 配置开机自启

sudo vi /etc/rc.local

exit 0 之前,新增一行(需放在旁路由基础配置之后):

# 启动Qwrt网关自动切换看门狗
nohup /etc/gw-monitor.sh &

Esc → 输入 :wq 保存退出。

6.4 立即启动脚本(无需重启NAS)

sudo systemctl restart rc-local

6.5 验证&测试

  1. 验证脚本是否正常运行:

    ps aux | grep gw-monitor
    

    能看到脚本进程,即说明启动成功。

  2. 故障切换测试:

    1. 关闭Qwrt容器,等待3秒,执行 ip route show default,确认网关已自动切换为 192.168.31.1
    2. 重新启动Qwrt容器,等待3秒,执行 ip route show default,确认网关已自动切回 192.168.31.3
  3. 查看切换日志:

    cat /var/log/gw-monitor.log
    

    可看到所有网关切换的记录,方便排查问题。


避坑指南(必看!)

  1. 绝对不要修改主路由WAN口的默认网关:改了会直接导致主路由自身断网,全屋彻底无法上网
  2. 飞牛定制版Qwrt默认已关闭DHCP:仅需核对确认,无需重复操作,避免配置冲突
  3. IP伪装优先使用Web界面配置:可视化操作生成的规则永久生效,适配Qwrt防火墙逻辑,比手动命令更稳定
  4. 仅NAS/指定设备走代理即可:家用普通路由大多不支持双网关兜底,改全局网关容错性极差
  5. Qwrt容器默认已开启自动重启:飞牛OS应用商店安装时默认已开启 --restart always,无需额外配置
  6. 自动切换脚本不会修改系统原生静态路由:仅在故障时切换网关,重启后仍保留系统原有配置,无冗余垃圾规则
  7. macvlan网卡名与物理网卡名不要混淆:脚本内参数需与实际配置一致,否则会出现Qwrt在线但误判掉线的问题

回滚方案(出问题时快速恢复)

回滚飞牛OS(NAS)基础配置

进入飞牛OS终端,执行:

# 1. 删除临时/永久配置的macvlan-proxy接口
sudo ip link del macvlan-proxy 2>/dev/null
# 2. 编辑/etc/rc.local,删除Qwrt相关基础配置
sudo vi /etc/rc.local
# 3. 重启rc-local服务
sudo systemctl restart rc-local

回滚网关自动切换配置

进入飞牛OS终端,执行:

# 1. 停止脚本进程
sudo kill $(ps aux | grep gw-monitor | grep -v grep | awk '{print $2}') 2>/dev/null
# 2. 删除脚本文件
sudo rm -f /etc/gw-monitor.sh /var/log/gw-monitor.log
# 3. 编辑/etc/rc.local,删除脚本开机自启相关内容
sudo vi /etc/rc.local
# 4. 恢复系统默认网关
sudo ip route del default 2>/dev/null
sudo ip route add default via 192.168.31.1 dev enp2s0 metric 100
# 5. 重启rc-local服务
sudo systemctl restart rc-local

回滚Qwrt配置

进入Qwrt后台,执行「系统」→「备份/升级」→「重置」,恢复出厂设置即可。

收藏
送赞 2
分享

0

主题

4

回帖

0

牛值

江湖小虾

昨天 13:22 楼主 显示全部楼层

0

主题

4

回帖

0

牛值

江湖小虾

昨天 13:24 楼主 显示全部楼层

image.png请教大佬们一个问题,作为旁路由的话,哪些的ip动态伪装要打开呀

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则