博客

教程、指南和产品动态。

安全与备份

用 WireGuard 运行您自己的 VPN

3 11月 2026 2 分钟阅读
分享此文章

WireGuard 是内置于 Linux 内核的 VPN 协议,几条命令就能搭好您自己的 VPN 服务器。自己的 VPN 会让您的流量从您可控的 IP 地址出去。但它不会让您匿名:您访问的网站看到的是您服务器的 IP 地址。

本文介绍自己的 VPN 适合做什么、不能解决什么,手动安装步骤,以及带网页界面的更简单做法。

自己的 VPN 适合做什么?

  • 公共 Wi-Fi:在咖啡馆或酒店的网络中,您的流量会一路加密传输到您的服务器。
  • 在国外使用土耳其 IP:因为服务器在伊斯坦布尔,您身在国外时也可以使用土耳其的 IP 地址上网。
  • 访问私有网络:您可以访问接入同一个 VPN 的设备和服务器上的服务,就像大家都在同一个局域网中。
  • 固定的出口地址:即使家里的 IP 变了,您的 VPN 出口也保持不变。

它不能解决什么?

  • 它不会让您匿名。网站看到的是您服务器的 IP 地址,而该地址与您的账户相关联。
  • 有些服务会屏蔽数据中心的 IP 地址。不要以为每项服务都能通过您的 VPN 打开。
  • 它不提供多个国家的出口。您的服务器只在一个地方,在 Seturack 就是伊斯坦布尔。
  • 它并不是为向他人提供上网服务而设计的。如果您通过自己的服务器向他人提供上网服务,根据服务协议,第 5651 号法律规定的义务由您承担。请主要把 VPN 用于您自己的设备,并在让其他人使用之前阅读服务协议。

人们为什么喜欢 WireGuard

  • 它从 5.6 版本起进入 Linux 内核,所以在当前的发行版上,不需要另外安装驱动。
  • 没有密码。每一端都由自己的私钥和公钥对来识别。
  • 配置很简短,一个文件就够了。
  • 它使用 UDP。示例和工具中最常见的端口是 51820。

手动安装(Ubuntu,以 root 身份)

  1. 安装软件包:apt install wireguard
  2. 生成服务器的密钥对:umask 077 && wg genkey | tee privatekey | wg pubkey > publickey
  3. 让每台客户端设备自己生成密钥。手机和电脑上的 WireGuard 应用会完成这一步,您只需要它的公钥。
  4. 按照下表编写 /etc/wireguard/wg0.conf。
  5. 开启 IP 转发:echo 'net.ipv4.ip_forward=1' | tee /etc/sysctl.d/70-wireguard.conf,然后运行 sysctl --system
  6. 在防火墙中开放端口:ufw allow 51820/udp
  7. 启动:systemctl enable --now wg-quick@wg0
段落行作用
[Interface]Address = 10.8.0.1/24服务器在 VPN 网络内的地址
[Interface]ListenPort = 51820监听的 UDP 端口
[Interface]PrivateKey = privatekey 文件的内容服务器的私钥。绝不要分享
[Interface]PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE把客户端流量转发到互联网。请把 eth0 换成您服务器的网卡名称,可用 ip route show default 查看
[Interface]PostDown = 同样的三条规则,把 -A 换成 -DVPN 停止时移除这些规则
[Peer]PublicKey = 客户端的公钥用来识别这个客户端
[Peer]AllowedIPs = 10.8.0.2/32分配给客户端的 VPN 地址

先把 [Interface] 的各行写入文件,再写 [Peer] 的各行。每个客户端有自己的 [Peer] 块。

连接客户端

在客户端的 [Interface] 段中,填入您自己的私钥、Address = 10.8.0.2/24 这一行和一个 DNS 地址。在 [Peer] 段中,填入服务器的公钥、Endpoint = SERVER_IP:51820 这一行和 AllowedIPs = 0.0.0.0/0 这一行。最后一个值会让所有 IPv4 流量都走隧道。如果只想访问 VPN 网络,请改写 10.8.0.0/24。对于位于 NAT 或防火墙之后的设备,官方文档建议使用 PersistentKeepalive = 25。

在服务器上运行 wg show。如果客户端已连接,您会看到一行“latest handshake”。

全部流量还是部分流量?

客户端上的 AllowedIPs 值决定哪些流量进入隧道。0.0.0.0/0 会让所有 IPv4 流量走隧道,但 IPv6 不会。如果您的设备有 IPv6,这部分流量可以绕过隧道。使用 0.0.0.0/0, ::/0 时,IPv6 也会进入隧道并在那里被丢弃,因为服务器不承载 IPv6,所以不会泄露。如果只想访问某些网络,例如 10.8.0.0/24,就只写这些。这称为分流隧道(split tunneling),其余流量走正常路径。对于远程访问某个网络,分流隧道往往就足够了。其余流量不经过隧道,所以不会被拖慢。

更简单的方式:wg-easy

wg-easy 是一个把 WireGuard 服务器和客户端管理与网页界面打包在一起的工具。它可以添加和删除客户端,并为手机显示二维码。它用 Docker Compose 安装,使用 51820/UDP。如果想安全地把管理界面开放到互联网,建议使用反向代理。

Seturack 现成的 WireGuard 服务器使用 wg-easy,大约 4 分钟即可就绪。在面板中您会看到管理地址和密码。隧道只承载 IPv4。请为每台设备创建单独的客户端,如果丢了设备,只需删除它对应的客户端。连接步骤见 WireGuard 帮助文章。

设置您的设备

WireGuard 提供适用于 Windows、macOS、Android 和 iOS 的官方应用。在 Linux 上,装软件包就够了。在手机上用二维码添加配置,在电脑上则导入配置文件。您可以在应用中开关隧道。隧道开启期间,您的上网流量会从您的服务器出去。

四条小小的安全规则

  • 只让 root 能读取配置文件:chmod 600 /etc/wireguard/wg0.conf
  • 绝不要把私钥发给任何人。您唯一要分享的是公钥。
  • 删除您丢失的、或不想再允许的设备所对应的 [Peer] 块。
  • 保持服务器更新。安装完成后,操作系统和应用的更新由您负责。

因为您的 VPN 流量要经过服务器,流量大小也很重要。Seturack 的价格已包含不限流量。

如果连接不上

有些网络会拦截 UDP 流量。请换一个网络试试,例如手机的移动数据。同时检查防火墙中是否开放了 51820/UDP 端口。

如果想从现成的安装开始,请看 WireGuard VPN 页面。

评论0

暂无评论

成为第一个分享想法的人。

参与讨论

请登录或注册后发表评论。

不错过任何文章

通过电子邮件接收我们最新的教程、指南和产品资讯。

您已订阅我们的电子通讯。