无法在 WSL 中通过 HTTPS 连接到服务器

无法在 WSL 中通过 HTTPS 连接到服务器

我正在尝试使用我们公司安装的调度程序的命令行工具,并决定将其安装在我的 WSL ubuntu 安装中。但是,我似乎无法连接到服务器...

curl "[server]" --verbose 
*  Trying [server:443]...
*TCP_NODELAY set
*connect to [server] port 443 failed: Connection timed out

我认为服务器的防火墙或我的 Windows 防火墙出现了问题...但以下情况除外:

  • 我可以在 Windows 中(在同一台机器上)从 CMD 运行完全相同的 curl 命令并连接
  • 我可以从 WSL 向任何常见的安全网站运行相同的 curl 命令(例如,https://google.com)并连接

我还认为这可能与证书有关,但似乎我没有进入连接的证书部分(再次说明,在 Windows 上运行良好,我在那里没有做任何特殊操作)。我还尝试了服务器的 IP,以防它与 DNS 有关。Ping 运行正常,我验证了端口 443 是正确的。

WSL 中是否有需要我单独处理的 Ubuntu 防火墙,它可能允许某些站点的流量而不允许其他站点的流量?其他类似的问题似乎与防火墙有关,ping 也不起作用和/或它们在 Windows 上与 WSL/Ubuntu 有相同的问题。

我使用的是 Windows 10(版本 1909)和 WSL 2(Ubuntu 20.04.3 LTS/focal)。我使用的是(企业)VPN。

答案1

我怀疑 VPN 无法扩展到 WSL2。这是一个常见问题。对于大多数人来说,全部流量通过 VPN 路由,这会导致全部当 VPN 处于活动状态时,WSL2 内部的网络会中断。

听起来就像内部的流量可能会通过您的 VPN 路由。我似乎记得这是 AnyConnect 的正常配置,可能也适用于其他一些配置。

如果对您有用,最简单的解决方案是运行 WSL1 实例。WSL1 在与 Windows 相同的 NIC 上运行,而 WSL2 则在 Windows 主机后面进行 NAT 的 vNIC 上运行。

当您需要使用此调度工具时,您可以始终运行 WSL1 实例,如果您在其他用例中需要它,则可以继续使用 WSL2。

要将现有的 WSL2 克隆到 WSL1,请创建要安装它的目录,然后:

wsl --export Ubuntu backup.tar
wsl --import Ubuntu_WSL1 <directoryName> backup.tar --version 1

您还需要使用 为新实例设置默认用户/etc/wsl.conf。请参阅这个答案(最好是方法 1)了解详情。

相关内容