开源项目
passteque/gluetun avatar
passteque/gluetun

Gluetun:把 VPN 客户端塞进一个 43MB 容器的 Go 项目

VPN 客户端位于适用于多个 VPN 提供商的瘦 Docker 容器中,用 Go 编写,并使用 OpenVPN 或 Wireguard、基于 TLS 的 DNS,内置一些代理服务器。

15,499 个 Star618 个 ForkGoMIT

秒懂

它是什么?
Gluetun 是一个用 Go 编写的 Docker 容器化 VPN 客户端,支持二十多家服务商,内置防火墙、DNS over TLS 和多种代理。它把网络隔离的开销降到极低,但配置方式和 Wireguard 支持范围需要你仔细核对。
适合谁用?
Gluetun 适合那些已经用 Docker 管理服务、希望让多个容器共享一个 VPN 出口的用户,尤其是使用 Mullvad、NordVPN 或 ProtonVPN 的人。它不适合需要完整图形界面或零配置的家庭用户,也不适合对 Wireguard 有强制要求但服务商尚未被官方支持的情况。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 2 天前。
用什么语言写的?
主要是 Go(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

一个容器解决多服务商的 VPN 接入

Gluetun 解决的是一个具体问题:在 Docker 环境里,让多个容器共享一个 VPN 连接,同时避免每个容器各自建立隧道。传统做法是在宿主机配置 VPN 客户端,但这样会影响所有流量,而且难以按容器隔离。Gluetun 把 VPN 客户端、防火墙和代理服务器打包进一个 Alpine 镜像,大小只有 43.1MB。你只需运行一个容器,其他容器通过它转发网络请求。这个项目面向的是熟悉 Docker、愿意阅读文档的技术人员,不是普通桌面用户。它支持 AirVPN、Cyberghost、ExpressVPN、Mullvad、NordVPN 等二十多家服务商,覆盖了主流选择。

OpenVPN 与 Wireguard 的双轨支持

Gluetun 的核心机制是双轨制。所有列出的服务商都支持 OpenVPN,而 Wireguard 支持分两类。一类是官方直接支持,包括 AirVPN、FastestVPN、IVPN、Mullvad、NordVPN、ProtonVPN、Surfshark 和 Windscribe。另一类需要通过自定义提供者(custom provider)配置,比如 Cyberghost、Private Internet Access、PureVPN 等。这意味着你不能假设所有服务商都能开箱即用地使用 Wireguard。README 明确提到 AmneziaWG 目前只支持自定义提供者。这种设计让项目保持灵活,但也增加了配置复杂度。如果你只用 OpenVPN,事情简单得多。

内置防火墙与 DNS 过滤的实际意义

Gluetun 内置了一个防火墙 kill switch,只允许与 VPN 服务器和局域网设备的通信。这意味着即使 VPN 断开,容器也不会直接暴露在公网。这个功能对隐私敏感场景很关键。另外,DNS over TLS 是内置的,你可以选择多个服务商,实现 split horizon DNS。恶意域名和广告域名的拦截列表每 24 小时更新一次。这些功能不是可选的插件,而是集成在容器里,减少了额外配置。但要注意,防火墙规则是自动生成的,如果你需要自定义端口转发,必须依赖服务商特定的支持。README 提到 PIA、PrivateVPN 和 ProtonVPN 有端口转发功能,其他服务商则没有。

快速启动:从 docker-compose 到环境变量

启动 Gluetun 的方式很直接,README 给出了一个最小化的 docker-compose 示例。你需要添加 NET_ADMIN 能力,挂载 /dev/net/tun 设备,并映射 HTTP 代理端口 8888 和 Shadowsocks 端口 8388。环境变量是主要配置方式,但 README 中的示例被截断了,完整的变量列表在 Wiki 里。镜像名称是 qmcgaw/gluetun,同时提供 ghcr.io/qdm12/gluetun 作为备选。你需要指定 VPN 服务商、认证信息、服务器选择等参数,这些都在对应提供商的 Wiki 页面中。如果你不设置任何服务商参数,容器会启动但不会建立 VPN 连接。

连接其他容器和局域网设备

Gluetun 不只是自己连 VPN,它还可以作为其他容器的网络入口。README 提供了两个场景:连接 Docker 容器和连接局域网设备。连接外部容器时,你需要在 docker-compose 中取消 container_name 的注释,然后让其他容器使用这个网络命名空间。对于局域网设备,你需要配置端口转发和防火墙规则。这种设计让 Gluetun 成为一个网络枢纽,而不是孤立的工具。但这也意味着你必须理解 Docker 网络模型,否则容易配置错误。Wiki 有专门页面讲解这两种场景,但 README 没有给出具体命令,实际配置需要查阅 Wiki。

局限性与误用场景

Gluetun 的第一个局限是 Wireguard 支持不完整。虽然 README 声称支持 Wireguard,但实际只有部分服务商可直接使用,其他需要自定义配置。如果你用的是 Cyberghost 且希望用 Wireguard,你得手动编写自定义配置,这比 OpenVPN 麻烦得多。第二个局限是配置复杂度。环境变量数量多,不同服务商有不同要求,新手很容易卡在认证或服务器选择上。第三个局限是它不适合作为通用代理。内置的 Shadowsocks、SOCKS5 和 HTTP 代理功能是附加的,但如果你想用它做常规的透明代理,可能会发现防火墙规则限制了流量。最后,README 明确警告只有官方 Wiki 是可信的,其他声称是 Gluetun 官网的网站都是骗局,这说明项目有被仿冒的风险,用户需要小心。

替代方案:Wireguard 官方工具与自建方案

如果你只需要 Wireguard,可以考虑使用 Linux 内核自带的 Wireguard 工具,配合 systemd 服务管理。这种方式不依赖 Docker,性能更好,但你需要自己处理防火墙和 DNS 配置。另一个替代是使用 VPN 服务商提供的官方客户端,比如 Mullvad 的 CLI 工具,但它通常只支持单一服务商,无法像 Gluetun 那样统一管理多家。Gluetun 的优势在于它把多个服务商抽象成统一接口,并且内置了 kill switch 和代理,这是自建方案需要额外配置的。但代价是你要信任这个第三方容器,并且接受其更新节奏。项目最近在 2026 年 5 月迁移到新组织 passteque,但 Docker 镜像名保持不变,这降低了迁移风险。

维护成本与许可考量

Gluetun 采用 MIT 许可,这意味着你可以自由使用和修改,但没有任何担保。项目的维护活跃度可以从近期发布频率看出,v3.41.3 在 2026 年 7 月 30 日发布,v3.41.2 在 7 月 29 日,v3.41.1 在 2 月,说明修复和更新比较频繁。但这也意味着你需要定期更新镜像以获得安全修复。升级成本主要在于配置兼容性,因为环境变量可能随版本变化。Wiki 有常见错误和 FAQ 页面,但如果你使用自定义配置,升级前需要查看更新日志。另外,项目迁移到新组织后,虽然镜像名不变,但你需要关注 GitHub 重定向是否影响你的自动化脚本。

编辑结论

Gluetun 适合那些已经用 Docker 管理服务、希望让多个容器共享一个 VPN 出口的用户,尤其是使用 Mullvad、NordVPN 或 ProtonVPN 的人。它不适合需要完整图形界面或零配置的家庭用户,也不适合对 Wireguard 有强制要求但服务商尚未被官方支持的情况。采用前请先确认你的 VPN 服务商在支持列表内,并阅读对应 Wiki 页面,因为不同服务商的配置项差异很大。若你依赖自定义 Wireguard 配置,务必测试 AmneziaWG 支持是否满足需求。最终判断:Gluetun 是同类容器中功能密度最高的选择,但它的成功完全取决于你愿意花多少时间阅读 Wiki。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记