从WSL2内部访问Windows中运行的本地主机?

时间:2020-11-10 05:01:06

标签: windows aem windows-subsystem-for-linux portforwarding wsl-2

我正在 Windows计算机中运行本地 AEM服务器。服务器正在 localhost:4502 上运行。我正在使用在WSL2中运行的Ubuntu发行版进行开发。我想访问在 WSL2 Ubuntu 的Windows计算机中运行的localhost:4502。

有什么方法可以做到吗?

4 个答案:

答案 0 :(得分:0)

我也在寻找一些解决方案来做到这一点,但目前没有这样的选项可用。查看此 GitHub 问题:

https://github.com/microsoft/WSL/issues/4619

一种解决方案是:

如果您拥有 windows(host) 的 IP,那么它将完成这项工作,但唯一的问题是 IP 每次都会更改。但是,WSL2 将您的 Windows(主机)IP 存储在 /etc/resolv.conf 文件中。因此,我们可以修改我们的 etc/hosts 以将 winhost 动态映射到 IP。

~/.bashrc 文件的末尾添加以下几行。这将在您启动 WSL 时 grep IP 并修改 etc/hosts

export winhost=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
if [ ! -n "$(grep -P "[[:space:]]winhost" /etc/hosts)" ]; then
        printf "%s\t%s\n" "$winhost" "winhost" | sudo tee -a "/etc/hosts"
fi

然后运行以下命令以重新加载更改。

$ source ~/.bashrc

现在您可以在 WSL2(client) 中使用 winhost 而不是 localhost 来访问运行 windows(host) 的服务器。在您的情况下,它将是 winhost:4502 但这适用于任何其他用例以及访问在 Windows 等上运行的 Postgres/MySQL 服务器

注意:请始终记住在 Windows 上配置防火墙以允许这些端口,以便 WSL2 可以访问,否则您的连接可能会被防火墙阻止。

答案 1 :(得分:-1)

这确实属于另一个论坛,但是我怀疑您可以这样做。

  1. 步骤1.在实际IP地址(或所有地址)上运行AEM服务器,而不是仅绑定到本地主机。

  2. 第2步。您的Ubuntu WSL客户端实例不会与主机共享本地主机,但会共享您的计算机实际具有的本地IP地址(例如10.0.0.2)。只需让您的客户端连接到该IP地址而不是本地主机即可。

  3. 我对AEM一无所知,但是如果将其暴露在更大的网络中,则可能需要保护它。阻止上游防火墙上的端口4502或使用Windows防火墙规则仅允许从您自己的IP地址在端口4502上传入。这肯定是可能的。

答案 2 :(得分:-1)

Windows 10 将 localhost 视为 ::1 Ubuntu 认为 localhost 为 127.0.0.1

所以解决方案是创建一个映射

在 C:\Users.wslconfig

中创建一个名为 .wslconfig 的文件

添加以下内容。

[wsl2]
localhostForwarding=true

PS:我不知道它是否搞砸了其他任何事情,但它帮助我运行了升级到 wsl2 后损坏的 django 服务器

答案 3 :(得分:-2)

这很简单,你只需要做两件事。在主机文件中将 ip 地址设置为 localhost 并允许 Windows 防火墙允许传入连接。 以下是分步说明:

  1. 获取IP地址,打开cmd输入ipconfig /all,记下IP地址172.22.16.1 image
  2. 以管理员身份打开记事本,文件->打开,浏览到 C:\Windows\System32\drivers\etc\hosts ,添加行172.22.16.1 localhost,保存并关闭。
  3. 最后一个选项是允许防火墙规则接受公共连接,为此打开 control panel > System and Security > Windows Defender Firewall > Advanced Settings > Inbound Rules > 'New规则`
  4. 规则类型:选择Port,点击下一步
  5. 协议和端口:输入*特定本地端口:4502,点击下一步
  6. 操作:允许连接,点击下一步
  7. 个人资料:勾选Public,点击下一步
  8. 名称:输入 AEM server,点击完成
  9. 关闭其他窗口,再次打开 cmd ,输入 wsl --shutdown 关闭 ubuntu 子系统。
  10. 再次打开 ubuntu。
  11. 在命令提示符中测试连接类型 curl localhost:4502。如果它返回一些东西,则意味着您可以开始使用了。