WireGuard:如何从服务器向客户端推送路由和 dhcp 选项?

inq*_*One 12 vpn openvpn wireguard

WireGuard 是否支持 VPN 服务器向其客户端推送路由和 DHCP 选项的方式,就像 OpenVPN 所做的那样:

push "route 10.0.2.0 255.255.255.0 " 

push "dhcp-option DNS 10.66.0.4"
Run Code Online (Sandbox Code Playgroud)

我有 100 多个客户端,它们动态地设置了与 VPN 服务器的 VPN 连接,我希望在它们连接到 VPN 服务器时安装这些路由和选项。

小智 7

路由甚至拆分隧道是通过Allowed IPs在客户端配置中设置参数来完成的!

客户端配置

[Interface]
# client001 #
PrivateKey = <private key of client>
Address = 100.64.0.100/32
DNS = 100.64.0.1

[Peer]
PublicKey = <public key of server>
PresharedKey = <preshared key for client>
AllowedIPs = 100.64.0.0/10, 192.168.178.0/24
Endpoint = <your-ip-or-fqdn.to.connect>:<port>
PersistentKeepalive = 25
Run Code Online (Sandbox Code Playgroud)

服务器配置

[Interface]
Address = 100.64.0.1/10
SaveConfig = true
ListenPort = 51820
PrivateKey = <private key of server>

[Peer]
PublicKey = <public key of client>
PresharedKey = <preshared key for client>
AllowedIPs = 100.64.0.100/32
Run Code Online (Sandbox Code Playgroud)

在这种情况下,客户端的配置会在客户端上AllowedIPs = 100.64.0.0/10, 192.168.178.0/24设置路由,以将 100.64.0.0/10 和 192.168.178.0/24 的所有内容发送到 wireguard 隧道,但没有其他内容。(在 WireGuard 服务器上也激活了 IP 转发和伪装。)

DNS = 100.64.0.1参数告诉客户端使用100.64.0.1(在我的例子中是 WireGuard 服务器)作为 DNS 服务器。即使 DNS 在 WireGuard-Server 本身上,互联网流量仍然直接路由,只有 DNS 由我的自定义 DNS 完成。

  • 但正如我所提到的,我有 100 多个客户端动态设置与 VPN 服务器的 VPN 连接,我希望在客户端连接到 VPN 服务器时推送/安装这些路由和选项。我不想去每个客户端并手动设置其 AllowedIP。 (5认同)

小智 6

对于当前版本,这是不可能的。IPSec 和 OpenVPN 有数千行代码来处理路由策略(至少是 IPSec)以及 IP 地址的配置。Wireguard 预计这些是硬编码的,至少在这个时间点,在每个文件中。

请注意,拥有点对点接口比 OpenVPN 的多种桥接模式更好,但无法在内核模块内部配置接口。IE。没有第 2 层代码。有点遗憾,因为其余的都很好很干净。