在 Windows 10 中使用 IP 转发设置 Wireguard 隧道

在 Windows 10 中使用 IP 转发设置 Wireguard 隧道

我想使用 IP 转发在 Windows 10 中设置 WireGuard。

我有一个 Windows 10 节点(“服务器”),它连接到两个 LAN(通过两个接口)。

  • LAN 1:10.0.0.0/24(公共、可路由,但出于隐私原因,此处声明为 RFC1918)
  • LAN 2:172.16.0.0/23

我想允许 LAN 1 中的其他节点访问 LAN 2。为此,我按如下方式设置了 WireGuard:

# Server config    
[Interface]
PrivateKey = ...
ListenPort = 55357
Address = 192.168.35.1/24

[Peer]
PublicKey = ...
PresharedKey = ...
AllowedIPs = 192.168.35.7/32

我的(Windows 10)测试客户端的配置文件是:

# Testing client config
[Interface]
PrivateKey = ...
ListenPort = 55357
Address = 192.168.35.7/24

[Peer]
PublicKey = ...
PresharedKey = ...
AllowedIPs = 192.168.35.1/32, 172.16.0.0/23
Endpoint = server.example.com:55357

当我启动隧道两端时,它们连接成功。我可以从两端 ping 隧道内部 IP 地址。

在客户端,AFAICS,route print 产生所需的路线:

[...]
Network Destination     Netmask      Gateway         Interface Metric
[...]
172.16.0.0        255.255.254.0      On-link      192.168.35.7      5
172.16.1.255    255.255.255.255      On-link      192.168.35.7    261
192.168.35.0      255.255.255.0      On-link      192.168.35.7    261
192.168.35.1    255.255.255.255      On-link      192.168.35.7      5
192.168.35.7    255.255.255.255      On-link      192.168.35.7    261
192.168.35.255  255.255.255.255      On-link      192.168.35.7    261
[...]

在服务器上,我按照这个 ServerFault 问题因此我的接口列表如下所示:

Get-NetIPInterface|select ifIndex,InterfaceAlias,AddressFamily,ConnectionState,Forwarding | Sort-Object -Property IfIndex | Format-Table

    ifIndex InterfaceAlias              AddressFamily ConnectionState Forwarding
------- --------------              ------------- --------------- ----------
      1 Loopback Pseudo-Interface 1          IPv6       Connected   Disabled
      1 Loopback Pseudo-Interface 1          IPv4       Connected   Disabled
      4 LAN 2                                IPv4       Connected    Enabled
     15 LAN 1                                IPv4       Connected   Disabled
     21 VPN_Adapter                          IPv6       Connected    Enabled
     21 VPN_Adapter                          IPv4       Connected    Enabled

设置转发后,我还可以从客户端成功 ping 通 LAN 2 中的服务器自己的地址,但无法访问 LAN 2 中的任何其他节点。

在服务器上,Windows 防火墙在 LAN 2 上启用,但在 LAN 1 上禁用(管理决定超出了我的职权范围)。

我还需要配置什么以便 LAN 1 中的节点可以通过隧道到达 LAN 2?

答案1

事实证明,在两个接口上启用转发需要使用

Set-NetIPInterface -ifindex <interface index> -Forwarding Enabled

上述文章足够了,因为我可以使用出色的 Wireshark 找到答案。我搞乱了 AllowedIPs 设置,导致一个方向的数据包被 WireGuard 丢弃。(子网 172.16.0.0/20 而不是 /23)

相关内容