返回

如何在 WSL 2 Ubuntu 中访问 Windows 的 localhost?

windows

在 WSL 2 Ubuntu 中访问 Windows 的 localhost

引言

在 Windows Subsystem for Linux(WSL)2 Ubuntu 中访问运行在 Windows 中的 localhost 并非难事,但需要一些额外的配置。本指南将逐步介绍如何实现这一目标。

步骤 1:启用 WSL 2 的 Internet 连接

确保 WSL 2 已启用 Internet 连接。使用以下命令检查:

wsl -l -v

如果输出显示 "localhost: 127.0.0.1",则已启用 Internet 连接。如果没有,请按照 Microsoft 文档中的说明进行启用。

步骤 2:使用 Bridged 网络适配器

WSL 2 默认使用 NAT 网络适配器,这会创建一个虚拟地址,导致无法访问 Windows 的 localhost。要解决这个问题,需要切换到 bridged 网络适配器,它使用与 Windows 相同的 IP 地址。

编辑 WSL 2 配置文件(位于 %USERPROFILE%\.wslconfig)并添加以下内容:

[wsl2]
networkAdapterName = "Ethernet"

重新启动 WSL 2 以应用更改。

步骤 3:使用 IP 地址连接

现在,WSL 2 与 Windows 共享相同的 IP 地址。在 Ubuntu 中使用以下命令连接到 Windows 的 localhost:

curl http://<Windows IP address>:4502

或:

ping <Windows IP address>

替换 <Windows IP address> 为 Windows 的实际 IP 地址。

步骤 4:使用域名连接(可选)

为了更方便地连接,可以将 Windows 的 localhost 映射到一个域名。在 Windows 的 hosts 文件(位于 C:\Windows\System32\drivers\etc\hosts)中添加以下行:

<Windows IP address> localhost

现在,可以在 Ubuntu 中使用以下命令访问 localhost:

curl http://localhost:4502

或:

ping localhost

注意事项

  • 确保 Windows 防火墙允许对端口 4502 的访问。
  • 如果无法连接到 localhost,请尝试重启 Windows 和 WSL 2。
  • 如果 Windows 的 localhost 正在使用 SSL 证书,需要在 Ubuntu 中安装相应的 CA 证书才能访问。

结论

按照这些步骤,就可以在 WSL 2 Ubuntu 中轻松访问运行在 Windows 中的 localhost。这种访问对于需要在 Linux 环境中使用 Windows 服务和应用程序至关重要。

常见问题解答

  1. 为什么我无法访问 localhost,即使我启用了 bridged 网络适配器?
  • 确保 Windows 防火墙已允许对端口 4502 的访问。
  • 尝试重启 Windows 和 WSL 2。
  1. 如何在 Ubuntu 中安装 Windows CA 证书?
  • 使用以下命令从 Windows 的证书存储中导出 CA 证书:
certmgr.msc
  • 将导出的证书文件复制到 Ubuntu 的 /usr/local/share/ca-certificates 目录。
  • 使用以下命令更新 CA 证书数据库:
sudo update-ca-certificates
  1. 是否可以将其他 Windows 服务映射到 Ubuntu 的不同端口?
  • 是的,可以在 Windows 的 hosts 文件中添加其他映射,将特定端口映射到 Windows 中的服务。
  1. 如何确保连接的安全性?
  • 使用 SSL 证书来加密 localhost 连接。
  • 限制对 localhost 访问的 IP 地址或用户名。
  1. 是否可以在 Ubuntu 中使用 Windows GUI 应用程序?
  • 不可以,WSL 2 仅支持命令行界面。