指南

在离岸VPS上运行你自己的VPN

商业VPN要求你信任他们市场部门写下的无日志政策。你自己的VPS除了你配置的内容外没有任何日志。以下是完整的WireGuard搭建流程——以及一份诚实的权衡清单。

为什么自建优于商业VPN

商业VPN的“无日志”是一种 政策。你自己VPS的无日志是一种 架构。这个区别比任何审计徽章都重要:

  • VPN提供商在架构上就能看到一切。 数以千计用户的流量终止于该公司完全控制的服务器。一份保密命令加上悄无声息的日志策略变更,你是察觉不到的——而这种事在你听说过的服务商身上已经发生过。
  • 在你自己的VPS上,你掌控整个技术栈。 你的sshd、你的磁盘、你的WireGuard配置。我们在你的客户机内不运行任何东西,在网络侧也不保留任何活动或连接日志。我们无法窥探你的VPS;而VPN公司的本质恰恰就是能窥探它的隧道。
  • 司法管辖权为你所用。 你的出口节点部署在哪里就归属哪里——如果你愿意,可以选在监控联盟之外,受托管地法院管辖,而非VPN公司母国的法律。

再说句公道话: 自建VPN拥有一个完全属于你的独立IP。 网站不会将其标记为VPN(这确实是体验上的升级),但你所有流量都共享一个地址——你无法混入数千人的洪流中。如果需求是群体匿名,用Tor。如果需求是可信的基础设施,没有什么能比得上一台你完全掌控的机器。

我们要搭建什么

手机和笔记本 → WireGuard隧道 → 你选定位置的SV-Pro → 开放互联网。服务器上启用IPv4转发和NAT,客户端全隧道路由(0.0.0.0/0),DNS通过 9.9.9.9。示例服务器IP: 185.220.101.14 ——替换为你自己的。基础系统为Debian 13;如果你还没加固这台机器,先完成 30分钟检查清单 ,然后再回来。

在Debian 13上进行服务器配置

安装并生成密钥

apt update && apt install -y wireguard qrencode

cd /etc/wireguard
umask 077

# server keypair
wg genkey | tee server.key | wg pubkey > server.pub

# one keypair per client device (laptop shown; repeat for phone)
wg genkey | tee laptop.key | wg pubkey > laptop.pub

在服务器上生成客户端密钥对于首次搭建是可以接受的,因为你本来就要通过SSH传输配置文件。更严格的卫生习惯是在每台设备上生成密钥,只把公钥粘贴到服务器配置中。

编写wg0.conf

# /etc/wireguard/wg0.conf
[Interface]
Address    = 10.10.0.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

# laptop
[Peer]
PublicKey  = <contents of laptop.pub>
AllowedIPs = 10.10.0.2/32

# phone — repeat the block with 10.10.0.3/32

ip route | grep default 检查你的上行接口名称——在VPSRento镜像上是 eth0,但如果你的不同,请调整MASQUERADE行。

启用转发并启动

# turn on IPv4 forwarding, persist across reboots
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-wireguard.conf
sysctl -p /etc/sysctl.d/99-wireguard.conf

# firewall: one UDP port, nothing else
ufw allow 51820/udp comment 'WireGuard'

# bring it up, now and on boot
systemctl enable --now wg-quick@wg0
wg show

wg show 应打印出接口、监听端口和对端信息。暂时还没有握手行——这些会在客户端连接时出现。

客户端配置

在笔记本上, laptop.conf:

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

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

AllowedIPs = 0.0.0.0/0, ::/0 将所有流量通过隧道传输——如果以后需要,可以稍后改为分流隧道。 PersistentKeepalive 让连接在家庭 NAT 下保持存活。手机端无需手动输入:在服务器上生成手机的配置文件,并在终端中将其渲染为二维码:

# prints a scannable QR in the terminal — scan it with the WireGuard app
qrencode -t ansiutf8 < phone.conf

激活后,从任意客户端验证: curl ifconfig.me 应返回你 VPS 的 IP,DNS 泄漏测试应显示 9.9.9.9的运营商——而非你的 ISP。

性能说明

WireGuard 运行在内核中,使用 ChaCha20 加密——在 AMD EPYC 节点上,单条隧道实际可传输 600–900 Mbps 穿过 NAT——也就是说,端口早在 CPU 吃紧之前就已饱和。真正的约束从来不是加密算法,而是套餐的带宽条款。VPN 纯粹消耗带宽:你每下载 1GB,入向计一次、出向再计一次。在按流量计费的套餐上,这笔账很关键。而在 SV-Pro 上—— $19.99/月,1 Gbps 不限量——则无需担心,这也是我们推荐 VPN 搭建者选择 SV-Pro 的原因。有位客户在阿姆斯特丹的单台 SV-Pro 上运行全家设备,至今未触顶。

多跳:从阿姆斯特丹进入,从雷克雅未克退出

如需第二层,可在不同司法管辖区串联两台 VPS。入口节点位于 荷兰 (对你延迟低),两台服务器之间建立 WireGuard 隧道,出口节点位于 冰岛 (你希望流量实际来源的司法管辖区)。你的设备只看到一个阿姆斯特丹端点;互联网看到的是雷克雅未克的 IP;入口节点只看到经过的密文。机制上与你刚写的配置相同,只是重复一次——在入口节点上添加第二个 wg 接口,其默认路由指向出口隧道。代价是增加约 40–60ms 延迟和一台额外的 $5.99–6.89 VPS。当你的威胁模型有预算时值得;没有时则属装饰。

诚实的局限

  • 现在你是运营者。 更新、密钥轮换和可用性都由你负责。 unattended-upgrades加固清单 覆盖大部分内容;其余只是偶尔在周日执行一次 apt upgrade
  • 一个 IP 即一个身份。 观察者可以关联所有从你地址流出的流量。必要时,在另一个位置重新部署——55 秒后你就有新的出口和新的 IP,并已对照 40+ 个黑名单检查。
  • VPS 不是 Tor。 此设置保护你免受 ISP、恶意 Wi-Fi 和 VPN 公司的侵害。面对同时监控隧道两端的国家级对手,时间相关性分析仍然存在。要清楚你在对抗什么。

你的隧道。你的日志:无。

SV-Pro — 4 vCPU、8 GB 内存、不限流量 1 Gbps — 是 VPN 搭建者的首选, $19.99/月。55 秒内获取 root 权限。

简体中文