因此,我在 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 机器上。