如何在 Debian 10 上设置 WireGuard VPN

2022年 10月 12日 60.0k 0

在 Debian 10 上安装 WireGuard

WireGuard 是一种通用 VPN(虚拟专用网络),它利用了最先进的加密技术。与 IPsec 和OpenVPN等其他流行的 VPN 解决方案相比 ,WireGuard 通常更快、更易于配置并且占用空间更小。它是跨平台的,几乎可以在任何地方运行,包括 Linux、Windows、Android 和 macOS。

Wireguard 是一种点对点 VPN;它不使用客户端-服务器模型。根据配置,对等点可以充当传统的服务器或客户端。它通过在充当隧道的每个对等设备上创建网络接口来工作。对等点通过交换和验证公钥来相互验证,模仿 SSH 模型。公钥与隧道中允许的 IP 地址列表进行映射。VPN 流量封装在 UDP 中。

本文介绍了如何在 Debian 10 上安装和配置充当 VPN 服务器的 WireGuard。我们还将向您展示如何将 WireGuard 配置为 Linux、Windows 和 macOS 上的客户端。客户端的流量将通过 Debian 10 服务器进行路由。

此设置可用于防止中间人攻击、匿名上网、绕过受地理限制的内容,或允许在家工作的同事安全地连接到公司网络。

先决条件

要遵循本指南,您需要一台安装了 Debian 10 的机器。您还需要 root 或 [sudo 访问权限](https://linuxize.com/post/how-to-create-a-sudo-user-on-debian/ 来安装软件包并对系统进行更改。

设置 WireGuard 服务器

我们将首先在 Debian 机器上安装 WireGuard 软件包并将其设置为充当服务器。我们还将配置系统以通过它路由客户端的流量。

在 Debian 10 上安装 WireGuard

WireGuard 可从 Debian backports 存储库获得。要将存储库添加到您的系统,请运行:

echo 'deb http://ftp.debian.org/debian buster-backports main' | sudo tee /etc/apt/sources.list.d/buster-backports.list

启用存储库后,更新 apt 缓存并安装 WireGuard 模块和工具:

sudo apt updatesudo apt install wireguard

WireGuard 作为内核模块运行。

配置 WireGuard

wg您可以使用和wg-quick命令行工具配置和管理 WireGuard 接口。WireGuard VPN 网络中的每个设备都需要有一个私钥和公钥。运行以下命令生成密钥对:

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

文件在/etc/wireguard目录中生成。使用cat 或less 命令查看文件的内容。私钥不应与任何人共享,并且应始终保持安全。

Wireguard 还支持预共享密钥,它增加了额外的对称密钥加密层。此密钥是可选的,并且对于每个对等点对必须是唯一的。

下一步是配置将路由 VPN 流量的隧道设备。

ip 可以使用and命令从命令行设置设备,也可以wg通过手动创建配置文件来设置设备。我们将使用文本编辑器创建配置。

打开你的编辑器并创建一个新文件,命名wg0.conf为以下内​​容:

sudo nano /etc/wireguard/wg0.conf

/etc/wireguard/wg0.conf

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

您可以为界面命名任何您想要的名称。但是,建议使用类似wg0or的东西wgvpn0。界面部分的设置含义如下:

  • 地址 - 以逗号分隔的wg0接口的 v4 或 v6 IP 地址列表。您可以从为专用网络(10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16)保留的范围内获取 IP 地址。
  • ListenPort - 监听端口。
  • wg genkeyPrivateKey - 由命令生成的私钥。(要查看文件类型的内容sudo cat /etc/wireguard/privatekey:)
  • SaveConfig - 设置为 true 时,接口的当前状态会在关机时保存到配置文件中。
  • PostUp - 在启动界面之前执行的命令或脚本。在这个例子中,我们使用 iptables 来启用伪装。这允许流量离开服务器,让 VPN 客户端访问 Internet。确保替换ens3after-A POSTROUTING以匹配您的公共网络接口的名称。您可以通过以下方式轻松找到接口:
    ip -o -4 route show to default | awk '{print $5}'
  • PostDown - 在关闭接口之前执行的命令或脚本。一旦接口关闭,iptables 规则将被删除。

和文件wg0.confprivatekey应该对普通用户可读。用于chmod 将文件权限设置为600

sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}

完成后,wg0使用配置文件中指定的属性启动界面:

sudo wg-quick up wg0

输出将如下所示:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

要检查接口状态和配置,请运行:

sudo wg show wg0
interface: wg0
public key: +Vpyku+gjVJuXGR/OXXt6cmBKPdc06Qnm3hpRhMBtxs=
private key: (hidden)
listening port: 51820

您还可以使用以下方法验证接口状态ip a show wg0

ip a show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none 
inet 10.0.0.1/24 scope global wg0
valid_lft forever preferred_lft forever

WireGuard 可以使用 Systemd 进行管理。要在引导时引入 WireGuard 界面,请运行以下命令:

sudo systemctl enable wg-quick@wg0

服务器网络和防火墙配置

必须启用 IP 转发才能使 NAT 正常工作。打开/etc/sysctl.conf文件并添加或取消注释以下行:

sudo nano /etc/sysctl.conf

/etc/sysctl.conf

net.ipv4.ip_forward=1

保存文件并应用更改:

sudo sysctl -p
net.ipv4.ip_forward = 1

如果您使用 UFW 管理防火墙,则 需要在端口上打开 UDP 流量51820

sudo ufw allow 51820/udp

而已。将充当服务器的 Debian 对等体已设置完毕。

Linux 和 macOS 客户端设置

所有受支持平台的安装说明可在https://wireguard.com/install/获得 。在 Linux 系统上,您可以使用分发包管理器安装包,在 macOS 上使用brew.

安装后,请按照以下步骤配置客户端设备。设置 Linux 和 macOS 客户端的过程与设置服务器的过程几乎相同。首先,生成公钥和私钥:

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

创建文件wg0.conf并添加以下内容:

sudo nano /etc/wireguard/wg0.conf

/etc/wireguard/wg0.conf

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

界面部分中的设置与设置服务器时的含义相同:

  • 地址 - 以逗号分隔的wg0接口的 v4 或 v6 IP 地址列表。
  • PrivateKey - 要查看客户端计算机上文件的内容,请运行:sudo cat /etc/wireguard/privatekey

对等部分包含以下字段:

  • PublicKey - 您要连接的对等方的公钥。(服务器/etc/wireguard/publickey文件的内容)。
  • 端点 - 您要连接的对等方的 IP 或主机名,后跟冒号,然后是远程对等方侦听的端口号。
  • AllowedIPs - 以逗号分隔的 v4 或 v6 IP 地址列表,允许对等方的传入流量以及此对等方的传出流量指向。我们使用 0.0.0.0/0 是因为我们正在路由流量并希望服务器对等方发送具有任何源 IP 的数据包。

如果您需要配置其他客户端,只需使用不同的私有 IP 地址重复相同的步骤。

Windows 客户端设置

从WireGuard 网站下载并安装 Windows msi 包 。安装后,打开 WireGuard 应用程序并单击“添加隧道”->“添加空隧道...”,如下图所示:
WireGuard Windows 添加隧道

公钥对会自动创建并显示在屏幕上。

WireGuard Windows 隧道

输入隧道的名称并编辑配置,如下所示:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

在接口部分,添加一个新行来定义客户端隧道地址。在 peer 部分,添加以下字段:

  • PublicKey - Debian 服务器的公钥(/etc/wireguard/publickey文件)。
  • Endpoint - Debian 服务器的 IP 地址,后跟冒号和 WireGuard 端口 (51820)。
  • AllowedIPs - 0.0.0.0/0

完成后,单击“保存”按钮。

将客户端对等体添加到服务器

最后一步是将客户端的公钥和 IP 地址添加到服务器。为此,请在 Debian 服务器上运行以下命令:

sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2

确保CLIENT_PUBLIC_KEY使用您在客户端计算机上生成的公钥 ( sudo cat /etc/wireguard/publickey) 进行更改,如果不同,请调整客户端 IP 地址。

Windows 用户可以从 WireGuard 应用程序中复制公钥。完成后,返回客户端计算机并打开隧道接口。

Linux 和 macOS 客户端

运行以下命令调出界面:

sudo wg-quick up wg0

现在您应该连接到 Debian 服务器,并且来自您的客户端计算机的流量应该通过它进行路由。您可以通过以下方式检查连接:

sudo wg
interface: wg0
public key: gFeK6A16ncnT1FG6fJhOCMPMeY4hZa97cZCNWis7cSo=
private key: (hidden)
listening port: 53527
fwmark: 0xca6c
peer: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
endpoint: XXX.XXX.XXX.XXX:51820
allowed ips: 0.0.0.0/0
latest handshake: 53 seconds ago
transfer: 3.23 KiB received, 3.50 KiB sent

您也可以打开浏览器,输入“我的 ip 是什么”,您应该会看到您的 Debian 服务器 IP 地址。要停止隧道,请关闭wg0接口:

sudo wg-quick down wg0

Windows 客户端

如果您在 Windows 上安装了 WireGuard,请单击“激活”按钮。一旦对等体连接,隧道状态将变为活动:

WireGuard Windows 连接隧道

结论

我们已经向您展示了如何在 Debian 10 上安装 WireGuard 并将其配置为 VPN 服务器。此设置允许您通过将流量数据保密来匿名上网。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论