V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hakono
V2EX  ›  问与答

wsl2 该怎样才能共享文件给局域网?

  •  1
     
  •   hakono · 2020-05-04 00:18:24 +08:00 · 4226 次点击
    这是一个创建于 1663 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这里说的局域网其实是同一台电脑上的另一台 Hyper-V 的 Win10 虚拟机,里面有公司配置的开发环境之类的

    我该怎么把 wsl2 里的文件共享给那台 Win10 虚拟机?

    在宿主机里访问 wsl2 的文件是很简单的,直接访问 \\wsl$ 就行了,但是宿主机上的另一台虚拟机没办法

    目前想了两个方法都感觉不行:

    1. 在 wsl2 里装 samba 服务器,把文件共享给局域网然后虚拟机挂载成磁盘。 这个是最轻松简单也符合直觉的,但这方法有个大问题是 wsl2 的 ip 不 是 固 定 的 ,每次重启电脑 wsl2 都会获得一个随机的 ip 地址(这个随机的 ip 不是同一个网段的随机,而是连网段都随机了,因为 wsl2 用的是 Hyper-V 的那个默认交换机而且不能改,那个默认交换机每次重启电脑就会自动被删除并重新创建,然后随机一个新的 ip 网段)

    2. 放弃使用宿主机里的 wsl2,转而直接在 Win10 虚拟机里安装 wsl2 (即虚拟机里跑虚拟机)。一个很优雅的解决办法,看起来很美好,但是可惜目前 Hyper-V 的嵌套虚拟化只支持 Intel 平台,我是 AMD 平台不支持(说起来微软嵌套虚拟化的官方文档下,大家呼吁 AMD 平台支持嵌套虚拟化的帖子已经 2 年多了,微软到现在都还拖拖拉拉的不支持 AMD 这个越来越重要的平台。wsl2 没法设置固定 ip 这个问题也是,gihutb 的 issue 已经快一年了,讨论了一长串微软都不支持,也不知道微软是怎么想的。不过 wsl 的 repo 下那 900 多个 issue 估计微软想处理也处理不过来。。。)

    8 条回复    2020-05-14 17:10:27 +08:00
    hakono
        1
    hakono  
    OP
       2020-05-04 10:28:09 +08:00
    沉到看不到了,顶一下依旧在等待回答。。。。
    zhfish
        2
    zhfish  
       2020-05-04 11:43:10 +08:00
    稍微麻烦点, 用内网穿透的方法吧
    goproxy 或者 frpc,同宿主,穿透损耗接近没有

    以 goproxy 为例
    wsl2 做 client
    win10 做 bridge 和 server
    zhfish
        3
    zhfish  
       2020-05-04 11:44:26 +08:00
    Win10 虚拟机里安装 wsl2 有什么优雅的? 用 wsl 不就是为了不装虚拟机用 linux 么?
    用虚拟机直接装个 alpine 不香?
    hakono
        4
    hakono  
    OP
       2020-05-04 14:20:13 +08:00
    @zhfish 很感谢提供思路和方法。但想了下解决办法应该不在内网穿透上。因为实际上 Win10 已经自动为 wsl2 做了内网穿透了(宿主机通过 localhost:wsl2_port 就可以访问到 wsl2 端口,局域网内其他电脑则可以通过 宿主的局域网 ip:wsl2_port 访问到 wsl2 端口)

    但这里的问题在于,wsl2 里装 samba 服务器的话要占用 445 等端口,而宿主自己也在 445 等端口上跑着 samba 服务,这样的话通过 宿主 ip:wsl2_port 只能访问到宿主的 samba 服务。当然解决办法似乎是很理所当然的把 wsl2 的 samba 服务器端口换一个,比如 1145 之类的,但是很可惜的是 windows 是根本不支持访问非 445 端口之外的 samba 服务器的。也就是说,换成其他端口的话 windows 就没法访问到 wsl2 里的 samba 服务了,走到这一步我感觉目前似乎完全没有解决办法了。。。。


    ------------

    至于优雅这事,我想说的意思是虚拟机里跑 wsl2 的话一个虚拟机里就包含了所有的开发环境,开发环境的迁移和小组内共享环境都极其方便(几分钟的事情),对于因一些原因经常换电脑的我司来说这是很有必要的。。。

    至于 "用 wsl 不就是为了不装虚拟机用 linux 么" 这点,wsl 虽然是原生的,但 wsl2 则是个轻量的 Hyper-V 虚拟机啊,用了 wsl2 其实就是在用 linux 虚拟机。但是因为 wsl2 轻量启动快,docker 还支持把 wsl2 设为 backend,体验是真的比单纯的 linux 虚拟机强非常多。我现在就是同时还开着一台 Debian mini 虚拟机在用,体验并不好。。。。
    zhfish
        5
    zhfish  
       2020-05-04 23:12:38 +08:00
    @hakono
    思路清晰,samba 冲突没跑了
    宿主和 wsl2 的 samba 只能二选一

    可以考虑 nfs, 宿主和 wsl2 哪个做客户端哪个做服务端都无所谓
    宿主的 samba 里的某个目录,是 wsl2 的 nfs 这样子
    flynaj
        6
    flynaj  
       2020-05-05 23:33:58 +08:00 via Android   ❤️ 1
    wsl2 本来就是虚拟机,精简版的速度快,要完整版就自己安装完整版虚拟机。
    hakono
        7
    hakono  
    OP
       2020-05-06 00:17:36 +08:00
    @flynaj 我也没说 wsl2 不是虚拟机啊? 现在我就是开了台 Debian 虚拟机在用,就是因为体验并不好才想迁移到 wsl2 上( wsl2 还支持 Docker Backend 体验好很多)
    lonewolfakela
        8
    lonewolfakela  
       2020-05-14 17:10:27 +08:00
    在宿主机上创建一个指向\\wsl$的符号链接,然后把这个符号链接所在的位置共享出去不行么?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2764 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 13:17 · PVG 21:17 · LAX 05:17 · JFK 08:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.