Pet*_*nks 9 networking localhost windows-subsystem-for-linux wsl2
我有一个在 Windows 上的本地主机 (127.0.0.1) 端口 8545 上运行的应用程序。我的目标是能够从 WSL2 内与该应用程序进行通信。但是,每当我尝试从 WSL2 内访问该地址时,都会出现连接超时。
\n以下是我尝试过的总结:
\n根据此处的\n答案禁用了 WSL 的 Windows Defender 防火墙:
\n\n通过在 WSL\n终端中运行此命令(返回 172.22.144.1)找到我的主机\xe2\x80\x99s(Windows)本地 IP:
\necho $(ip 路由列表默认 | awk \'{print $3}\')
\n使用以下命令从 WSL 终端 ping 正在运行的 Windows 应用程序:
\n数控-zv 172.22.144.1 8545
\n第 3 步之后,有一段时间没有任何反应,然后我收到连接超时错误。
\n从 Windows powershell,我能够成功 ping 相同的应用程序,如下所示:
\nTest-NetConnection 127.0.0.1 -p 8545\n
Run Code Online (Sandbox Code Playgroud)\n有谁知道解决方案是什么?我需要做什么才能允许 WSL2 与 Windows 本地主机通信?我使用的是 Windows 10 家庭版和 WSL2。
\nlocalhost / 127.0.0.1 / ::1网络很特殊。每台计算机都有自己的localhost。您无法通过网络连接到其他计算机\xe2\x80\x99 localhost 。
\n虚拟机(如 WSL 2)被视为不同的计算机。还有\xe2\x80\x99s 还有网络命名空间,它们也像关于此主题的不同计算机一样工作。
\n如果您想从 WSL 2 访问在 Windows 上运行的服务,则不得让它绑定到localhost。\xe2\x80\x9cnext best\xe2\x80\x9d 绑定到 WSL 的 Hyper-V 虚拟网络适配器,但其 IP 地址是动态的。您还可以绑定到0.0.0.0 / ::,但这使您的服务在所有接口上可用(防火墙规则仍然适用)。
\n从 WSL 2 开始,您可以使用$(hostname).local
(或您已经找到的获取主机 IP 的任何其他方法)进行连接。
当尝试从 Windows 连接到 WSL 2 中运行的服务时,有一个特殊的例外(反之亦然):Microsoft 已经实现了一种软件解决方案,使 WSL 2本地主机侦听器可以从 Windows(也在localhost上)使用。这是相对不可靠的。
\n 归档时间: |
|
查看次数: |
15299 次 |
最近记录: |