8.17. 使用 wg-quick 服务配置 WireGuard 客户端
您可以通过在 /etc/wireguard/ 目录中创建配置文件来配置 WireGuard 客户端。使用此方法独立于 NetworkManager 配置服务。
此流程假设以下设置:
Client:
-
Private key:
aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A= -
隧道 IPv4 地址:
192.0.2.2/24 -
频道 IPv6 地址:
2001:db8:1::2/32
-
Private key:
server:
-
公钥:
UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE= -
隧道 IPv4 地址:
192.0.2.1/24 -
频道 IPv6 地址:
2001:db8:1::1/32
-
公钥:
先决条件
- 您已为服务器和客户端生成了公钥和私钥。
您知道以下信息:
- 客户端的私钥
- 客户端的静态隧道 IP 地址和子网掩码
- 服务器的公钥
- 服务器的静态隧道 IP 地址和子网掩码
流程
安装
wireguard-tools软件包:dnf install wireguard-tools
# dnf install wireguard-toolsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建
/etc/wireguard/wg0.conf文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [Interface]部分描述了客户端上接口的 WireGuard 设置:-
Address:逗号分隔的客户端隧道 IP 地址的列表。 -
PrivateKey:客户端的私钥。
-
[Peer]部分描述了服务器的设置:-
PublicKey:服务器的公钥。 AllowedIPs:允许向此客户端发送数据的 IP 地址。例如,将参数设置为:- 服务器隧道 IP 地址,以仅允许服务器与此客户端通信。上例中的值可配置这种情况。
-
0.0.0.0/0, ::/0允许任何远程 IPv4 和 IPv6 地址与此客户端进行通信。使用此设置通过隧道路由所有流量,并使用 WireGuard 服务器作为默认网关。
-
Endpoint:设置服务器的主机名或 IP 地址以及端口。客户端使用此信息来建立连接。 -
可选的
persistent-keepalive参数定义 WireGuard 将 keepalive 数据包发送给服务器的间隔(以秒为单位)。如果您在网络中使用具有网络地址转换(NAT)的客户端,或者防火墙在一段时间不活跃后关闭 UDP 连接,则设置此参数。
-
启用并启动 WireGuard 连接:
systemctl enable --now wg-quick@wg0
# systemctl enable --now wg-quick@wg0Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd 实例名称必须与
/etc/wireguard/目录中不带.conf后缀的配置文件的名称匹配。该服务还会将这个名称用于虚拟网络接口。- 如果您在带有 DHCP 或无状态地址自动配置(SLAAC)的网络中使用此主机,则连接可能会受到重定向的影响。有关详情和缓解步骤,请参阅将 VPN 连接分配给专用路由表,以防止连接绕过隧道。
验证
Ping 服务器的 IP 地址:
ping 192.0.2.1 ping6 2001:db8:1::1
# ping 192.0.2.1 # ping6 2001:db8:1::1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示
wg0设备的接口配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在输出中显示私钥,请使用
WG_HIDE_KEYS=never wg show wg0命令。请注意,如果已经通过 VPN 隧道发送流量,输出只会包含
latest handshake和transfer条目。显示
wg0设备的 IP 配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow