飞牛NAS Docker 搭建旁路由,实现全屋智能分流

2026-02-16 14:19:45 3点赞 46收藏 1评论

家里设备越来越多,想要实现全屋网络的智能分流和 DNS 优化,但又不想刷路由器固件?今天教大家用 NAS 上的 Docker 搭建一个旁路由,零成本、不影响主路由,任何设备只需改一下网关就能享受智能分流。

本文以飞牛NAS为例,其他支持 Docker 的 NAS(群晖威联通等)或 Linux 主机同样适用。

飞牛NAS Docker 搭建旁路由,实现全屋智能分流

什么是旁路由?

简单来说,旁路由不替代你的主路由器,而是作为网络中的一个辅助网关。设备把网关指向旁路由后,所有流量经过它进行智能分流和 DNS 解析,再转发出去。

优势:

  • 不影响主路由,部署失败随时回退

  • Docker 容器化管理,升级维护方便

  • 局域网设备按需接入,灵活可控

网络拓扑:

飞牛NAS Docker 搭建旁路由,实现全屋智能分流

需要智能分流的设备,把网关和 DNS 指向 192.168.0.200 即可。


准备工作

  • 飞牛NAS(或任意 Linux 主机),已安装 Docker

  • SSH 工具(Windows 用户推荐 Terminal 或 PuTTY)

  • 确认你的局域网网段(本文以 192.168.0.0/24 为例)

  • 确认 NAS 的网卡名称

查看网卡名称

SSH 登录 NAS 后执行:

ip link show

找到你的物理网卡名称,常见的如 eth0、enp1s0、enp1s0-ovs 等。本文使用 enp1s0-ovs。


第一步:创建 Macvlan 网络

Macvlan 可以让 Docker 容器拥有独立的局域网 IP,就像一台真实的物理设备。

sudo docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=enp1s0-ovs macvlan_net

参数说明:

参数 含义 -d macvlan 使用 macvlan 网络驱动 --subnet 你的局域网网段,需与主路由一致 --gateway 主路由器 IP 地址 -o parent 绑定的物理网卡名称(改成你自己的) macvlan_net 自定义的网络名称

验证是否创建成功:

sudo docker network ls

飞牛NAS Docker 搭建旁路由,实现全屋智能分流

能看到 macvlan_net 就 OK 了。


第二步:创建配置目录

mkdir -p /vol1/1000/docker/mihomo/config

路径可以自定义,这里以我的飞牛NAS的存储路径为例。


第三步:编写配置文件

创建核心配置文件:

cat > /vol1/1000/docker/mihomo/config/config.yaml << 'EOF' # 端口设置 port: 7890 socks-port: 7891 redir-port: 7892 mixed-port: 7893 # 允许局域网设备连接(旁路由必须开启) allow-lan: true bind-address: "*" # 运行模式 mode: rule log-level: info # 管理面板(监听所有地址,局域网可访问) external-controller: '0.0.0.0:9090' secret: '' # TUN 模式(透明网关核心) tun: enable: true stack: system auto-route: true auto-detect-interface: true # DNS 设置 dns: enable: true listen: 0.0.0.0:53 enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 default-nameserver: - 223.5.5.5 - 119.29.29.29 nameserver: - https://doh.pub/dns-query - https://dns.alidns.com/dns-query fallback: - https://cloudflare-dns.com/dns-query - 1.1.1.1 fallback-filter: geoip: true geoip-code: CN # 在下方填入你的服务配置 proxies: [] proxy-groups: [] rules: - MATCH,DIRECT EOF

关键配置:

  • allow-lan + bind-address:允许局域网设备通过旁路由转发流量

  • TUN 模式:透明接管所有流量,设备无需单独配置

  • DNS 分流:国内域名走国内 DNS(阿里、腾讯),境外域名走 Cloudflare DNS,提升解析速度和准确性

  • fake-ip:高性能 DNS 模式,减少解析延迟

提示:如果你有现成的配置链接,可以直接用 curl 下载配置文件,然后再手动补上 tun、dns、allow-lan 等旁路由必需项。


第四步:启动容器

sudo docker run -d --name mihomo --restart always --network macvlan_net --ip 192.168.0.200 --cap-add NET_ADMIN --device /dev/net/tun -v /vol1/1000/docker/mihomo/config:/root/.config/mihomo metacubex/mihomo:latest

参数说明:

参数 含义 --network macvlan_net 使用之前创建的 macvlan 网络 --ip 192.168.0.200 给旁路由分配固定 IP(避开已使用的 IP) --cap-add NET_ADMIN 授予网络管理权限(TUN 模式必需) --device /dev/net/tun 映射 TUN 设备 --restart always 开机自动启动 -v ... 挂载配置目录


第五步:验证部署

1. 查看容器状态

sudo docker ps

确认容器状态为 Up。

2. 检查日志

sudo docker logs mihomo --tail 20

正常启动应看到类似输出:

level=info msg="HTTP proxy listening at: [::]:7890" level=info msg="DNS server(UDP) listening at: [::]:53" level=info msg="RESTful API listening at: [::]:9090" level=info msg="[TUN] Tun adapter listening at: Meta..."

飞牛NAS Docker 搭建旁路由,实现全屋智能分流

如果所有服务都在监听,说明旁路由已就绪。

3. 测试连通性

在电脑上 ping 旁路由 IP:

ping 192.168.0.200

能通就没问题。


管理面板

部署完成后,浏览器访问第三方管理面板:

https://metacubex.github.io/metacubexd

后端地址填写:http://192.168.0.200:9090

在面板中可以:

  • 查看实时流量和连接

  • 切换线路和分流策略

  • 测试线路延迟

  • 查看日志


使用配置链接

如果你有现成的配置文件链接,可以直接下载:

curl -sL '你的配置链接' > /vol1/1000/docker/mihomo/config/config.yaml

下载后需要手动修改以下几项以适配旁路由:

# 必须改为 true allow-lan: true # 必须监听所有地址 external-controller: '0.0.0.0:9090' # 添加 bind-address bind-address: "*"

并在配置中补充 tun 和 dns 部分(参考第三步的配置)。

修改完成后重启容器:

sudo docker restart mihomo

总结

整个部署只需要 6 条命令:

  1. docker network create — 创建 macvlan 网络

  2. mkdir — 创建配置目录

  3. cat > config.yaml — 写入配置文件

  4. docker run — 启动旁路由容器

  5. 验证日志和连通性

  6. 设备修改网关接入

旁路由方案的好处在于对主网络零侵入,不满意随时停掉容器,一切恢复原样。配合 NAS 的 Docker 管理能力,维护起来也非常省心。

飞牛NAS Docker 搭建旁路由,实现全屋智能分流
展开 收起
1评论

  • 精彩
  • 最新
  • 试试看

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
46
扫一下,分享更方便,购买更轻松