
VPN Manager 发布:无需 root 权限即可在本机并行运行多个 WireGuard 出口
来源标题:Show HN: VPN Manager
VPN Manager 允许用户在本机同时运行多个 WireGuard 出口,并为不同程序指定各自的隧道。每个出口以本地 SOCKS5/HTTP 代理形式提供,受保护流量只走指定隧道或直接失败,不会回退到普通网络。该工具以普通用户身份运行,无需 root、内核模块,也不改动系统路由、防火墙和 DNS,支持 Linux 与 macOS 11 及以上版本。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
在自己的电脑上并行运行多个 WireGuard 出口,并决定哪些程序走哪个出口。
每个出口都可以作为本地 SOCKS5/HTTP 代理访问,你选定的程序可以在启动时只通过该隧道出网。VPN Manager 以你自己的用户身份运行:不需要 root,不需要内核模块,电脑的路由、防火墙和 DNS 保持原样。机器上的其他所有程序继续使用正常网络。
唯一的承诺是:受保护的流量要么从其所属连接的隧道出去,要么失败。绝不会回退到正常网络。
本 README 中的截图展示的是使用虚构数据的演示环境。
让流量通过连接的三方式
要求:Linux(x86_64 或 aarch64,glibc 2.35 或更新版本——Ubuntu 22.04、Debian 12 及更高版本——并带有 systemd 用户会话)或 macOS 11 或更新版本(Apple silicon 或 Intel)。无需 root。
curl -fsSL https://raw.githubusercontent.com/DennySORA/vpn-manager/main/scripts/install.sh | sh
scripts/install.sh 会从最新 release 下载适用于本机的安装程序,若其 SHA-256 不匹配则停止,然后运行它。安装程序会把程序放入你的用户数据目录,将它们注册为按用户的服务(Linux 上是 systemd 用户单元,macOS 上是 launchd 代理)并启动它们。再次运行同一命令即可升级。
然后打开 http://127.0.0.1:18765。如果该端口已被占用,安装程序会选择下一个空闲端口并告知你。
curl -fsSL https://raw.githubusercontent.com/DennySORA/vpn-manager/main/scripts/install.sh | sh -s -- --version 0.1.0 # 指定版本 curl -fsSL https://raw.githubusercontent.com/DennySORA/vpn-manager/main/scripts/install.sh | sh -s -- --port 18765 # 其他选项会传给安装程序
想先检查一下?从 release 页面下载安装程序及其 .sha256 文件,用 sha256sum -c(macOS:shasum -a 256 -c)校验,赋予可执行权限后自行运行。
安装后的程序 vpn-installer 和 vpnctl 位于数据目录的 bin/ 文件夹中(Linux:/.local/share/vpn-manager/bin,macOS:/Library/Application Support/VPN Manager/bin)。本 README 中的命令假设该文件夹已在你的 PATH 中;否则请使用完整路径。
vpn-installer status # 已安装的内容及其是否运行 ./vpn-installer-<version>-<os>-<arch> upgrade # 切换到该版本;若新版本无法启动,会自动回退到上一版本 vpn-installer uninstall # 移除服务和程序;数据、密钥和日志保留 vpn-installer uninstall --purge # 同时删除数据、密钥和日志(该目录中的其他文件不受影响) vpn-installer licenses # VPN Manager 及其内置第三方软件的许可证
所有内容都在一个目录中——Linux 上是 ~/.local/share/vpn-manager,macOS 上是 ~/Library/Application Support/VPN Manager。其中包含程序、数据库、用于加密已存储密钥的密钥(vault.key)、日志和升级备份。备份该目录即包含该密钥。
从网络中的其他设备使用:在安装或升级时加上 --listen-address 0.0.0.0 --allow-client <你的局域网 CIDR 形式>。请先阅读「须知」:没有登录功能。
从源码构建:参见 docs/development.md(繁体中文)。
使用方式
- 添加出口
使用 Mullvad 或 AirVPN 账户:打开 Providers,选择 Add account,输入账户,然后选择服务器并创建连接。首次使用时还没有可用于访问提供商的隧道,因此 VPN Manager 会请求你允许一次直接连接,该连接限时 10 分钟且仅限提供商的地址。此后,提供商请求都通过连接进行。
使用 WireGuard 配置文件:打开 WireGuard profiles,选择 Import profile,粘贴文件或选择文件,检查预览,然后用该配置文件 Add connection。
- 启动它
打开 Connections 并启动连接。当显示 Connected 后,按 Check exit IP 查看外界看到的地址和位置。
通过 Gateway。打开 Gateways,选择 Add Gateway,选择连接、类型(SOCKS5、HTTP 或两者)和端口。然后使用 Copy proxy address 将其交给你的程序:
curl --proxy socks5h://127.0.0.1:<port> https://example.com # SOCKS5;域名通过隧道解析 curl --proxy http://127.0.0.1:<port> https://example.com # HTTP
在浏览器中,输入相同的地址和端口作为 SOCKS5 或 HTTP 代理。
作为受管应用。打开 Managed apps,选择 Add app,选择程序、其参数、连接以及隔离的严格程度。VPN Manager 在你批准时记录程序的指纹,若文件已更改则拒绝启动。从列表中启动和停止它;详情面板显示其进程、监听的端口、流量和输出。
通过 SSH。打开 SSH hosts,添加应通过某个连接的主机,然后按一次 Add Include;此后 ssh <alias> 即使用 VPN。SSH downloads 添加任务,从远程文件夹获取新文件到本地文件夹。
如果你的提供商为你转发端口,打开 Port forwards,选择 Add port forward,并指定应由哪个受管应用和端口接收。该转发仅在该应用确实占用该端口时监听,并会显示何时真正观察到来自外部的连接。
Overview 显示受保护的内容及其出口。Metrics 保留历史记录。System 提供诊断信息,并在需要处理时告诉你该怎么做。
vpnctl status # 服务及每个连接的状态 vpnctl instance list # 连接列表 vpnctl instance start <name> # 启动、停止、重启 vpnctl emergency-stop <name> # 立即阻断某个连接 vpnctl app list # 受管应用列表 vpnctl doctor # 检查安装
vpnctl --help 列出其他所有内容(Gateways、端口转发、配置文件、提供商、SSH、黑名单、传输配置文件)。
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。