You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将WSL中已连接的VPN网络暴露给Windows主机,实现Windows对VPN内设备的访问

如何将WSL中已连接的VPN网络暴露给Windows主机,实现Windows对VPN内设备的访问

嗨,很高兴能帮到你!根据你的场景,完全可以通过配置路由转发和IP规则,让Windows主机借助WSL的VPN连接访问内网设备,下面是具体的实操步骤:

一、先收集关键IP信息

首先得把几个核心IP搞清楚,后续配置都要用到:

  • 在WSL终端里执行 wsl hostname -I,拿到WSL在VPN侧的IP(比如假设是 10.10.10.20
  • 在Windows的管理员CMD里运行 ipconfig,找到「以太网适配器 vEthernet (WSL)」下的IP(这是Windows和WSL互通的虚拟网卡IP,比如 172.17.0.1
  • 在WSL里执行 ip route show,找到VPN内网的网段(比如你的设备都在 192.168.5.0/24 这个网段)

二、开启WSL的IP转发功能

WSL默认没开启IP转发,得先打开它,这样才能把Windows的流量转去VPN:

  • 临时生效(重启WSL后失效):
    sudo sysctl -w net.ipv4.ip_forward=1
    
  • 永久生效(重启WSL也不会丢):
    编辑 /etc/sysctl.conf 文件,找到 net.ipv4.ip_forward=1 这一行,去掉前面的注释符号 #,然后执行:
    sudo sysctl -p
    

三、在Windows上添加路由规则

这一步是告诉Windows:访问VPN内网的流量,都发给WSL来处理:
打开管理员权限的CMD,执行以下命令(把参数换成你自己的网段和IP):

route add 192.168.5.0 mask 255.255.255.0 172.17.0.2
  • 参数说明:
    • 192.168.5.0:你的VPN内网网段
    • 255.255.255.0:对应网段的子网掩码
    • 172.17.0.2:WSL的虚拟网卡IP(不是VPN侧的IP,是WSL和Windows互通的那个,在WSL里用 ip addr show eth0 可以查到)
  • 如果想让路由规则永久保存(重启Windows也生效),加上 -p 参数:
    route -p add 192.168.5.0 mask 255.255.255.0 172.17.0.2
    

四、配置WSL防火墙(如有需要)

如果你的WSL发行版启用了防火墙(比如Ubuntu的ufw),得允许Windows的流量转发到VPN网段:

sudo ufw allow from 172.17.0.0/16 to 192.168.5.0/24
sudo ufw reload

五、验证连接是否成功

在Windows主机上直接ping VPN内的设备IP,比如:

ping 192.168.5.10

如果能收到回复,说明配置成功了!此时你的Windows专有软件应该就能正常和VPN内的硬件通信了。

一些额外注意事项

  • WSL重启后,虚拟网卡IP可能会变化,这时候需要重新更新Windows的路由规则;如果想固定WSL的IP,可以修改WSL的网络配置(比如Ubuntu用netplan,编辑 /etc/netplan/00-installer-config.yaml 配置静态IP)
  • 可以在WSL里用 ip route show 确认VPN的路由表是否正确加载,确保WSL本身能正常访问内网设备
  • 若还是无法连接,检查vpnc的配置是否有特殊路由限制,或者Windows防火墙是否拦截了相关流量

备注:内容来源于stack exchange,提问作者Oliver

火山引擎 最新活动