從網路上的另一台 Windows 電腦存取 \\wsl$\Ubuntu

從網路上的另一台 Windows 電腦存取 \\wsl$\Ubuntu

我有一個 Windows 2022 Server,內部版本 23H2 / 22631,它在 WSL2 中執行 Ubuntu 22.04 發行版。

如果我在伺服器本身上,我可以使用\\wsl$\Ubuntu資源管理器中的路徑存取此發行版中的檔案。

有沒有辦法在與伺服器有網路連線的另一台電腦上從資源管理器存取這些相同的檔案?

\\server\c$我可以從這台網路機器很好地訪問例如。我希望我可以訪問例如\\server\wsl$\Ubuntu伺服器的 WSL 文件,但似乎不存在這樣的東西。

我考慮過在 Ubuntu 發行版上安裝 Samba。但該發行版與主機 2022 伺服器具有相同的主機名,因此我不知道如何將 SMB 流量重新導向到 WSL,而不以某種方式終止主機的 SMB 流量。

如果可能的話,我想避免像複製檔案/同步/scp這樣的駭客行為。我知道這些,儘管它們不太方便。透過資源管理器直接存取文件將是理想的選擇。

答案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 文件的資料夾目錄一樣簡單,然後:右鍵單擊,屬性,共享選項卡。

您所描述的困難可能是這些文件的「位置」並不直觀地位於您認為它們所在的位置。容器化可以使這些目錄視覺化。

相關內容