如何在 VPS 上自建 WireGuard VPN

租用免 KYC 的 VPS,月付低至 $4.80(Core 年付方案),运行官方 WireGuard 快速安装,把密钥和一个 UDP 端口掌握在自己拥有 root 权限的硬件上。
租用免 KYC 的 VPS,月付低至 $4.80(Core 年付方案),运行官方 WireGuard 快速安装,把密钥和一个 UDP 端口掌握在自己拥有 root 权限的硬件上。
「人多」是卖点,也是问题所在
商业 VPN 订阅的标准论据是「人多」:成千上万的陌生人共享同一个出口 IP,任何单一行为模式都无法归到某一个人头上。但没有哪家会把反论点印在定价页上——正是这群人制造了验证码高墙、流媒体封锁和声誉池化,让共享出口的实际体验糟糕透顶。当你租一台小 VPS 并亲自装上 WireGuard 时,底层协议与那些大消费品牌公开记录的完全一致(wireguard.com),但 51820/udp 上的出口 IP 只服务一个人——那个人就是你。
真正起作用的是「所有权」这个机制。消费级订阅租给你的是一个你无法检查、无法重置、也无法换钥的出口;而租一台 VPS 则把 root 权限交给一台拥有独立公网 IPv4 的机器——入门 Core 系列配备 2 vCPU 的 Ryzen 9 9950X 和 80 GB NVMe——隧道完全由你自己掌控。密钥在你的设备上生成,整台服务器的配置只是一个 /etc/wireguard/wg0.conf 文件,不限流量的 1 Gbps 端口意味着套餐永远不会成为瓶颈。Outline(Jigsaw)用更友好的安装器卖的是同一套所有权模式(getoutline.org),但你真正购买的是模式本身,而不是安装器。
这里的推理会出现裂痕:单个 IP 没有人群来稀释它。本应分散在成千上万订阅者之间的使用画像,会单独落在你的地址上,而这个地址又关联着一个带有你凭据的托管账户。这就是拥有端点的诚实代价,任何隧道都加密不掉它。
但这笔交易依然值得:你放弃了人群掩护,换来的是可以在几分钟内重建、换钥或迁移出口的能力。VPSbit 只出租机器,不运营隧道;公司里没有任何人持有你的任何一把密钥。下一个问题是:当密码学保持不变、而责任归属发生转移时,究竟什么会改变——答案会让那些以为「App 才是难点」的人感到意外。
VPS $4.80* 起(年付期限),存储 1–5 TB NVMe 年付折合 $24/月起,带 IPMI 的独立服务器 $39.20/月起。加密货币账单,免 KYC。
立即启动协议相同,担责的一方不同
从订阅切换到自建隧道,密码学层面什么都没变,改变的完全是责任归属。WireGuard 的设计刻意精简:协议概述描述的握手与数据平面只用了几千行内核代码实现,用 ChaCha20-Poly1305 加密、BLAKE2s 做哈希,两者都公开载于 RFC 8439。Mullvad、Proton VPN 和 IVPN 运行的也是同一套结构,并且公开记录;他们额外卖给你的是一个 App、一支服务器舰队,以及上一节说的那群人。
在你自己的机器上,整套技术栈只有三件东西:内核模块、wg 配置工具,以及从单个文件拉起接口的 wg-quick 包装器。从发行版的软件仓库几分钟就能装好——官方安装页覆盖了所有发行版——然后用 systemctl enable --now wg-quick@wg0 启用隧道。没有需要照看的守护进程,没有需要清理的数据库,也没有在你的设备和网络之间偷偷回连的厂商客户端。
裂痕在于:人们把客户端 App 的思维带了过来,指望杀 SWITCH、混淆和地址轮换会自动出现。自建的 WireGuard 这些一概没有。隧道一旦断开,流量会静默回退到物理接口——除非你加一条只允许经由 wg0 出站的防火墙规则,否则流量会以明文离开。wg(8) 手册把这个定位说得很直白:这个工具只负责配置,不负责监护。
把这个缺口当作待办清单,而不是缺陷:护栏要由你自己来建,而值得建的护栏会在本指南后面出现。作为交换,你得到的是一条每个组件都可以在一个下午读完的隧道。不过先来看看安全究竟从哪里产生——不在服务器上,而在铸造密钥的那几台机器上。
密钥在你这一侧铸造
这套方案最重要的安全属性永远不会经过服务商:私钥在你自己的设备上生成,服务器只会收到公钥。官方快速入门把它简化成两条命令——先运行 umask 077,确保没有任何文件以全局可读的方式创建;再用 wg genkey | tee privatekey | wg pubkey > publickey 铸出一对密钥。一把从未离开过生成它的笔记本的私钥,任何人都无法在静态存储中截获,包括把机架租给你的那家公司。
WireGuard 的密钥路由把每个 peer 映射到一把钥匙:服务器的 [Peer] 块列出每台设备的公钥以及它可用的隧道地址,设备的其他信息一概无关。为每个 peer 加一行 PresharedKey——用 wg genpsk 生成——等于在握手之上再叠一层对称密钥,这是该设计针对未来椭圆密码学攻击的对冲。ip(8) 手册介绍了这些地址所依赖的路由层。
实践中的裂痕:手机和笔记本共用一对密钥。两台设备不断重新握手、互相踢下线,latest handshake 时间戳在两者之间来回跳动,流量一次断流几秒钟,看起来像 Wi-Fi 信号差,其实是密钥共用。另一个经典错误是把用过的 privatekey 文件提交进 dotfiles 仓库或打进磁盘镜像——私钥只要被复制到任何地方一次,就应当视为已泄露,立即重新铸一对。
值得坚持的纪律:每台设备一对密钥,服务器端存放在 /etc/wireguard/ 下,客户端存放在系统钥匙串中,并养成轮换习惯——一台设备离开家庭网络,只需一条 wg set wg0 peer remove 就与一切无关。身份问题解决之后,下一个问题是:外部世界究竟应该能看到这台机器的多少?答案小得令人欣慰。
一个沉默的 UDP 端口就是全部攻击面
反直觉的地方在这里:当陌生人探测时,你的 VPN 端点能做的最好的事情就是什么都不做。WireGuard 从不响应未经认证的包——没有 banner,没有 reset,没有任何形式的回复——因此对 51820/udp 的扫描甚至无法证明那里有服务器在监听。这种沉默就是设计本身,它把你的防火墙工作压缩到可以装进脑子里的程度:默认拒绝,然后精确放行隧道所需的唯一一个 UDP 端口。
在大多数系统上,操作只有两行。nft add rule inet filter input udp dport 51820 accept 打开缺口,ss -ulnp | grep 51820 确认接口已绑定并在监听(ss(8) 解释了输出内容)。其余的一切——用于你自己管理的 22/tcp,以及当这台机器还要跑网站时的 80/tcp 和 443/tcp——都应当是经过单独审视的慎重决定,而绝不是安装脚本的附带产物。
经典错误是从服务器本机测试:机器上的 wg show 永远看起来很健康,但它证明不了真实客户端所走路径的任何情况,因为 localhost 根本不经过你刚写的那条过滤规则。第二个经典错误:在托管面板里启用了防火墙,却让虚拟机内部防火墙空着——或者反过来——两层对「谁在保护什么」意见不一。当两层意见不一时,更松的那层通常会意外胜出。
在面板里给出口配一条匹配的 PTR 记录属于可选的锦上添花——没有它隧道照样工作,所以等核心部分跑通了再说。陌生人能否找到这个端口,取决于上一节的密钥交换;你的流量能否逃出隧道,取决于再上一节的护栏;端口只是一扇门。下一节:谁有资格走进这扇门。
每台设备一个 peer,否则最新的握手说了算
在所有设备上复用同一份 peer 配置看起来很整洁,却会悄悄毁掉隧道。WireGuard 对每对密钥只维护一个会话:当手机和笔记本共用一对密钥时,每一次新握手都会把对方踢出会话——刚说话的那台设备持有会话,输掉的一方下载中的包凭空消失,你得到的是间歇性故障,看似酒店 Wi-Fi 不给力,其实是自己的配置在跟自己打架。
解决办法是结构性的,不是流程性的:服务器上每台设备一个 [Peer] 块,各用各的密钥对和各自在你控制的子网中的地址——习惯上选 10.8.0.0/24。在客户端一侧,AllowedIPs = 0.0.0.0/0 把所有流量都送进隧道,而 AllowedIPs = 10.8.0.0/24 只能到达这台机器本身;按设备逐台决定,而不是按家庭一刀切,其底层路由语义见ip(8) 手册。
验证是逐个 peer 的工作:先接入一台设备,用 wg show wg0 读取服务器端,确认该 peer 的传输计数器双向都在增长,再接入下一台。按这种节奏分批上线,出问题的配置会立刻自我暴露——出故障的客户端计数器冻结,而先上线的照常流动。把 4 台设备一次性全部接入,会让一行错误的 AllowedIPs 变成一下午的猜测游戏。
常见故障点:运营商级 NAT 后面的移动 peer 会「沉默」。服务器无法主动连向一个它看不到的地址,所以手机在自己先说话之前收不到任何东西;PersistentKeepalive = 25 每 25 秒发送一个空包来维持 NAT 映射,可以解决这个问题。第二个故障点:路径 MTU 黑洞——握手成功,但大流量传输总是卡在同一字节数——在接口块内钳制 MTU = 1420 能解决绝大多数情况。
有了按设备划分的 peer,吊销一行命令搞定,不必再进行「家庭协商」,轮换也不再可怕到被一再拖延。这种模块化也正是迁移端点毫无痛苦的原因——而这一点很关键,因为出口的位置是这套技术栈中唯一一个可以由法律而非工程来推翻的决定。
出口 IP 继承机架所在地的法律
为机器选址看起来是延迟问题,实际上是法律问题:出口 IP 位于某个具体的数据中心内,受某一具体法域管辖,你通过隧道发出的每一个包都在那个司法辖区下浮现。司法辖区指南对 VPSbit 全部 12 个站点做了排名;简单概括:阿姆斯特丹回答的是毫秒数,雷克雅未克回答的是留存法,苏黎世回答的是程序正义。旗帜变了,隧道本身没有任何变化——但能对这台机器提出什么要求,全都变了。
值得注意的是,商业层面不随旗帜改变:同样的 SKU 在每座城市都有售,一口价覆盖全图,全部十九种币种都在免 KYC 账户下结算——账户可以只是一个令牌,或者一个邮箱加一个 12 位密码。连接元数据最多保留 24h;不记录载荷与虚拟机内流量。三个站点公布加价:冰岛和挪威 +20%,瑞士 +35%,卢森堡 +15%——其余站点按基础牌价计费。XRP 支付指南展示了币种和城市如何保持为两个相互独立的下拉选项。
订购 Core,牌价 $6/月——年付为 $4.80/月——并把端点放在你的威胁模型真正点名的城市,而不是最便宜的那座;部署页面把套餐、城市和币种合并在一张账单上,没有任何日后需要取消的自动扣费。只有少数几个 peer 的隧道不会让 2 vCPU 或不限流量的 1 Gbps 端口吃力,所以入门套餐真的够用。
裂痕在于:以为换个旗帜就能让载荷合法化。并不能——AUP 附加在每一个 SKU 上,滥用行为按照数据中心所在地的法律处理,而通过你自己的隧道进行扫描、发垃圾邮件或攻击,是你已经同意过的封号级事件。旗帜改变的是哪个法院必须来问、以及怎么问。这是一个真实的区别;只是不是营销暗示的那个,所以这些限制值得单独一节。
隧道只加密一段路,其余一概不管
请把几何结构说清楚,因为对 VPN 的大多数失望都源于几何混乱:自建的 WireGuard 隧道只加密从你的设备到 VPS 这一段,再远就不管了。你的家庭 ISP 只能看到一条通向单个 IP 的不可读数据流;目标网站看到的是 VPS 地址,而不是你的地址。离开这台机器之后的一切——数据中心上行链路、通往目的地的路径、目的地本身——都以服务器的 wg0 地址作为普通流量离开。
这个几何结构附带一本可读的账本。在本平台上没有载荷日志,也没有虚拟机内流量日志,连接元数据最多保留 24h;账单和面板操作照常作为商业记录保留。合同签订方是一家 Saint Kitts and Nevis 公司,而磁盘位于 12 个数据中心之一,任何送达的法律程序受当地法律管辖——两层结构,都在司法辖区指南中有说明。
DNS 在这个几何结构中值得单独一句:隧道路由的是数据包,不是域名解析,因此保留旧解析器的客户端会开开心心地从错误的一侧提问。把每台设备的 DNS 指向隧道侧的解析器——接口块里写 DNS = 10.8.0.1——查询就会和其他流量走同一条路。「突然不能用了」的报告里,有一半是解析逃出了被包裹的接口,而不是包逃出了隧道。
这个模式让人失望之处在于:它不是匿名。送达机架的法律程序会抵达这台机器;出口 IP 可以归因到一个托管账户;AUP 禁止的一切——扫描、垃圾邮件、攻击——即使在你的加密隧道里跑,也是封号级行为。隧道是一条边界,边界有两面,外侧那一面不属于你控制,无论它跑在谁的硬件上。
这条边界能为你买到的是内侧的控制权:这台机器。给它打补丁,管好它的密钥,它就在日常运维意义上始终属于你。这就是下一节要谈的维护问题,因为大多数自建隧道的失败不是败于攻击者,而是败于疏忽——而疏忽是有时间表的,你可以围绕它做规划。
端点死于疏忽,而不是死于攻击者
自建 VPN 最常见的失败无聊得很:第一天启动的那个内核,第九个月还在运行,其 TCP 栈或 WireGuard 实现上挂着一堆已知 CVE。无人值守安全升级能填补大部分缺口——在 Debian 系系统上运行 apt install unattended-upgrades,即可启用每日自动拉取安全补丁而不用看你的日历——首次启用之后,你不用再想它,直到某次被迫重启。
重启是自动化替你完成不了的部分。打过补丁的内核会一直待在内存里,直到机器重启,而 /var/run/reboot-required 就是提示有重启待执行的标志——每周检查一次,或者按你自定的固定周期重启。完整的顺序——先密钥、再防火墙、再补丁、再备份——都在加固清单里;VPN 端点只是一个恰好只开放一个 UDP 端口的加固目标,这让它是最容易保持干净的机器之一。
常见裂痕:把每台设备上的客户端 App 都升级了,服务器操作系统却悄悄滑出了支持期。EOL 版本不再接收自动化所依赖的安全更新源,机器看起来有人维护,打补丁却早已静默停止。第二个裂痕:systemctl restart wg-quick@wg0 会让所有 peer 会话短暂中断,所以配置改动请放在业务低谷时段进行;当你要做的改动不需要中断就能生效时,用 wg syncconf。
维护节奏也是察觉增长的时机。如果这条隧道如今承载的是一个家庭、一间办公室或一组 site-to-site 链路,那么当初轻松胜任的入门套餐可能已经不是合适的形状——而这是一个有诚实答案的扩展问题:答案有时是一个更大的端口,有时是真正的金属。
当一小撮 peer 变成机架级问题
Core 轻松承载几个 peer:2 vCPU 的 Ryzen 9 9950X(4.3–5.7 GHz)、4 GB DDR5 和不限流量的 1 Gbps 端口,早在个人隧道将其压满之前就已经绰绰有余。阶梯是为超出这一形状的工作负载准备的:中间档翻倍到 4 vCPU 和 8 GB,端口 2.5 Gbps;VPS 顶配档是 8 核 EPYC、32 GB ECC 内存和 10 Gbps。每一级都是同样的 SKU 模式,所以升级只是改套餐,不是迁移。
到独立服务器的跨越是架构性的,不是数值性的:当同一台机器既要当隧道又要干别的——办公室出口加邮件加构建服务器——配备 IPMI 带外访问的独立物理硬件开始体现价值。Forge 是同一颗 9950X 的 16c / 32t,配 2 x 1 TB NVMe(RAID 0/1)并附带 DDoS 防护;Summit 和 Monolith 则攀升到双 EPYC 地带,端口 10 和 25 Gbps。独立服务器档位与 VPS 系列采用同样的加密结算和同样的免 KYC 账户模式。
当端点同时是十几个人共享的基础设施,而不再是一个四台设备的家庭时,租用 Forge,牌价 $49/月——年付为 $39.20/月。IPMI 意味着一次把自己锁在门外的防火墙改动,只需一个控制台会话即可解决,而不是提一张工单;9950X 的核心处理握手毫不费力。但如果只是个人隧道,这就是你永远碰不到的容量。
裂痕在于:工作负载还没需要就上了金属,是为一家 peer 从未用到的余量多花八倍的钱。做决定时看端口速度和共同租户的数量,而不是配置表的光鲜程度。无论选哪边,下面的操作手册完全相同——这正是本指南以它收尾的原因。
WireGuard VPN 操作手册,按执行顺序
从结算开始:选套餐,选城市,用你钱包里持有的十九种币中的任意一种支付账单,大约 60 秒后机器就镜像完成——从付款到 SSH。首次登录时,先添加你的公钥并禁用密码认证,然后再让任何东西接触网络——这些步骤归加固清单管,本指南直接沿用而不重复。十五分钟后,你就到了有意思的部分。
接下来铸造密钥:umask 077,然后每台设备运行 wg genkey 和 wg pubkey,绝不在两台机器之间共用一对。写入 /etc/wireguard/wg0.conf,包含接口的 Address 和 ListenPort,然后每台设备一个 [Peer] 块,写上它的公钥、它在 10.8.0.0/24 中的隧道地址,以及——对任何移动设备——PersistentKeepalive = 25,让 NAT 映射在空闲期也能存活。
在默认拒绝的防火墙上只开一个口——udp/51820 或你自己选的端口——用 ss -ulnp 确认监听已就绪,用 systemctl enable --now wg-quick@wg0 让接口开机自启。从外部网络上的真实客户端测试,绝不要从机器本机测试,并确认双向:流量经由 wg0 流动,且接口断开时没有任何泄漏。等核心部分跑通了,再从面板设置可选的 PTR。
然后让它保持无聊:每周读一次 /var/run/reboot-required,轮换任何离开家庭的设备的密钥,每年随着法律和延迟围绕你的用户变化而重新审视一次选址。整套流程——下单、密钥、配置、端口、启用、测试、维护——第一次大约十五分钟,之后每月五分钟,回报是一个你随时可以不查资料就说出其密钥、配置和司法辖区的出口。
VPSbit 会替我运营 VPN 吗?
不会。root 就是产品本身:WireGuard、OpenVPN 或 Outline 由你自己在虚拟机上安装,密钥由你持有,吊销或重建整套配置随时随你。服务商一侧没有托管端点,也没有任何客户端软件——公司只是把硬件租给你,完全置身于隧道之外。
下单需要任何身份验证吗?
完全不需要。账户本身可以只是一个令牌,或者一个邮箱加一个 12 位密码,账单以加密货币结算,支持包括 XMR 和 BTC 在内的十九种币。从入门 VPS 套餐到独立服务器机架的任何档位,护照、手机号或银行卡都不会进入流程。
个人隧道需要多少带宽?
比目录中任何一个套餐提供的都少:入门 VPS 系列在 1 Gbps 端口上不限流量,早在一个 WireGuard peer 家庭将其占满之前就已绰绰有余。只有当同一台机器还要承载不属于你的工作负载时才往阶梯上走,让端口速度而非配置表来决定。
这和商业 VPN 订阅有什么区别?
区别在架构,不在协议:底层运行的是同一个 WireGuard,但出口只属于你一个人。共享 IP 的验证码和「无日志政策」的信任问题都消失了;作为交换,单个 IP 意味着使用画像归于你本人而不是一群人。这是拥有端点的诚实代价,值得在购买前而不是购买后认清。
之后可以把端点迁到另一个国家吗?
可以。在同一个免 KYC 账户下部署第二台机器,把你的设备指向新的 <code>Endpoint</code>,然后退役旧机器——城市下拉菜单改变的是延迟和法律,结算方式永远不变。冰岛和挪威加 +20%,瑞士 +35%,卢森堡 +15%,地图上其余站点均按基础牌价计费。
如果出口 IP 被我用着的某个服务封了怎么办?
重新部署一台拿全新的 IPv4,在客户端上更新 <code>Endpoint</code> 那一行,开通后的几分钟内隧道就恢复了原样。这正是「每台设备一个 peer」值得坚持的原因之一:只有服务器上的那个块需要改,你的每设备密钥和客户端配置一概不用动。