从网络上的其他 Windows 计算机访问 \\wsl$\Ubuntu

从网络上的其他 Windows 计算机访问 \\wsl$\Ubuntu

我有一台 Windows 2022 Server,版本 23H2 / 22631,它在 WSL2 中运行 Ubuntu 22.04 发行版。

如果我在服务器上,我可以使用\\wsl$\UbuntuExplorer 中的路径访问此分发中的文件。

有没有办法从与服务器有网络连接的另一台计算机上的 Explorer 访问这些相同的文件?

我可以\\server\c$从这台网络机器顺利访问 eg。我希望我可以转到 eg\\server\wsl$\Ubuntu并获取服务器的 WSL 文件,但似乎不存在这样的事情。

我考虑在 Ubuntu 发行版上安装 Samba。但发行版的主机名与主机 2022 服务器相同,所以我不知道如何在不终止主机的 SMB 流量的情况下将 SMB 流量重定向到 WSL。

如果可能的话,我希望避免使用复制文件/同步/scp 之类的黑客手段。我知道这些,尽管它们不太方便。通过 Explorer 直接访问文件是理想的选择。

答案1

我还没有尝试过,但这里有一些信息可能可以实现。

WSL2 现在具有 镜像模式网络 这使得它像在 WSL1 中一样工作,没有 NAT,通过使用主机的网络适配器并假设主机的 IP。

镜像模式通过以下方式启用:

  • 创建文件%UserProfile%\.wslconfig(如果不存在)

  • 在文件中添加以下行:

    [wsl2]
    networkingMode=mirrored
    
  • 使用以下方法关闭 WSLwsl --shutdown

  • 启动 WSL 分发。

您仍需要在 Windows 防火墙中启用入站 SAMBA 端口。根据文档,用于启用所有传入端口或仅启用一个端口的提升的 PowerShell 命令:

在具有管理员权限的 PowerShell 窗口中运行以下命令来配置 Hyper-V 防火墙设置以允许入站连接:Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction AllowNew-NetFirewallHyperVRule -Name MyWebServer -DisplayName "My Web Server" -Direction Inbound -VMCreatorId "{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}" -Protocol TCP -LocalPorts 80

可能需要进行一些实验,但这可能足以使 WSL2 中的 samba 服务器可通过 LAN 访问。

答案2

默认情况下启用 c$ 共享位置。如果您有其他要共享的目录,则必须单独共享该位置。有几种方法可以做到这一点,但最简单的方法是使用 GUI,只需找到包含 Ubuntu 文件的文件夹目录并右键单击,选择属性,然后选择共享选项卡。

您描述的困难可能是这些文件的“位置”并不直观地位于您认为的位置。容器化可能会将这些目录可视化。

相关内容