跳到内容

如何在Ubuntu上设置自己的WireGuard VPN服务器

更新时间
连续6年不跑路的安全速度最适合国人VPN
连续6年不跑路的安全速度最适合国人VPN

本教程将向您展示如何在Ubuntu上设置自己的WireGuard VPN服务器。WireGuard专为Linux内核而设计,能够在Linux内核内部运行,允许您创建快速、现代且安全的VPN隧道。

WireGuard VPN的特点

  • 轻量级和超高速:WireGuard的速度远超OpenVPN。
  • 跨平台支持:WireGuard可以在Linux、BSD、macOS、Windows、Android、iOS和OpenWRT上运行。
  • 用户身份验证:通过交换公钥进行身份验证,类似于SSH密钥。
  • 静态隧道IP地址:为VPN客户端分配静态隧道IP地址,这在某些情况下非常有用。
  • 无缝切换:移动设备可以在Wi-Fi和移动网络之间无缝切换,而不会中断连接。
  • 替代方案:旨在替代大多数用例中的OpenVPN和IPSec。
  • 简化TLS加密:WireGuard是我选择的VPN协议,消除了为私有网络设置TLS加密的需求。

基本要求

要遵循本教程,您需要一个可以自由访问被阻止网站的VPS(虚拟专用服务器)(位于您的国家或互联网过滤系统之外)。我推荐使用Kamatera VPS,其特点包括:

  • 30天免费试用。
  • 价格从$4/月起(1GB RAM)。
  • 高性能的KVM基础VPS。
  • 在全球拥有9个数据中心,包括美国、加拿大、英国、德国、荷兰、香港和以色列。

请按照以下链接的教程创建您的Linux VPS服务器: 如何在Kamatera上创建Linux VPS服务器

设置步骤

一旦您有了运行Ubuntu的VPS,请按照以下说明进行操作。本教程假设VPN服务器和VPN客户端都在运行Ubuntu操作系统。

第1步:在Ubuntu服务器和桌面上安装WireGuard

登录到您的Ubuntu服务器,然后运行以下命令以安装WireGuard。

Ubuntu 24.04/22.04/20.04

这些版本的Ubuntu自带内置的WireGuard模块,只需运行以下命令:

bash sudo apt update sudo apt install wireguard wireguard-tools

Ubuntu 18.04

对于Ubuntu 18.04,您需要先安装硬件启用内核(HWE),这将安装内核5.4:

bash sudo apt update sudo apt install linux-generic-hwe-18.04-edge

重启您的Ubuntu 18.04服务器并安装WireGuard:

bash sudo shutdown -r now sudo apt install wireguard wireguard-tools wireguard-dkms

在客户端上安装WireGuard

在本地Ubuntu计算机(VPN客户端)上使用相同的命令安装WireGuard。请注意,您还需要在客户端上安装openresolv软件包以配置DNS服务器:

bash sudo apt install openresolv

第2步:生成公/私钥对

服务器

在Ubuntu服务器上运行以下命令以创建公/私钥对,密钥将保存在/etc/wireguard/目录下:

bash wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

客户端

在本地Ubuntu计算机(VPN客户端)上运行以下命令以创建公/私钥对:

bash wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key

第3步:创建WireGuard配置文件

服务器

使用命令行文本编辑器(如Nano)在Ubuntu服务器上创建WireGuard配置文件。wg0将是网络接口名称:

bash sudo nano /etc/wireguard/wg0.conf

将以下文本复制并粘贴到配置文件中。您需要使用自己的服务器私钥和客户端公钥:

``` [Interface] Address = 10.10.10.1/24 ListenPort = 51820 PrivateKey = cD+ZjXiVIX+0iSX1PNijl4a+88lCbDgw7kO78oXXLEc=

[Peer] PublicKey = AYQJf6HbkQ0X0Xyt+cTMTuJe3RFwbuCMF46LKgTwzz4= AllowedIPs = 10.10.10.2/32 ```

  • Address:指定VPN服务器的私有IP地址。这里我使用的是10.10.10.0/24网络范围,以避免与家庭网络范围冲突。
  • PrivateKey:VPN服务器的私钥,可以在/etc/wireguard/server_private.key文件中找到。
  • ListenPort:WireGuard VPN服务器将监听UDP 51820端口,这是默认端口。
  • PublicKey:VPN客户端的公钥,可以在/etc/wireguard/client_public.key文件中找到。
  • AllowedIPs:VPN客户端被允许使用的IP地址。在此示例中,客户端只能在VPN隧道内使用10.10.10.2 IP地址。

保存并关闭文件(在Nano文本编辑器中,按Ctrl + O,然后按Enter确认,按Ctrl + X退出)。

更改文件权限模式,使只有root用户可以读取文件:

bash sudo chmod 600 /etc/wireguard/ -R

客户端

在本地Ubuntu计算机上使用命令行文本编辑器(如Nano)创建WireGuard配置文件。wg-client0将是网络接口名称:

bash sudo nano /etc/wireguard/wg-client0.conf

将以下文本复制并粘贴到配置文件中。您需要使用自己的客户端私钥和服务器公钥:

``` [Interface] Address = 10.10.10.2/24 DNS = 10.10.10.1 PrivateKey = cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=

[Peer] PublicKey = RaoAdsIEIwgV9DHNSubxWVG+nZ1GP/c3OU6A/efBJ0I= AllowedIPs = 0.0.0.0/0 Endpoint = 12.34.56.78:51820 PersistentKeepalive = 25 ```

  • Address:指定VPN客户端的私有IP地址。
  • DNS:指定10.10.10.1(VPN服务器)作为DNS服务器。
  • PrivateKey:客户端的私钥,可以在/etc/wireguard/client_private.key文件中找到。
  • PublicKey:服务器的公钥,可以在/etc/wireguard/server_public.key文件中找到。
  • AllowedIPs:0.0.0.0/0代表整个互联网,意味着所有流量都应通过VPN路由。
  • Endpoint:VPN服务器的公共IP地址和端口号。将12.34.56.78替换为您的服务器的实际公共IP地址。
  • PersistentKeepalive:每25秒向对等体发送一个经过身份验证的空数据包,以保持连接活跃。

保存并关闭文件。

更改文件模式,使只有root用户可以读取文件:

bash sudo chmod 600 /etc/wireguard/ -R

第4步:在服务器上启用IP转发

为了使VPN服务器能够在VPN客户端和互联网之间路由数据包,我们需要启用IP转发。编辑sysctl.conf文件:

bash sudo nano /etc/sysctl.conf

在文件末尾添加以下行:

net.ipv4.ip_forward = 1

保存并关闭文件。然后使用以下命令应用更改。-p选项将从/etc/sysctl.conf文件加载sysctl设置。此命令将保留我们的更改以便在系统重启后生效:

bash sudo sysctl -p

第5步:在服务器上配置IP伪装

我们需要在服务器防火墙中设置IP伪装,以便服务器成为VPN客户端的虚拟路由器。我将使用UFW,这是iptables防火墙的前端。使用以下命令在Ubuntu上安装UFW:

bash sudo apt install ufw

首先,您需要允许SSH流量:

bash sudo ufw allow 22/tcp

接下来,找出您服务器的主要网络接口名称:

bash ip -c a

在我的Ubuntu服务器上,它的名称是enp3s0

编辑UFW的规则文件:

bash sudo nano /etc/ufw/before.rules

默认情况下,过滤器表中有一些规则。在该文件末尾添加以下行。将enp3s0替换为您自己的网络接口名称:

```

*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.10.10.0/24 -o enp3s0 -j MASQUERADE

COMMIT ```

在Nano文本编辑器中,您可以通过按Ctrl + W,然后按Ctrl + V跳转到文件末尾。

上述行将在nat表的POSTROUTING链的末尾附加(-A)一个规则。它将把您的虚拟路由器连接到互联网。

总结

通过以上步骤,您已经成功在Ubuntu上设置了WireGuard VPN服务器。您现在可以通过VPN安全地浏览互联网,保护您的隐私和数据安全。如果您有任何问题或需要进一步的帮助,请随时与我们联系!

更新时间