V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
升级到 Windows 11
ericgui
V2EX  ›  Windows

WSL2 启动了一个 localhost:8000 服务, chrome 总是打不开,查了无数文档,知道是网络设置的原因,不知道怎么 fix,有人遇到类似的问题吗?

  •  
  •   ericgui · 345 天前 · 4252 次点击
    这是一个创建于 345 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个 wsl2 的网络可真的是太烦了

    看来还是没法替代 macOS

    37 条回复    2020-12-30 13:09:19 +08:00
    xgfan
        1
    xgfan  
       345 天前
    dobelee
        2
    dobelee  
       345 天前 via iPhone   ❤️ 2
    最简单的,切换回 wsl1 解君愁。
    ai277014717
        3
    ai277014717  
       345 天前
    nat 转换
    CallMeReznov
        4
    CallMeReznov  
       345 天前
    你绑 eth0 然后自己的机器无法访问?
    防火墙吧。。。。?
    iamwho
        5
    iamwho  
       345 天前
    ericgui
        6
    ericgui  
    OP
       345 天前
    @ai277014717 咋做?求指教
    ericgui
        7
    ericgui  
    OP
       345 天前
    @iamwho 我用这个解决了:


    The IP i use in my .bashrc is from:

    export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0

    我也不知道什么原因

    我的网络知识很少,一直都没咋学明白
    ai277014717
        8
    ai277014717  
       345 天前
    @ericgui 关键字搜一下就知道了 wsl2 hyper-v nat
    enfuss
        9
    enfuss  
       345 天前
    @ericgui #7
    因为 wsl2 每次启动的 localhost 和 windows 本身的 localhost 不是同一个东西。之前试图给 wsl2 用 windows 的代理就碰到这个坑。
    purefkh
        11
    purefkh  
       345 天前 via Android
    zhlssg
        12
    zhlssg  
       345 天前   ❤️ 28
    确实有点坑,有天搞这个加班了一小时,下班发现电动车被偷了
    ohoh
        13
    ohoh  
       345 天前
    打开老版 IE, 进入设置进行重置, 可能需要重启电脑.
    zlowly
        14
    zlowly  
       345 天前
    最新版本的 WIN10 里的 WSL2 里监听于::1 的话,WIN10 的 HOST 主机里就可以用 localhost 访问到对应监听的端口,看起来似乎是通过 ipv6 实现的。
    xgc
        15
    xgc  
       345 天前
    是不是开了 SS 或者什么别的 http 代理,正常是可以用 localhost:8000 访问的
    sleepm
        16
    sleepm  
       345 天前
    https://abdus.dev/posts/fixing-wsl2-localhost-access-issue/
    写个 powershell 脚本
    在事件查看器找到'加载 wsl 交换机(1019)'的事件,加个计划任务上去,每次 wsl2 启动时自动把 wls2 的 ip 写入主机 hosts
    shayne/go-wsl2-host 这个我试了,我的 win10 没用,不工作,所以只能搞脚本了
    wsl2 除了不能固定 ip/nat 之外,还是很香的
    hui314
        17
    hui314  
       345 天前
    wsl2 除了 localhost,还有文件 io 巨缓慢的问题,TTL 能去到 5 秒.已经转投 virtualBox
    Rhilip
        18
    Rhilip  
       344 天前
    我是绑定静态 IP, 个人觉得这是比 localhost 更好的方法访问 WSL2
    https://github.com/MicrosoftDocs/WSL/issues/418#issuecomment-648570865
    nmap
        19
    nmap  
       344 天前
    最简单的办法是不要用 localhost,用 wsl2 eth 口的 ip 访问
    KuroNekoFan
        20
    KuroNekoFan  
       344 天前 via iPhone   ❤️ 1
    @hui314 wsl2 访问 mnt 路径会有问题,用虚拟机本身的硬盘空间就正常了
    keepeye
        21
    keepeye  
       344 天前
    没有 docker 需求的话还是用 wsl1 比较好,尤其是需要读写宿主机文件的的话
    libook
        22
    libook  
       344 天前   ❤️ 1
    WSL2 是跑在虚拟机里的,虚拟机和 Win10 是相当于 2 台网络设备,所以你在 WSL2 里启动了一个服务,不能监听 localhost,而是应该监听 2 台设备同在的网络段,最简单直接的是监听 0.0.0.0:8000 。

    然后找到 WSL2 目前在用的 IP 地址,比如 10.2.3.1,然后在 Win10 上访问 10.2.3.1:8000 就可以了,就像是你在自己电脑上访问一台测试服务器上的服务一样。
    assiadamo
        23
    assiadamo  
       344 天前
    既然用到 WSL2 了,不如连 docker desktop 一起安排上吧
    fuis
        24
    fuis  
       344 天前
    多大点事

    export HOST_IP="$(grep nameserver /etc/resolv.conf | awk '{print $2}')"
    export WSL_IP="$(hostname -I)"
    hantsy
        25
    hantsy  
       344 天前
    @hui314 Windows 下真是麻烦,本来我是 Virtualbox 用得多。

    后来的 Docker 放弃了 Dockers Toolbox (支持 Virtulbox ),与 MS 合作开发 Docker For Windows,仅支持 Hyper V,无耐才用它。最扯蛋的是 VirtualBox 与 HyperV 不兼容,虽然 VirtualBox 有选项可以用 HyperV 协议,一直没成功过。
    hantsy
        26
    hantsy  
       344 天前
    对于开发人员,Vargrant 是比较好的方案,直接用虚拟机,而且网络,文件系统映射做得不错。
    beichenhpy
        27
    beichenhpy  
       344 天前 via Android
    直接用 wsl2 ifconfig 出来的内网 ip 访问
    narmgalaxy
        28
    narmgalaxy  
       344 天前
    我记得是因为 wsl2 是虚拟机,占用了一部分端口
    https://www.cnblogs.com/zsmumu/p/13389816.html
    kennylam777
        29
    kennylam777  
       344 天前 via Android
    @hantsy WSL2 不好嗎,Docker for Desktop 3.0.0 以 WSL2 為主,輕鬆解決 File system 的問題。

    WSL 1 能直接使用 Windows 網口,用來調試 userspace 程序也很輕鬆
    hantsy
        30
    hantsy  
       344 天前
    @kennylam777 Hyper V 的生态不如 VirtualBox,很多东西不支持 HyperV,比如 Genymotion,Vagrant 很多 Box 只有 VirtualBox 版本。
    jiangzm
        31
    jiangzm  
       344 天前
    监听改成 0.0.0.0:80 试下
    kennylam777
        32
    kennylam777  
       344 天前
    @hantsy 的確, Vagrant 的 Hyper-V driver 不能用要 VirtualBox 也沒辦法, 但新的 Hyper-V 可以和 VirtualBox 共存了, 不像以前般 mutually exclusive
    RickyC
        33
    RickyC  
       344 天前
    应该要让 windows 映射 WSL2 的端口, 才可在 windows 下访问
    并且 WSL2 的内网 IP 会经常自己改变

    可参考 https://blog.class4ever.com/2588.html
    ericgui
        34
    ericgui  
    OP
       344 天前
    @RickyC +1
    RickyC
        35
    RickyC  
       344 天前
    不映射端口的话,
    可以尝试在 WSL2 输入 ifconfig, 找到 inet 的 IP,
    然后用 该 IP:端口, 看能不能访问.
    hantsy
        36
    hantsy  
       344 天前
    如果直接映射 WLS 所有端口到 Windows,估计太多冲突。 没有简单的通过子域名方式来解决所有 的 WLS 端口问题。比如 Windows 启动时在 Host 文件,写入 wsl.local XXXX ( WLS IP ).
    xzysaber
        37
    xzysaber  
       344 天前
    重启 WSL 。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3792 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:34 · PVG 16:34 · LAX 00:34 · JFK 03:34
    ♥ Do have faith in what you're doing.