← 全部文章

自建 VPN 教程:用门罗币租 VPS 搭建 WireGuard

发布于 15 Oct 2026

在便宜的 VPS 上用 WireGuard 自建 VPN,用 Monero 付款:分步搭建教程、真实花费,以及个人 VPN 隐藏不了的东西。

自建 VPN,就是在你租来的一台小型 VPS 上运行 WireGuard 服务器:手机和笔记本电脑通过隧道连到它,你访问的网站看到的是服务器的地址,而不是你家里的网络连接。自己搭一个 VPN 只需要几条命令,每月大约 €3 到 $10;如果用 Monero(门罗币)付款,而主机商最多只要一个邮箱,账单上就不会出现你的名字。但它不会让你变得匿名,这份教程就从这个取舍讲起。

核对于 2026 年 10 月 1 日。

VPS 与 VPN 的区别:各自能隐藏什么

VPS(虚拟专用服务器)是一台租来的虚拟机,它本身什么也不隐藏。VPN(虚拟专用网络)是一条从你的设备通往服务器的加密隧道:你所在的网络只看到发往同一个地址的加密数据包,网站看到的则是服务器,而不是你。

在 VPS 上装好 VPN 软件,你就有了自己的 VPN;订阅 Mullvad 或 IVPN,你就是和别人共用他们的。谁能看到什么:

谁能看到什么 不用 VPN VPS 上的自建 VPN 共享的商业 VPN
你的宽带运营商或咖啡馆 Wi-Fi 你访问的每一个网站 发往同一台服务器的加密 UDP 流量 发往 VPN 服务器的加密流量
你访问的网站 你家里的 IP 你的服务器 IP,只有你一个人在用 许多用户共用的一个 IP
服务器的运营者 不涉及服务器 你的主机商能看到流量大小和连入的 IP VPN 公司,取决于它的日志政策

什么时候适合自建 VPN,什么时候共享 VPN 更好

动手自己搭 VPN 之前,先想清楚你要躲的是谁。如果威胁来自你脚下的网络(酒店 Wi-Fi、记录你浏览内容的运营商、公司的网络过滤),自建 VPN 占优。它还给你一个固定的出口地址,而且不必信任任何 VPN 公司。

如果威胁在另一端,它就落了下风。只有你一个人用的出口 IP 就像指纹:只要用它登录一个实名账户,这个地址也就跟你的名字绑在了一起。你的主机商也知道这个 IP 背后只有一个客户;如果它保留流量记录,还知道每天早上是哪个地址连进来:你家。

共享 VPN 把你藏在人群里:每个出口地址指向的是 VPN 公司,而不是某个人。我们的 VPN 与代理分类列出了收 Monero 的那些服务。如果要对网站本身保持匿名,两者都替代不了 Tor 浏览器。

准备工作:KVM VPS、机房位置、Monero 付款

选 KVM,不选容器。 KVM VPS 有自己的 Linux 内核,WireGuard 已经内置其中;容器型 VPS(OpenVZ、LXC)共用主机商的内核,可能不允许你加载它。

小配置就够。 个人 VPN 服务器对 CPU 和内存的需求很低,要看的是流量额度。每月 1 TB 大约相当于全天候 3 Mbit/s。

机房离你近一些,因为距离会增加延迟。司法管辖区决定了谁可以向主机商调取记录,我们的离岸 VPS 指南讲的就是这个。

别让注册环节抵消付款的隐私。 Monero 让你的名字不出现在账单上,但只要留一个手机号或做一次身份证件核验,名字就又回来了。完整的下单流程见我们的免 KYC 分步教程。

以下是收 Monero、可以跑 WireGuard 的 VPS,按字母顺序排列,信息来自各家主机商自己的页面:

主机商 最低套餐 流量 注册时要求 备注
1984 Hosting 每月 €8.72(1 CPU,1 GB 内存) 1 TB 邮箱,手机号可选 冰岛;提供现成的 WireGuard 镜像
Cockbox 每月 $10(0.5 vCPU,1 GB 内存) 摩尔多瓦机房「不限量」 邮箱(不验证)和密码 摩尔多瓦、罗马尼亚;Bitcoin 或 Monero
Kyun 每月约 €3.10(1 核,1 GiB,10 GB,一个 IPv4) 未公布 密码和一道工作量证明谜题 只收 Monero;美国、荷兰、罗马尼亚
Servers Guru 每月 €4.99(1 vCPU,2 GB 内存) 出站 20 TB,入站不计量 邮箱 荷兰、芬兰、新加坡、加拿大
SporeStack 每月 $4(Slow Servers,768 MiB,IPv4) 0.375 TiB 什么都不要:只需给一个令牌充值 Slow Servers 位于美国斯波坎,开通最长需要 48 小时;DigitalOcean 和 Vultr 服务器几分钟内开通,每 30 天 $7.50 起

Mynymbox(每月 €4 起,只要邮箱)在其可接受使用政策中允许运行 VPN 服务,但核对当天它所有的 VPS 套餐都显示缺货。更多选择见 VPS 分类。

在 VPS 上搭建 WireGuard

WireGuard 自 5.6 版起就是 Linux 内核的一部分,该版本于 2020 年 3 月发布(公告),所以在 Debian 12、13 或 Ubuntu 24.04 及更新版本上无需编译任何东西。用你的 SSH 密钥以 root 身份登录,然后选一种方式。

方案 A:用 wg-quick 配置原生 WireGuard

手动配置一个完整的 WireGuard 服务器。运行 ip route show default,记下 dev 后面的那个词(通常是 eth0 或 ens3):下文凡是出现 eth0 的地方都换成它。

apt update && apt install -y wireguard iptables qrencode
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee phone.key | wg pubkey > phone.pub

创建 /etc/wireguard/wg0.conf:

[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = <contents of server.key>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = <contents of phone.pub>
AllowedIPs = 10.66.66.2/32

再创建客户端配置文件 phone.conf:

[Interface]
PrivateKey = <contents of phone.key>
Address = 10.66.66.2/32
DNS = 9.9.9.9

[Peer]
PublicKey = <contents of server.pub>
Endpoint = <server IP>:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0, ::/0 让所有流量都走隧道;由于这台服务器只转发 IPv4,IPv6 流量会直接失败,而不会绕过隧道泄露出去。启动服务器,并把客户端配置显示成二维码,供 WireGuard 应用扫描:

systemctl enable --now wg-quick@wg0
qrencode -t ansiutf8 < phone.conf

每多一台设备,就多生成一对密钥、多加一个 [Peer] 块(10.66.66.3/32,依此类推),然后运行 systemctl restart wg-quick@wg0。设备拿到配置之后,就从服务器上删掉它的 .key 和 .conf 文件。

方案 B:用 Docker 运行 wg-easy,带网页界面

wg-easy 把 WireGuard 封装进一个容器,并提供网页界面,用来添加客户端、显示二维码。它的 GitHub 页面显示:许可证为 AGPL-3.0-only,15.4.0 版发布于 2026 年 8 月,2026 年 9 月下旬仍有提交。安装 Docker 并下载 compose 文件:

curl -sSL https://get.docker.com | sh
mkdir -p /etc/docker/containers/wg-easy
cd /etc/docker/containers/wg-easy
curl -o docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml

这个文件运行的是 ghcr.io/wg-easy/wg-easy:15,WireGuard 走 UDP 51820,网页界面走 TCP 51821,并且对互联网开放。项目建议通过 HTTPS 反向代理从外部访问界面;如果只有你一个人用,更简单的做法是让界面保持私有。把它的端口那一行改成 "127.0.0.1:51821:51821/tcp",然后取消 environment: 一行及其下方 INSECURE 一行的注释,值设为 true。这里之所以可以用明文 HTTP,只是因为外部无法访问它,这也正是项目的无反向代理指南所设定的条件。运行 docker compose up -d,然后从你的电脑建立 SSH 隧道,在浏览器中打开 http://localhost:51821:

ssh -L 51821:127.0.0.1:51821 root@<server IP>

不要改用 ufw 来隐藏这个端口:Docker 的文档警告,通过 Docker 发布的端口会绕过 ufw 的规则。

IP 转发、防火墙和 DNS

方案 A 需要开启数据包转发(wg-easy 的 compose 文件会为它的容器设置好),然后配置一个只放行 SSH 和 WireGuard 的防火墙。如果你的 SSH 监听在别的端口,请把 22 改掉;ufw enable 弹出关于 SSH 的警告时,回答 y:

echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-wireguard.conf
sysctl --system
apt install -y ufw
ufw allow 22/tcp
ufw allow 51820/udp
ufw route allow in on wg0 out on eth0
ufw enable

DNS = 这一行决定由谁来回答你的域名查询。用 9.9.9.9(Quad9)时,查询会经过隧道,你的运营商看不到了,但 Quad9 能看到。如果不想牵涉任何第三方,就在服务器上运行一个解析器,比如 Unbound,监听 10.66.66.1,用 ufw allow in on wg0 to any port 53 向隧道开放它,再把 DNS = 指向这个地址。

测试方法:打开隧道后,随便打开一个查询自己公网 IP 的网页,显示的应该是服务器的地址。

在受审查的网络中:AmneziaWG、Outline 和 VLESS

WireGuard 不做伪装:它的文档把混淆交给上层去处理,而且它没有 TCP 模式(已知局限)。会对数据包做深度检测的网络可以识别并丢弃它。有三个开源项目专门应对这种情况,都能跑在同类 VPS 上:

  • AmneziaWG 是 Amnezia 项目基于 WireGuard-Go 的分支:它在握手之前发送垃圾数据包,把 WireGuard 固定的消息头换成你自己选定的值,并填充数据包,让包长不再与 WireGuard 的特征对上。关闭这些选项后,它仍与 WireGuard 兼容(文档)。AmneziaVPN 应用可以通过 SSH 把它安装到你的服务器上。
  • Outline 运行一个 Shadowsocks 服务器,通过桌面应用来管理。它由 Google 内部的孵化器 Jigsaw 于 2018 年推出,2026 年移交给独立的 Outline Foundation(常见问题)。
  • VLESS 是 Xray 项目的轻量级传输协议(规范),通常跑在 443 端口上,套用 TLS 或 Xray 的 REALITY,让连接看起来像普通的 HTTPS。

这些工具之所以存在,是因为一些国家限制 VPN。以下是截至 2026 年 10 月 1 日的概述,不构成法律建议:

  • 中国: 工业和信息化部 2017 年 1 月发布的一份通知规定,未经批准,不得自行建立或租用 VPN 等信道开展跨境经营活动(官方文本)。
  • 俄罗斯: 2025 年 7 月 31 日第 281-FZ 号联邦法律自 2025 年 9 月 1 日起施行,对两类人处以罚款:为访问被封锁资源的工具(例如 VPN)做广告的人,以及明知是官方极端主义材料清单上的内容仍去搜索并打开的人(无论是否借助此类工具)。
  • 伊朗: 2024 年 2 月,网络空间最高委员会宣布一项决议,禁止在没有合法许可的情况下使用 VPN;该委员会秘书后来表示,决议针对的是国家机关而非公众,因此适用范围仍不明确。

规则和执法都会变化。请查明你所在地的现行法律。

别让服务器泄露信息

  1. SSH 只用密钥登录。 在 /etc/ssh/sshd_config.d/10-keys.conf 中写入 PasswordAuthentication no,运行 systemctl reload ssh,然后在另一个窗口确认你的密钥仍然能登录。使用专为这台服务器生成的密钥。

  2. 自动安全更新。 运行 apt install -y unattended-upgrades,再用 dpkg-reconfigure -plow unattended-upgrades 开启。

  3. 日志放在内存里。 wg show 显示的每个对端的最近地址只保存在内存中,而 SSH 会记录每一次登录及其来源 IP。把系统日志也放进内存:

    mkdir -p /etc/systemd/journald.conf.d
    printf '[Journal]\nStorage=volatile\n' > /etc/systemd/journald.conf.d/volatile.conf
    systemctl restart systemd-journald
    

    这样日志就存放在 /run/log/journal 下,重启即消失。如果装了 rsyslog,它会在 /var/log 中另写自己的日志文件。

  4. SSH 走隧道。 方案 A 运行正常后,执行 ufw allow in on wg0 to any port 22 proto tcp 和 ufw delete allow 22/tcp,之后改为连接 10.66.66.1。万一隧道断了,主机商提供的网页控制台或串口控制台(如果有的话)就是你重新进去的途径。

  5. 一台服务器,一个身份。 不要复用你其他账户的邮箱、SSH 密钥或用户名。

与 Mullvad、IVPN 相比要花多少钱

方案 每月费用 设备数 出口地址
自己的 VPS(见上表) 约 €3.10 到 $10 你配置多少台就是多少台 你独享
Mullvad €5,不论购买时长都一样 5 共享
IVPN Standard $6(每周 $2,每年 $60) 5 共享
cryptostorm $6 1 共享

这三家服务都收 Monero。最便宜的服务器价格比它们低,但你要在搭建和更新上花工夫,还得接受一个永远只指向你的出口地址。你也可以两者兼用:在酒店 Wi-Fi 上用自己的服务器,凡是不应追溯到某一个用户的事,都交给共享 VPN。

常见问题

可以自建 VPN 吗?

可以。任何带 KVM 和公网 IPv4 地址的 Linux VPS 都能运行 WireGuard,它自 Linux 5.6 起就是内核的一部分。上面的方案 A 就是完整的方法,wg-easy 则多了一个网页界面。在家里用树莓派也行,但那样出口地址就是你家里的 IP。

VPS 比 VPN 更安全吗?

两者不是一回事:VPS 是服务器,VPN 是隧道。在 VPS 上自建 VPN 意味着不必信任任何 VPN 公司,但你是出口地址的唯一用户,也是负责给它打补丁的人。如果想混在人群里,用 Monero 付款的共享无日志 VPN 是更好的工具。

能把我的 VPS 当 VPN 用吗?

通常可以:只要主机商的规则允许,一个开启了 IP 转发的 KVM 套餐就够了。Mynymbox 的可接受使用政策允许 VPN 服务,Servers Guru 的 Monero VPS 页面把 VPN 列为适用用途之一,Cockbox 允许任何在罗马尼亚合法的用途,1984 Hosting 则提供现成的 WireGuard 镜像。SporeStack 的服务器还必须遵守 DigitalOcean 或 Vultr 的规则。注意流量额度。

WireGuard VPN 有哪些缺点?

它不做任何混淆,也没有 TCP 模式,所以封锁它或只放行 TCP 的网络都能把它挡住。服务器会在内存中保留每个对端最近的 IP 地址。该协议默认不具备抗量子安全性,不过预共享密钥可以多加一层防护。

在美国使用 VPN 违法吗?

没有任何联邦法律禁止使用 VPN,美国联邦贸易委员会还发布过选择 VPN 应用的建议(2018 年 2 月)。你通过隧道做的事,与不用隧道时受同样的法律约束,而网站的条款仍可能禁止通过 VPN 访问。以上为概述,不构成法律建议。

简而言之

用 Monero 租一台小型 KVM VPS,用 wg-quick 或 wg-easy 装好 WireGuard,除 SSH 和 UDP 51820 外关闭一切端口,日志放在内存里,SSH 藏在隧道后面。这样换来的,是对你所在网络的隐私。想混在人群里,要靠共享 VPN;要匿名,则是 Tor 的事。