
У меня есть 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, и: щелкнуть правой кнопкой мыши, свойства, вкладка общего доступа.
Трудность, которую вы описываете, может заключаться в том, что "местоположение" этих файлов интуитивно не находится там, где вы думаете. Контейнеризация может визуализировать эти каталоги.