收起左侧

NAS 变身网络中枢:全屋海外服务流畅访问实战

34
回复
3402
查看
  [ 复制链接 ]

32

主题

82

回帖

0

牛值

初出茅庐

2026-2-12 08:58:52 显示全部楼层 阅读模式

本文介绍如何在 NAS 部署智能网络调度服务,实现家庭设备统一海外资源访问优化,彻底解决 Docker 镜像拉取缓慢、开发资源下载失败等痛点。

📌 一、方案价值:为什么需要这个?

🔥 解决的四大核心痛点

场景 困扰现状 方案效果
🐳 Docker 镜像拉取 官方源连接超时、速度极慢(几KB/s) ⚡ 流畅获取海外镜像,30秒完成
💻 开发资源下载 GitHub/NPM/PyPI 频繁断连 ✅ 提升下载成功率,稳定高效
🏠 智能家居设备 部分海外服务无法连接 🌐 统一网络出口管理
📱 多设备配置繁琐 每台设备单独设置代理 🎯 NAS 一次部署,全屋零配置共享

✨ 架构三大优势

  • 🔄 一次部署,全家设备零配置接入 — 手机/电脑/电视自动受益
  • 🧠 智能分流,国内网站不受影响 — 百度、淘宝、视频平台直连极速
  • 🎛️ Web 面板可视化,操作门槛低 — 节点切换、状态监控一目了然

🛠️ 二、Docker Compose 一键部署

飞牛NAS图形化部署:一共两个容器

通用命令行部署:

目录准备

mkdir -p /vol1/1000/docker/flclash/config
cd /vol1/1000/docker/flclash
​

部署文件 docker-compose.yml


services:
  clash:
    image: docker.io/metacubex/mihomo:latest # mihomo 是 Clash 的社区维护版本,性能更好
    container_name: clash
    restart: unless-stopped
    network_mode: host
    privileged: true # 特权模式:用于创建 TUN 设备实现透明代理
    cap_add:
      - NET_ADMIN # 网络管理权限(必需
      - SYS_ADMIN # 系统管理权限(必需)
    devices:
      - /dev/net/tun:/dev/net/tun
    volumes:
      - /vol1/1000/docker/flclash/config:/root/.config/clash
    working_dir: /root/.config/clash
    environment:
      - TZ=Asia/Shanghai
    entrypoint: ["/mihomo"]
    command: ["-f", "/root/.config/clash/config.yaml"] # 启动命令:指定使用 mihomo 核心,加载 config.yaml 配置文件

  dashboard:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/metacubex/metacubexd:v1.237.0 # metacubexd 是官方推荐的现代化 Web 面板,这里使用了国内加速镜像源
    container_name: clash-dashboard
    restart: unless-stopped
    ports:
      - "9099:80" # 访问地址:http://NAS_IP:9099
    environment:
      - CLASH_API_URL=http://192.168.31.197:9095 # 环境变量:指定 Clash API 地址,让面板能控制核心
​

核心配置文件 config.yaml

将您的网络服务配置导出保存为 config.yaml

修改 config.yaml

clash9.png

导出的config.yaml文件要修改1、allow-lan: true(允许局域网访问),2、"external-controller: 0.0.0.0:9095"(指向clash核心连接地址,跟yml文件端口一致就行)

4️⃣ 启动验证 🎉

# 启动服务
docker compose up -d
​

🎛️ 三、Metacubexd 面板可视化操作

浏览器访问:http://NAS_IP:9099,添加配置 clash地址,点击添加进入首页。

1️⃣ 连接最优节点

操作流程:

  1. 进入 「代理」 页面 📊
  2. 点击 ⚡ 图标测试全部节点延迟
  3. 选择 绿色数字(低延迟) 的节点

2️⃣ 核心参数设置

进入 「配置」 页面:

配置项 设置值 说明
✅ 允许局域网访问 开启 🔑 关键!允许其他设备连接
🔄 运行模式 Rule 智能分流,国内直连
🔌 HTTP 端口 7890 电脑/手机通用代理
🧦 SOCKS 端口 7891 部分应用/终端需要

三种模式对比

模式 工作原理 适用场景 推荐指数
Rule 按规则智能分流,国内直连、海外优化 🏠 日常家用 ⭐⭐⭐⭐⭐
Global 全部流量转发 🔧 调试测试 ⭐⭐☆☆☆
Direct 全部直连 🚫 关闭服务 ⭐☆☆☆☆

Rule 模式智能分流示例 🎯

**─────────────────**     **─────────────**     **─────────────────**
**  访问 baidu.com  ** ──→ ** 识别为国内域名 ** ──→ **   直连(5ms)    **
**─────────────────**     **─────────────**     **─────────────────**

**─────────────────**     **─────────────**     **─────────────────**
** 访问 github.com ** ──→ ** 识别为海外域名 ** ──→ ** 经优化线路(80ms)**
**─────────────────**     **─────────────**     **─────────────────**

**─────────────────**     **─────────────**     **─────────────────**
** 访问 docker.io  ** ──→ ** 匹配镜像源规则 ** ──→ **  自动加速拉取    **
**─────────────────**     **─────────────**     **─────────────────**
​

✅ Rule 模式三大优势

  1. 🚀 国内体验无损 — 视频、购物、网银网站极速访问
  2. 🌍 海外资源流畅 — 开发工具、Docker 镜像、学术资料畅通
  3. 💰 带宽利用高效 — 仅必要流量走优化线路,稳定性更高

✅ 四、验证节点以及规则配置是否成功

步骤1:端口检查

ss -tlnp | grep -E "7890|7891|9099"
# 应显示 0.0.0.0:7890 等端口处于 LISTEN 状态

​

步骤2:连通性测试

curl -x http://192.168.31.197:7890 -s http://httpbin.org/ip
# 测试服务可用性(返回应为海外节点IP)
curl -x http://192.168.31.197:7890 -s http://www.google.com/generate_204 -w "%{http_code}"
# 访问海外数据网站应返回204代码
curl -s http://httpbin.org/ip
# 对比测试:不走代理时返回本地IP
​

代理网络实时拓扑图

具体连接节点数据

📲 五、全屋设备配置指南

💻 【电脑端】

Windows 系统设置

设置 → 网络和 Internet → 代理 → 手动设置代理
​


📱 【手机端】

设置 → WLAN → 长按已连接网络 → 修改网络 → 高级选项 → 代理 → 手动
​

🖥️ 【NAS 本机】

方案A:Docker Daemon 全局代理(推荐)

sudo nano /etc/docker/daemon.json
​

添加配置:

{
  "proxies": {
    "http-proxy": "http://192.168.31.197:7890",
    "https-proxy": "http://192.168.31.197:7890",
    "no-proxy": "localhost,127.0.0.1,.local,192.168.0.0/16,10.0.0.0/8"
  }
}
​

重启生效:

sudo systemctl restart docker
​

方案B:单个容器配置

docker-compose.yml 中添加环境变量:

services:
  app:
    environment:
      - HTTP_PROXY=http://192.168.31.197:7890
      - HTTPS_PROXY=http://192.168.31.197:7890
      - ALL_PROXY=socks5://192.168.31.197:7891
      - NO_PROXY=localhost,127.0.0.1
​

🌐 【路由器】(进阶·全屋无感知)

将路由器网关指向 NAS,实现所有设备自动受益

OpenWrt 配置示例

方法1:DHCP 下发网关

网络 → 接口 → LAN → DHCP 服务器 → DHCP 选项
添加:3,192.168.31.197(网关)
     6,192.168.31.197(DNS)
​

方法2:透明转发规则

# SSH 登录路由器执行
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 7890
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 7890
​

💡 路由器方案优势:智能家居、电视、游戏机等无法设置代理的设备也能受益

🎉 六、总结:NAS 网络中枢的价值

通过本文方案,你的 NAS 将成为:

能力 效果
Docker 镜像加速器 开发效率倍增,告别漫长等待
全屋网络管理中心 一次部署,手机/电脑/电视全受益
智能分流网关 海外流畅、国内极速,两不误
可视化运维平台 节点切换、状态监控,轻松上手

💬 一句话总结:让 NAS 成为家庭网络的智能中枢,从此告别资源下载卡顿!

⚖️ 合规提示:请确保网络服务来源合法合规,遵守当地法律法规。本文仅供技术学习交流,请在法律允许范围内使用。

如有修改将更新在文章底部留言,觉得有用可以点赞+转发+推荐,点点关注,你的支持是我更新的最大动力❤。
收藏
送赞 7
分享

0

主题

7

回帖

0

牛值

江湖小虾

2026-2-14 23:08:23 显示全部楼层

9095的服务不通
image.png卡到这步了

本帖子中包含更多资源

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

x
我不小心9099进去了咋办?添加节点不显示了  详情 回复
2026-3-11 22:47
看下你的订阅clash文件改成9095了没,默认是9090的  详情 回复
2026-2-15 11:19

32

主题

82

回帖

0

牛值

初出茅庐

2026-2-15 11:19:37 楼主 显示全部楼层
微信用_Vb6B4 发表于 2026-2-14 23:08
9095的服务不通
卡到这步了

看下你的订阅clash文件改成9095了没,默认是9090的
改了啊,我特别注意了,但是9095进不去。我之前不小心进了9099,可以进去,导入flclash的节点后不显示 port: 7890 socks-port: 7891 allow-lan: true mode: Rule log-level: info external-controller: 0.0.0.0:9095  详情 回复
2026-3-12 11:39

0

主题

2

回帖

0

牛值

江湖小虾

2026-2-16 11:53:21 显示全部楼层

我是小白,怎么将网络服务配置导出保存为 config.yaml?打开飞牛哪个功能哪里能导出?

这个文件是要到你的节点提供商哪里获取的  详情 回复
2026-2-16 14:34

32

主题

82

回帖

0

牛值

初出茅庐

2026-2-16 14:34:04 楼主 显示全部楼层
恩怨分明 发表于 2026-2-16 11:53
我是小白,怎么将网络服务配置导出保存为 config.yaml?打开飞牛哪个功能哪里能导出?
...

这个文件是要到你的节点提供商哪里获取的
是打电话给宽带服务商索要吗?  详情 回复
2026-2-17 12:42

0

主题

2

回帖

0

牛值

江湖小虾

2026-2-17 12:42:17 显示全部楼层
纳斯派 发表于 2026-2-16 14:34
这个文件是要到你的节点提供商哪里获取的

是打电话给宽带服务商索要吗?
不是的,你自己搜下clash是啥把  详情 回复
2026-2-17 22:38

0

主题

11

回帖

0

牛值

江湖小虾

2026-2-17 16:37:32 显示全部楼层

为什么看不到节点信息?
屏幕截图2026-02-17163655.png

本帖子中包含更多资源

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

x
yml的指定的clash端口号要跟订阅商那下载的clash文件里的端口号一致,不然前端读取不到节点的  详情 回复
2026-2-17 22:38

32

主题

82

回帖

0

牛值

初出茅庐

2026-2-17 22:38:05 楼主 显示全部楼层
流逝 发表于 2026-2-17 16:37
为什么看不到节点信息?

yml的指定的clash端口号要跟订阅商那下载的clash文件里的端口号一致,不然前端读取不到节点的

32

主题

82

回帖

0

牛值

初出茅庐

2026-2-17 22:38:53 楼主 显示全部楼层
恩怨分明 发表于 2026-2-17 12:42
是打电话给宽带服务商索要吗?

不是的,你自己搜下clash是啥把

0

主题

3

回帖

0

牛值

江湖小虾

2026-2-19 20:47:51 显示全部楼层

路由器设置网关和DNS不用设置端口吗?路由器怎么知道连到哪个端口上

0

主题

11

回帖

0

牛值

江湖小虾

2026-2-20 17:19:17 显示全部楼层

image.png能看到节点了,链接不上,这个订阅哦用在clash for Meta 还能连

本帖子中包含更多资源

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

x

2

主题

2

回帖

0

牛值

江湖小虾

2026-2-23 14:59:28 显示全部楼层

搞定,下面那个局域网IP被我忽略了!

4

主题

10

回帖

0

牛值

江湖小虾

2026-2-24 15:59:17 显示全部楼层

我的config.yaml里面只有这一行 mixed-port: 7890

4

主题

10

回帖

0

牛值

江湖小虾

2026-2-24 16:51:29 显示全部楼层

楼主能不能提供代理服务器地址

0

主题

15

回帖

0

牛值

江湖小虾

2026-2-25 10:32:01 显示全部楼层

非常详细的教程。

15

主题

225

回帖

0

牛值

小有名气

2026-2-25 10:41:11 显示全部楼层

上面基本说清楚了 但是还有个问题 手动在应用商店安装的fpk包应用(别人封装好的 但是没上架应用商店)没有说明如何进行代理

0

主题

3

回帖

0

牛值

江湖小虾

2026-2-26 16:06:23 显示全部楼层

非常好用,但和xiaomusic冲突,然后我在虚拟机里面再安装了一个fnnas,然后再安装这个

14

主题

65

回帖

0

牛值

初出茅庐

2026-2-27 13:16:44 显示全部楼层
谢谢分享 先收藏

14

主题

65

回帖

0

牛值

初出茅庐

2026-2-27 13:17:19 显示全部楼层

谁私信我个好用稳定性价比高的梯子啊

关注微信公众号  详情 回复
2026-2-28 08:39

32

主题

82

回帖

0

牛值

初出茅庐

2026-2-28 08:39:01 楼主 显示全部楼层
wujixin 发表于 2026-2-27 13:17
谁私信我个好用稳定性价比高的梯子啊

关注微信公众号

2

主题

36

回帖

0

牛值

江湖小虾

2026-3-3 16:04:29 显示全部楼层

要是用NAS下发,要是NAS一旦异常 ,是不是全屋都无法联网了?

NAS出问题了,其它设备不加进NAS网关,改成路由器的不就好了  详情 回复
2026-3-12 13:30

0

主题

4

回帖

0

牛值

江湖小虾

2026-3-11 22:47:30 显示全部楼层
微信用_Vb6B4 发表于 2026-2-14 23:08
9095的服务不通
卡到这步了

我不小心9099进去了咋办?添加节点不显示了

0

主题

4

回帖

0

牛值

江湖小虾

2026-3-11 22:59:14 显示全部楼层

后端地址不小心写成了9099,进去了。结果节点导入后不显示,一直在加载

image.png

本帖子中包含更多资源

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

x

0

主题

4

回帖

0

牛值

江湖小虾

2026-3-12 11:39:23 显示全部楼层
纳斯派 发表于 2026-2-15 11:19
看下你的订阅clash文件改成9095了没,默认是9090的

改了啊,我特别注意了,但是9095进不去。我之前不小心进了9099,可以进去,导入flclash的节点后不显示
port: 7890
socks-port: 7891
allow-lan: true
mode: Rule
log-level: info
external-controller: 0.0.0.0:9095

32

主题

82

回帖

0

牛值

初出茅庐

2026-3-12 13:30:49 楼主 显示全部楼层
wg3dps 发表于 2026-3-3 16:04
要是用NAS下发,要是NAS一旦异常 ,是不是全屋都无法联网了?

NAS出问题了,其它设备不加进NAS网关,改成路由器的不就好了

0

主题

28

回帖

0

牛值

江湖小虾

fnOS1.0上线纪念勋章

2026-3-14 08:21:08 显示全部楼层

config.yam,节点信息只能手动更新么?

是的,这种方式只能手动更新,你有其它可以自动更新的方式么  详情 回复
2026-3-14 09:19

32

主题

82

回帖

0

牛值

初出茅庐

2026-3-14 09:19:32 楼主 显示全部楼层
吴小剑 发表于 2026-3-14 08:21
config.yam,节点信息只能手动更新么?

是的,这种方式只能手动更新,你有其它可以自动更新的方式么

1

主题

14

回帖

0

牛值

江湖小虾

2026-3-14 12:16:10 显示全部楼层

能不能搞个脚本,自动把订阅定时 下载到 clash的配置目录中替换

我没想到啥好办法,一般订阅稳定的话,可以一直不更新的  详情 回复
2026-3-14 13:28

32

主题

82

回帖

0

牛值

初出茅庐

2026-3-14 13:28:57 楼主 显示全部楼层
huangexian 发表于 2026-3-14 12:16
能不能搞个脚本,自动把订阅定时 下载到  clash的配置目录中替换

我没想到啥好办法,一般订阅稳定的话,可以一直不更新的

1

主题

14

回帖

0

牛值

江湖小虾

2026-3-14 13:43:54 显示全部楼层
#!/bin/bash

# --- 用户配置区域 (请根据你的实际情况修改) ---
# 节点信息的下载地址
DOWNLOAD_URL="https://example.com/config.yaml"
# 存放节点信息的本地配置文件路径 (就是你Clash容器映射出来的配置文件)
CONFIG_FILE="/path/to/your/clash/config.yaml"
# Docker 容器名称或ID
CONTAINER_NAME="your-clash-container-name"
# 脚本工作目录,用于存放备份和日志
WORK_DIR="/path/to/your/script/workdir"
# 日志文件路径
LOG_FILE="${WORK_DIR}/update_clash.log"
# --------------------------------------------

# 记录开始时间
echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始更新任务" >> ${LOG_FILE}

# 1. 使用 wget 或 curl 下载最新配置
# 这里使用 curl 的 -L 参数跟随重定向,-f 参数在失败时返回错误码
echo "$(date '+%Y-%m-%d %H:%M:%S') - 正在从 ${DOWNLOAD_URL} 下载新配置..." >> ${LOG_FILE}
if curl -L -f -o "${WORK_DIR}/config.yaml.new" "${DOWNLOAD_URL}" >> ${LOG_FILE} 2>&1; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 下载成功。" >> ${LOG_FILE}
else
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 错误:下载失败,请检查网络或URL。" >> ${LOG_FILE}
    exit 1
fi

# 2. 检查下载的文件是否有效(可选但推荐)
# 例如,可以检查文件是否为空,或者包含关键字段如 "proxies:"
if [ ! -s "${WORK_DIR}/config.yaml.new" ]; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 错误:下载的文件为空。" >> ${LOG_FILE}
    exit 1
fi

# 3. 备份当前配置文件
echo "$(date '+%Y-%m-%d %H:%M:%S') - 正在备份当前配置..." >> ${LOG_FILE}
cp "${CONFIG_FILE}" "${WORK_DIR}/config.yaml.backup.$(date +%Y%m%d%H%M%S)"

# 4. 用新文件替换旧文件
echo "$(date '+%Y-%m-%d %H:%M:%S') - 正在更新配置文件..." >> ${LOG_FILE}
mv "${WORK_DIR}/config.yaml.new" "${CONFIG_FILE}"

# 5. 重启指定的 Docker 容器
echo "$(date '+%Y-%m-%d %H:%M:%S') - 正在重启 Docker 容器: ${CONTAINER_NAME}..." >> ${LOG_FILE}
if docker restart ${CONTAINER_NAME} >> ${LOG_FILE} 2>&1; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 容器重启成功。" >> ${LOG_FILE}
else
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 错误:容器重启失败,请检查容器名称或Docker状态。" >> ${LOG_FILE}
    # 尝试回滚配置文件?
    exit 1
fi

echo "$(date '+%Y-%m-%d %H:%M:%S') - 更新任务完成。" >> ${LOG_FILE}
echo "----------------------------------------" >> ${LOG_FILE}

exit 0

搞个这个脚本是否可行

不得行,因为下载下来的订阅文件 一般需要修改IP地址,改0.0.0.0,然后就新的配置文件需要重新测速才行。  详情 回复
2026-3-14 14:32
经测试可行,定时运行脚本,就可以更新订阅了。  详情 回复
2026-3-14 14:30

1

主题

14

回帖

0

牛值

江湖小虾

2026-3-14 14:30:35 显示全部楼层
huangexian 发表于 2026-3-14 13:43
#!/bin/bash

# --- 用户配置区域 (请根据你的实际情况修改) ---

经测试可行,定时运行脚本,就可以更新订阅了。

32

主题

82

回帖

0

牛值

初出茅庐

2026-3-14 14:32:08 楼主 显示全部楼层
huangexian 发表于 2026-3-14 13:43
#!/bin/bash

# --- 用户配置区域 (请根据你的实际情况修改) ---

可以么?
这些都不是问题 脚本加两句代码就可以修改指定内容, 我把端口 跟 9095都直接在脚本改好了, 替换的就是改了之后的。  详情 回复
2026-3-14 18:07

1

主题

14

回帖

0

牛值

江湖小虾

2026-3-14 18:07:12 显示全部楼层

这些都不是问题 脚本加两句代码就可以修改指定内容,  我把端口 跟 9095都直接在脚本改好了,  替换的就是改了之后的。
能分享一下脚本么?  详情 回复
2026-3-18 22:54
牛的牛的 我晚点让小龙虾写个  详情 回复
2026-3-14 22:14

32

主题

82

回帖

0

牛值

初出茅庐

2026-3-14 22:14:59 楼主 显示全部楼层
huangexian 发表于 2026-3-14 18:07
这些都不是问题 脚本加两句代码就可以修改指定内容,  我把端口 跟 9095都直接在脚本改好了,  替换的就 ...

牛的牛的 我晚点让小龙虾写个

0

主题

28

回帖

0

牛值

江湖小虾

fnOS1.0上线纪念勋章

2026-3-18 22:54:39 显示全部楼层
huangexian 发表于 2026-3-14 18:07
这些都不是问题 脚本加两句代码就可以修改指定内容,  我把端口 跟 9095都直接在脚本改好了,  替换的就 ...

能分享一下脚本么?
`bash #!/bin/bash DOWNLOAD_URL="https://你的订阅链接" HOST_CONFIG_FILE="/vol1/1000/docker/fl某科学软件/config/config.yaml" CONTAINER_NAME="某科学软件" WORK_DIR="/opt/scripts/某科学软件_updater" LO  详情 回复
3 天前
飞牛NAS上部署 某科学软件 自动更新脚本完整指南 一、准备工作 确认信息:请确保您已准备好以下信息,并在后续步骤中替换对应部分。 某科学软件订阅链接: "https://ghfast.top/https://raw.githubusercon  详情 回复
3 天前
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则