在 AWS EC2 上使用 Wireguard 服务器设置 VPN。

2025-06-05

在 AWS EC2 上使用 Wireguard 服务器设置 VPN。

Github


要求

  • 提供虚拟机的云平台(例如 AWS、Azure、Google Cloud 等)上的帐户。
  • Ubuntu 20.04 服务器虚拟机。
  • 分配给您的 VM 的公共 IP 地址。
  • UDP 端口 51820 对来自所有来源的传入流量开放(0.0.0.0/0)。
  • 本教程中选择提升机器的地区是南美洲(巴西圣保罗)(sa-east-1),但请选择您喜欢的地区。

图片 01

图片 02

  • 标题:为在 AWS 上启动的实例配置端口 51820 UDP 的开放。
  • 标题:具有公共 IP 和端口 51820 UDP 开放的实例配置。

介绍

在本教程中,我们将在 AWS 上运行的 Ubuntu 20.04 实例上设置 WireGuard VPN 服务器。

WireGuard 是一种用户友好的 VPN 解决方案,它采用端到端加密,比 IPSEC 更高效,比 OpenVPN 更快。


1. 服务器 WireGuard 配置

步骤 1:在 AWS EC2 上启动实例

首先,我们需要在 AWS 上启动一个 Ubuntu 20.04 实例。

注意:该用法来自 Ubuntu 20.04,但也可以来自较新的版本。


第 2 步:安装 WireGuard

实例启动并运行后,我们可以使用终端中的以下命令继续安装 WireGuard:



$ sudo apt update


Enter fullscreen mode Exit fullscreen mode

接下来我们将安装 Wireguard 包:



$ sudo apt install wireguard


Enter fullscreen mode Exit fullscreen mode

图片 03

  • 标题:在 AWS 实例上运行 apt update 和 apt install wireguard 命令。

步骤 3:在 AWS 实例上配置 Wireguard 服务器

安装软件包后,我们现在需要在 AWS 实例上设置 WireGuard 服务器。

但是,我们需要创建用于生成 wireguard 文件的目录,运行以下命令:



$ sudo mkdir /etc/wireguard/


Enter fullscreen mode Exit fullscreen mode

太棒了!现在让我们为 Wireguard 服务器生成适当的私钥和公钥:



$ wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey


Enter fullscreen mode Exit fullscreen mode

为了更好地理解,Wireguard 隧道使用非对称加密系统(即双密钥加密系统)进行加密。您的私钥是唯一的,绝不会与 VPN 客户端共享,这与公钥不同,公钥会与 VPN 客户端共享。

现在我们需要创建和配置 Wireguard 接口文件,它将作为我们 VPN 中的网关。

创建并编辑文件 wg0.conf:



$ sudo nano /etc/wireguard/wg0.conf


Enter fullscreen mode Exit fullscreen mode
  • wg0 是 wg0 接口的配置文件。

输入以下设置:



[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = private_key
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE


Enter fullscreen mode Exit fullscreen mode

图片 04

  • 标题:在 wireguard 服务器上配置 wg0.conf 文件。

注意:上文中,“-o eth0”表示这是您机器的默认网络接口(也就是识别 AWS 传出网关的接口),也就是说,如果名称不同,请将其替换为相应的名称。要检查哪个接口是正确的,只需运行以下命令:



$ ip -c a


Enter fullscreen mode Exit fullscreen mode

您应该会看到类似这样的内容:


图片 05

  • 标题:检查机器的默认网络接口。

要继续,请将其替换为您之前生成的私钥。AllowedIPs 选项指定将通过 VPN 路由的 IP 地址范围。


步骤4:启动WireGuard服务
配置完成后,我们就可以启动WireGuard服务了:



$ sudo systemctl enable wg-quick@wg0
$ sudo systemctl start wg-quick@wg0


Enter fullscreen mode Exit fullscreen mode

步骤5:启用IP转发

为了允许流量通过 VPN,我们需要使用以下命令启用 IP 转发:



$ echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf


Enter fullscreen mode Exit fullscreen mode


$ sudo sysctl -p


Enter fullscreen mode Exit fullscreen mode

让我解释一下每个设置:

  • [Interface] 部分定义了服务器的网络信息,包括 WireGuard 服务器将使用的 wg0 接口的 IP 地址、网络 CIDR 块(10.0.0.0/24)以及服务器将监听传入连接的端口(51820)。
  • SaveConfig 选项设置为 true,以便系统重启后可以保存并保留设置。
  • PrivateKey 选项是 WireGuard 服务器的私钥,用于连接的身份验证和加密。务必妥善保管此密钥,切勿与任何人共享。
  • PostUp 和 PostDown 选项分别是在创建 wg0 接口后和删除该接口后执行的命令。这些命令添加和删除必要的防火墙规则,以允许流量通过 VPN 创建的隧道,并将流量重定向到虚拟机的出站接口。

现在我们来打开这个wg0接口,使用以下命令:



$ sudo wg-quick up wg0


Enter fullscreen mode Exit fullscreen mode

2.客户端WireGuard配置

  • 在客户端:

  • 运行以下命令:



$ sudo apt update


Enter fullscreen mode Exit fullscreen mode


$ sudo apt install wireguard


Enter fullscreen mode Exit fullscreen mode
  • 创建 wireguard 目录:


$ sudo mkdir /etc/wireguard/


Enter fullscreen mode Exit fullscreen mode
  • 生成客户端的私钥和公钥:


$ wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey


Enter fullscreen mode Exit fullscreen mode
  • 在客户端上创建并编辑wg0.conf文件:


$ sudo nano /etc/wireguard/wg0.conf


Enter fullscreen mode Exit fullscreen mode
  • 设置以下设置:


[Interface]
PrivateKey = privatekey_client
Address = 10.0.0.2/24

[Peer]
PublicKey = publickey_server
Endpoint = ipaddress_server:51820
AllowedIPs = 0.0.0.0/0


Enter fullscreen mode Exit fullscreen mode

图片 06

  • 标题:设置客户端 wireguard 文件。
  • 注意:这里的文件名为wg7,但也可以是wg0。

  • [Interface] 部分定义了客户端的网络信息,包括 Wireguard 客户端将使用的 wg0 接口的 IP 地址,即 10.0.0.2/24 以及客户端的私钥。
  • 在对等配置中,您应该通过在 PublicKey 字段中替换服务器的公钥来指向它。端点将是您的 WireGuard 服务器的公共 IP 地址以及配置的端口。最后,指定允许的网络,在本教程中设置为 0.0.0.0/0,这意味着您的所有流量都将通过 WireGuard 服务器路由。
  • 完成后,您现在必须将客户端的公钥添加到 wireguard 服务器,为此,请使用以下命令:


$ sudo wg set wg0 peer clientpublickey allowed-ips 10.0.0.2


Enter fullscreen mode Exit fullscreen mode
  • 现在将 wireguard 隧道作为客户端启动:


$ sudo wg-quick up wg0


Enter fullscreen mode Exit fullscreen mode

图片 07

  • 标题:在客户端上提升 wireguard 隧道。

3. 测试

  • 要进行一些初步测试,您应该:

  • ping 到 wireguard 网关服务器:

  • 在客户端:



$ ping 10.0.0.1


Enter fullscreen mode Exit fullscreen mode

图片 08

  • 标题:对网关(服务器 IP 地址)运行 ping 测试。

图片 09

  • 您的 IP 地址应该与您的 AWS 机器的公共 IPv4 相同(由于我选择机器的区域在圣保罗,所以它从那里获取地址)。

4.参考文献

文章来源:https://dev.to/gabrieltetzner/setting-up-a-vpn-with-wireguard-server-on-aws-ec2-4a49
PREV
创建一个投资组合来为你寻找客户
NEXT
保护 Semper os Contornos CSS:Uma Abordagem Essencial