brianatalliance/wireguard-vpn-spk

GitHub: brianatalliance/wireguard-vpn-spk

为群晖 DS220+ 提供 DSM 7.0+ 兼容的 WireGuard VPN 隧道功能,通过用户空间实现绕过内核模块限制。

Stars: 0 | Forks: 0

# WireGuard VPN Tunnel SPK **作者:** Brian Vicente **版本:** 1.0.0 **日期:** 2026-03-28 **组织:** Alliance for Empowerment Synology SPK 软件包,为 DSM 7.0+ 提供用户空间 WireGuard VPN 隧道,无需内核模块支持。使用 `wireguard-go`(Go 实现)以及来自 `wireguard-tools` 的 `wg` 和 `wg-quick`。 ## 目标平台 | 规格 | 值 | |------|-------| | NAS 型号 | Synology DS220+ | | 架构 | x86_64 (Geminilake) | | DSM 版本 | 7.0+ | | 权限 | `run-as: package` (兼容 DSM 7) | ## 包含内容 | 组件 | 描述 | |-----------|-------------| | `wireguard-go` | 用户空间 WireGuard 实现(从[源码](https://git.zx2c4.com/wireguard-go)静态编译) | | `wg` | WireGuard CLI 工具(从 [wireguard-tools](https://git.zx2c4.com/wireguard-tools) 静态编译) | | `wg-quick` | 标准隧道启动/关闭脚本 | | `wg-tunnel-setup` | 用于交互式配置、状态检查、测试和重置的辅助脚本 | | `VERSION` | 版本跟踪和更新日志 | ## 构建 SPK ### 前置条件 - Go 1.22+(用于编译 `wireguard-go`) - GCC(用于编译 `wg`) - `tar`(用于打包) ### 构建步骤 ``` # 1. 编译 wireguard-go (静态) git clone https://git.zx2c4.com/wireguard-go /tmp/wireguard-go cd /tmp/wireguard-go CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o package/wireguard-go . # 2. 编译 wg (静态) git clone https://git.zx2c4.com/wireguard-tools /tmp/wireguard-tools cd /tmp/wireguard-tools/src make CC="gcc" LDFLAGS="-static" cp wg package/wg strip package/wg # 3. 复制 wg-quick cp /tmp/wireguard-tools/src/wg-quick/linux.bash package/wg-quick # 4. 创建 package.tgz cd package && tar czf ../package.tgz wireguard-go wg wg-quick wg-tunnel-setup VERSION && cd .. # 5. 构建 SPK tar cf WireGuardVPN-geminilake-1.0.0.spk INFO package.tgz scripts conf PACKAGE_ICON.PNG PACKAGE_ICON_256.PNG LICENSE ``` ## 安装说明 1. 打开 DSM → **套件中心** → **手动安装** 2. 上传 `WireGuardVPN-geminilake-1.0.0.spk` 3. **取消勾选** "安装后立即运行" 4. 安装完成后,通过 SSH 进入 NAS 并配置: ``` # 使用您的 VPN 凭据编辑配置 sudo vi /etc/wireguard/wg0.conf # 启动 tunnel (需要 root) sudo /var/packages/WireGuardVPN/scripts/start-stop-status start # 验证 sudo /var/packages/WireGuardVPN/target/wg show wg0 curl -s https://ifconfig.me ``` ## 配置 编辑 `/etc/wireguard/wg0.conf`: ``` [Interface] PrivateKey = Address = /32 # DNS 行已移除 — DSM 缺少 resolvconf [Peer] PublicKey = AllowedIPs = 0.0.0.0/0 Endpoint = : PersistentKeepalive = 25 ``` ## 辅助工具 ``` wg-tunnel-setup status # Show tunnel status + public IP wg-tunnel-setup test # Run connectivity diagnostics wg-tunnel-setup configure # Interactive config wizard wg-tunnel-setup reset # Stop and clean up ``` ## DSM 7 说明 - DSM 7 阻止未签名的第三方软件包以 root 身份运行 - 软件包使用 `run-as: package` 权限级别进行 GUI 安装 - 启动/停止需要通过 SSH 使用 `sudo` - 若要开机自启,请在 DSM 任务计划程序中创建一个触发任务(开机,root) ## 架构说明 对于生产环境使用,建议通过 **UDM Pro WireGuard VPN Client** 进行路由,而不是直接在 NAS 上运行 WireGuard。UDM Pro 在网关级别处理隧道,NAS 只需通过它进行路由 —— 无需内核模块,没有 DSM 兼容性问题,可以干净地度过 NAS 重启和 DSM 更新。 ## 项目结构 ``` wireguard-spk/ ├── INFO # SPK metadata ├── LICENSE # MIT + bundled component licenses ├── PACKAGE_ICON.PNG # 64x64 icon for Package Center ├── PACKAGE_ICON_256.PNG # 256x256 icon for Package Center ├── conf/ │ ├── privilege # run-as: package (DSM 7 compatible) │ └── resource # usr-local-linker for PATH ├── package/ │ ├── wireguard-go # (built from source, not in repo) │ ├── wg # (built from source, not in repo) │ ├── wg-quick # Bash script from wireguard-tools │ ├── wg-tunnel-setup # Helper script │ └── VERSION # Version tracking └── scripts/ ├── postinst # Post-install: symlinks, config dir, template ├── postuninst # Post-uninstall: cleanup symlinks ├── postupgrade # Post-upgrade: re-link binaries ├── preinst # Pre-install: ensure TUN device ├── preuninst # Pre-uninstall: stop tunnel ├── preupgrade # Pre-upgrade: stop tunnel └── start-stop-status # Main lifecycle script ``` ## 相关项目 - [perplexity-windows-xpc](https://github.com/brianatalliance/perplexity-windows-xpc) — Windows 版 Perplexity AI — PowerShell、系统托盘、Office 集成 - [perplexity-xpc](https://github.com/brianatalliance/perplexity-xpc) — PerplexityXPC 代理服务、托盘应用、MCP 服务器管理 - [perplexity-connector](https://github.com/brianatalliance/perplexity-connector) — Perplexity Sonar API 连接器 — CLI、流式传输、异步、结构化输出 - [atera-dashboard](https://github.com/brianatalliance/atera-dashboard) — Atera RMM NOC 仪表盘 — React + Vite + Tailwind + Recharts - [atera-connector](https://github.com/brianatalliance/atera-connector) — Atera RMM API v3 连接器 — 具有完整 CRUD 支持的 Python CLI - [synology-connector](https://github.com/brianatalliance/synology-connector) — Synology DSM Web API 连接器 — 跨 10 个模块的 40 个 CLI 操作 - [udm-nspawn-pki](https://github.com/brianatalliance/udm-nspawn-pki) — UniFi Dream Machine Pro 上 systemd-nspawn 中的两层 PKI - [nas-git-sync](https://github.com/brianatalliance/nas-git-sync) — 自动化 GitHub 到 Synology NAS 仓库同步脚本 ## 作者 **Brian Vicente** — 网络协调员与网络安全管理员,[Alliance for Empowerment](https://www.allianceforempowerment.org) GitHub: [@brianatalliance](https://github.com/brianatalliance) ## 许可证 MIT — 有关捆绑组件的许可证,请参阅 [LICENSE](LICENSE)。 WireGuard 是 Jason A. Donenfeld 的注册商标。
标签:DS220+, DSM 7.0+, Geminilake, Go语言, IP 地址批量处理, Linux网络工具, SPK套件, Synology, VPN隧道, wg-quick, WireGuard, wireguard-go, wireguard-tools, x86_64, 内网穿透, 应用安全, 日志审计, 用户态实现, 程序破解, 网络安全, 网络安全, 群晖, 远程访问, 隐私保护, 隐私保护, 静态编译