群晖 Docker 旁路由 透明代理

群晖 NAS (DSM 7.x) 部署 Clash Docker 实现全屋设备透明代理的踩坑日记

By 机场侦察机 •
群晖 NAS (DSM 7.x) 部署 Clash Docker 实现全屋设备透明代理的踩坑日记

每当夜深人静,你想在客厅用 Apple TV 或是索尼电视看一部 Netflix 的 4K HDR 电影时,是不是总会为“怎么让这台设备翻墙”而感到头疼?

买个专门的软路由?太占地方,发热量大,而且配置极其繁琐。 其实,如果你家里已经有一台 24 小时开机的,你完全可以用它来充当整个家庭网络的“旁路由”。今天,我就把这几个月来在群晖 DSM 7.2 系统上,通过 Docker 部署 Clash 旁路由的血泪踩坑史,整理成一份保姆级的透明代理指南。

这篇文章将帮你省去至少三个晚上的折腾时间。


一、 为什么选择 Docker 部署,而不是群晖套件?

很多小白图省事,喜欢在第三方源里找群晖的 V2ray 或是 Clash 套件版(spk 文件)直接安装。 在 2026 年,我这种做法。

  1. :套件版直接运行在群晖系统的 root 权限下,不仅可能搞崩系统的底层网络堆栈(导致你的 NAS 突然失联),还存在被恶意篡改的安全风险。
  2. :GFW 的封锁技术日新月异(参考近期的 TLS 握手阻断),机场的协议(如 VLESS-Reality)也在不断迭代。套件版的内核往往停留在两三年前,根本无法适配最新的优质节点。
  3. :使用 Docker 容器,意味着 Clash 完全运行在一个独立的沙盒中。无论是更换内核版本、修改配置,甚至是配置错误导致网络瘫痪,你只需要在容器列表里点一下“重启”或者“删除”,你的群晖系统依然稳如泰山。

二、 核心难点突破:搞懂 Macvlan 网络

要在 Docker 里跑 Clash 并不难,难的是如何让这台 Clash 成为家里其他设备的。 默认情况下,Docker 容器使用的是 bridge 网络模式,它的 IP 类似于 172.17.0.x。你的电视、手机在 192.168.1.x 网段,是无法直接把网关指向它的。

我们需要祭出大杀器:。 Macvlan 可以让这个 Docker 容器直接桥接到你家路由器的局域网中,。

步骤 1:创建 Macvlan 网络

我们需要通过群晖的 SSH 终端来创建这个网络,因为群晖自带的 Container Manager 图形界面不支持创建 Macvlan。

  1. 在群晖控制面板开启 SSH 功能。
  2. 使用终端(如 PuTTY 或 Mac 的 Terminal)连接到群晖:ssh 你的群晖账号@局域网IP
  3. 提权为 root:sudo -i
  4. 运行以下核心命令(请根据你家的网段自行修改):
    docker network create -d macvlan \
      --subnet=192.168.1.0/24 \
      --gateway=192.168.1.1 \
      -o parent=ovs_eth0 macnet
    
    注意:如果你的群晖开启了 Open vSwitch,网卡名是 ovs_eth0;如果没有开启,通常是 eth0 或者 LAN 1 对应的网卡名,可以使用 ifconfig 命令确认。

三、 实战部署 Clash 容器与透明代理配置

网络地基打好了,接下来就是把 Clash 跑起来。

步骤 2:准备 Clash 配置文件

在群晖的 File Station 中,找一个合适的地方(比如 /docker/clash/)新建一个文件夹,里面放入三个文件:

  1. config.yaml:这是最核心的文件。你可以直接向你的要一份标准的 Clash 配置文件,或者使用在线订阅转换工具。:你必须在这个配置文件中开启 allow-lan: true 以及 redir-port: 7892,这样它才能接受局域网内其他设备的流量。
  2. Country.mmdb:全球 IP 数据库,用于 GeoIP 分流。
  3. ui/ (可选):如果你喜欢通过网页端图形界面来切换节点(比如 Yacd 皮肤),可以将解压后的静态网页文件放在这里。

步骤 3:启动 Docker 容器

我们使用最轻量级且性能极其强悍的内核开源分支。在 SSH 终端中执行:

docker run -d \
  --name=clash-gateway \
  --network=macnet \
  --ip=192.168.1.200 \
  --cap-add=NET_ADMIN \
  --restart=always \
  -v /volume1/docker/clash/config.yaml:/root/.config/clash/config.yaml \
  -v /volume1/docker/clash/ui:/ui \
  dreamacro/clash-premium -d /root/.config/clash

:

  • --ip=192.168.1.200:这是我们分给这台“旁路由”的固定 IP,绝对不能和家里其他设备冲突。
  • --cap-add=NET_ADMIN:必须添加网络管理权限,否则透明代理无法生效。

四、 见证奇迹的时刻:设备接入与测速

现在,这台性能强劲的“群晖旁路由”已经静静地在 192.168.1.200 上工作了。 如何让你的电视、PS5 享受到科学上网呢?

你不需要在路由器上做任何复杂的全局劫持(那样一旦群晖重启,全家断网)。你只需要在上,进行两步简单的设置:

  1. 打开 Apple TV 或 PS5 的网络设置。
  2. 将获取 IP 的方式从 自动 (DHCP) 改为 手动 (静态 IP)。
  3. IP 地址填入同网段任意没被占用的 IP(如 192.168.1.150)。
  4. :将 以及 ,全部填入刚才设置的 192.168.1.200!

保存设置,重启设备网卡。 打开 YouTube App,点开一部 4K 测试视频。得益于群晖强大的 CPU 算力加持(相比于几百块的软路由,这完全是降维打击),如果搭配像这样提供高冗余大宽带的高端机场,你会看到 Stats for Nerds 里的 Connection Speed 瞬间飙升到 150Mbps 以上,没有任何缓冲的迟滞感。

后记:Macvlan 的宿主机隔离宿命

值得注意的是,出于 Docker 底层的安全隔离机制,你的群晖本体(比如你想用群晖的 Download Station 下载海外种子)是 这个网关的。这就好比你在房间里造了一个密室,密室外的人反而进不去了。 解决这个问题的终极方法是在群晖宿主机内部再桥接一块虚拟网卡(Virtual Bridge),鉴于篇幅,如果您有群晖本身翻墙的强需求,我们将在后续的极客专栏中单独拆解这一方案。

现在,尽情享受您那毫无广告、丝滑流畅的客厅 4K 影院系统吧!

常见问题解答 (FAQ)

为什么部署完 Clash Docker 后,群晖自己反而没法科学上网了? +
这是 Docker Macvlan 网络的宿主机隔离机制导致的。Macvlan 容器虽然在局域网里拥有独立的 IP,但它默认无法与宿主机(群晖本身)互相通信。你必须在群晖宿主机上手动添加一个虚拟网卡(bridge)才能解决内网互通问题。
电视盒子把网关指向群晖后,国内视频网站(如B站、爱奇艺)变得很卡? +
极大概率是 Clash 的 DNS 分流规则没有配置好。所有流量被强行代理到海外节点解析了国内域名的海外 CDN。请务必在 Clash 配置文件中加入 Fake-IP 机制,并配置完整的国内域名直连 (DIRECT) 规则列表。