从 Windows 10 主机访问 WSL2 内部的 wireguard IP

从 Windows 10 主机访问 WSL2 内部的 wireguard IP

因此,我在 Windows 10 机器上的 WSL2 中运行了这个 Ubuntu 20.04 实例。在这个 Ubuntu 实例中,我安装并配置了 VPN 程序 Wireguard。

Wireguard 现在已经创建了设备wg0,该设备已成功连接到服务器,并且现在具有 IP 10.0.0.65

我如何才能ping 10.0.0.65从我的 Windows 10 机器上成功?

这是我的输出wg0.conf

root@DESKTOP-8KN2S3S:/# cat /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.65/8
SaveConfig = false
PostUp = iptables -I INPUT -i wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D INPUT -i wg0 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = 1234567890XXXXXXXX=


[Peer]
#VPN Server
PublicKey = 1234567890XXXXXXXX=
AllowedIPs = 10.0.0.0/8
PersistentKeepalive = 25
Endpoint = 1.1.1.1:51820

以下是输出netsh interface ipv4 show subinterface

------  ---------------  ---------  ---------  -------------
4294967295                1          0     355280  Loopback Pseudo-Interface 1
  1420                1    3591066     882662  Work
  1500                1  1706422282   25253612  Wi-Fi
  1500                5          0          0  Ethernet
  1500                5          0          0  Local Area Connection* 1
  1500                5          0          0  Local Area Connection* 10
  1500                1          0     800283  VirtualBox Host-Only Network
  1500                5          0          0  Bluetooth Network Connection 2
  1500                1   10614784     610167  vEthernet (WSL)

答案1

计算机网络可能是一个复杂的系统。

在 WSL 机器上你可以运行

ip addr

这将列出您的 wsl 机器上的虚拟网络接口 (NIC)。很可能是您的 inet 地址eth0接口是 WSL 默认使用的。

在 Windows 上,您可以从 cmd/powershell cli ping 此 ip 地址。您还可以在以下位置验证 2 个不同内核 (windows / linux) 之间关联的网络桥接:

ipconfig

输出:

Ethernet adapter vEthernet (WSL):
    IPv4 Address <some value>

现在您已经设置了 wireguard 接口,只要有到它的路由,您就应该能够 ping 它。

默认情况下,所有数据包都通过默认网关发送,该网关是连接到您的 PC 或 WiFi 接口的物理以太网线。

要访问WG0通过 ping 接口,您必须添加一个静止的路由到 Windows 路由表中的网络。您可以通过路线命令

route print

向 Windows 路由表添加静态路由您可以使用以下语法:如何在windows中添加静态路由

route ADD destination_network MASK subnet_mask gateway_ip metric_cost

例如:

route add 172.16.121.0  mask 255.255.255.0 10.231.3.1

使用您的 wireguard 接口网络和掩码填充目标网络;其余部分使用 vEthernet (WSL) 接口信息。然后就大功告成了!

现在您的 ping 应该可以正常工作了。

笔记:这会将数据包重定向到您的 WSL 机器。假设您有从 WSL 机器到 wg0 接口的路由。

如果你想通过 wireguard 隧道传输数据包……你必须遵循上述所有步骤,并且配置 wireguard 客户端在您的 Windows 机器上。

相关内容