Доступ к \\wsl$\Ubuntu с другого компьютера Windows в сети

Доступ к \\wsl$\Ubuntu с другого компьютера Windows в сети

У меня есть Windows 2022 Server, сборка 23H2 / 22631, и на нем установлен дистрибутив Ubuntu 22.04 в WSL2.

Если я нахожусь на самом сервере, я могу получить доступ к файлам в этом дистрибутиве, используя \\wsl$\Ubuntuпуть в Проводнике.

Есть ли способ получить доступ к этим же файлам из Проводника на другом компьютере, имеющем сетевое подключение к серверу?

Я могу получить доступ к eg \\server\c$просто отлично с этой сетевой машины. Хотелось бы мне зайти в eg \\server\wsl$\Ubuntuи получить доступ к файлам WSL сервера, но ничего подобного, похоже, не существует.

Я думал об установке Samba на дистрибутив Ubuntu. Но у дистрибутива такое же имя хоста, как и у сервера host 2022, поэтому я не знаю, как перенаправить трафик SMB на WSL, не убив при этом каким-либо образом трафик SMB хоста.

Если возможно, я бы хотел избегать хаков типа копирования файлов / синхронизации / scp. Я знаю о них, хотя они менее удобны. Прямой доступ к файлам через Explorer был бы идеальным.

решение1

Я не пробовал, но вот некоторая информация, которая может сделать это возможным.

WSL2 теперь имеет Зеркальный режим сети что позволяет ему работать так же, как в WSL1, без NAT, используя сетевой адаптер(ы) хоста и предполагая IP-адрес хоста.

Зеркальный режим включается:

  • Создайте файл %UserProfile%\.wslconfig(если его нет)

  • Добавьте в файл следующие строки:

    [wsl2]
    networkingMode=mirrored
    
  • Выключите WSL с помощьюwsl --shutdown

  • Запустите распространение WSL.

Вам все еще нужно включить входящие порты SAMBA в брандмауэре Windows. Из документации, повышенные команды PowerShell для включения всех входящих портов или только одного:

Выполните следующую команду в окне PowerShell с правами администратора, чтобы настроить параметры брандмауэра Hyper-V для разрешения входящих подключений: Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allowили New-NetFirewallHyperVRule -Name MyWebServer -DisplayName "My Web Server" -Direction Inbound -VMCreatorId "{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}" -Protocol TCP -LocalPorts 80.

Возможно, потребуются некоторые эксперименты, но этого может быть достаточно, чтобы сделать сервер Samba в WSL2 доступным по локальной сети.

решение2

Расположение общего доступа c$ включено по умолчанию. Если у вас есть другой каталог, которым вы хотите поделиться, вам придется поделиться этим расположением отдельно. Есть несколько способов сделать это, но самый простой — с помощью графического интерфейса — это просто найти каталог папки, в котором находятся файлы Ubuntu, и: щелкнуть правой кнопкой мыши, свойства, вкладка общего доступа.

Трудность, которую вы описываете, может заключаться в том, что "местоположение" этих файлов интуитивно не находится там, где вы думаете. Контейнеризация может визуализировать эти каталоги.

Связанный контент