在 NAS 环境和家庭实验室架构中,分流(Split Tunneling)是一项兼顾安全与效率的核心网络实践。本教程将指导你如何在 fNOS 系统中,通过 Docker 部署 WireGuard 客户端,并配置 host 主机网络模式。

🎯 最终目标:

  • 精确路由:仅针对 192.168.50.x 网段的流量走 WireGuard 隧道。

  • 高可用性:VPN 节点意外离线时,不影响 fNOS 宿主机其他服务的正常外网访问。

  • 极简维护:采用容器化部署,配合 fNOS 的原生内核模块,极致轻量。


📝 第一步:准备配置文件 wg0.conf

在开始部署之前,你需要从 WireGuard 服务端获取或生成一份客户端配置文件。请仔细检查并修改 [Peer] 下的 AllowedIPs,这是实现分流的核心。

[Interface]
PrivateKey = <你的私钥>
Address = 10.0.0.2/24 # WG 虚拟内部 IP
DNS = 1.1.1.1         # 可根据需求修改或删除

[Peer]
PublicKey = <服务器公钥>
Endpoint = <服务器IP>:51820
# 💡 核心关键点:只声明特定目标网段。
# 这样只有目标为 50.x 的请求会走隧道,实现完美的流量分流。
AllowedIPs = 192.168.50.0/24 
PersistentKeepalive = 25

🐳 第二步:下载 WireGuard 镜像

进入 fNOS 的应用或镜像管理界面,在注册表中搜索并直接下载排在第一位的官方或主流维护的镜像(通常为 linuxserver/wireguard)。

image.png


🛠️ 第三步:创建 Docker Compose 项目

在 fNOS 的文件管理器中,规划并创建一个专用的配置目录,例如 /vol1/1000/appdata/wireguard。在后续的项目创建中,我们将引用这个目录。

1. 准备 Compose 脚本 我们将采用 network_mode: host 模式,打破容器网络隔离,让 VPN 路由直接注入宿主机。

services:
  wireguard:
    image: linuxserver/wireguard:latest
    container_name: wireguard-client
    network_mode: host   # 直接使用 fNOS 宿主机网络栈
    cap_add:
      - NET_ADMIN        # 赋予容器网络路由修改权限
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
    volumes:
      # 将宿主机刚刚创建的目录映射到容器的 /config
      - /vol1/1000/appdata/wireguard/config:/config
    restart: unless-stopped

2. 在 fNOS UI 中部署 进入系统的 Docker 项目管理页面,点击新建项目。

image.png

  • 将上述 YAML 代码粘贴至配置框内。

  • 路径选择:务必选择我们在前面新建的目录 /vol1/1000/appdata/wireguard。这样 wg0.conf 配置文件就能被容器正确读取。

image.png

部署完成后,启动该容器。


📡 第四步:测试内部网络连通性

容器启动并显示日志正常后,我们需要验证跨网段通信是否已经成功打通。

打开 fNOS 的 SSH 终端或系统自带的命令行工具,直接 ping 对端 192.168.50.x 网络中的某台存活设备(例如 192.168.50.252)。

image.png

如果能看到如上图所示稳定且延迟正常的 ICMP 回显响应(time=xxx ms),恭喜你!这标志着你的 WireGuard 分流客户端已经完美部署并在 fNOS 上全速运行了。