V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ericgui
V2EX  ›  Windows

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

  •  
  •   ericgui · Dec 29, 2020 · 6890 views
    This topic created in 1955 days ago, the information mentioned may be changed or developed.

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

    看来还是没法替代 macOS

    37 replies    2020-12-30 13:09:19 +08:00
    dobelee
        2
    dobelee  
       Dec 29, 2020 via iPhone   ❤️ 2
    最简单的,切换回 wsl1 解君愁。
    ai277014717
        3
    ai277014717  
       Dec 29, 2020
    nat 转换
    CallMeReznov
        4
    CallMeReznov  
       Dec 29, 2020
    你绑 eth0 然后自己的机器无法访问?
    防火墙吧。。。。?
    iamwho
        5
    iamwho  
       Dec 29, 2020
    ericgui
        6
    ericgui  
    OP
       Dec 29, 2020
    @ai277014717 咋做?求指教
    ericgui
        7
    ericgui  
    OP
       Dec 29, 2020
    @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  
       Dec 29, 2020
    @ericgui 关键字搜一下就知道了 wsl2 hyper-v nat
    enfuss
        9
    enfuss  
       Dec 29, 2020
    @ericgui #7
    因为 wsl2 每次启动的 localhost 和 windows 本身的 localhost 不是同一个东西。之前试图给 wsl2 用 windows 的代理就碰到这个坑。
    purefkh
        11
    purefkh  
       Dec 29, 2020 via Android
    zhlssg
        12
    zhlssg  
       Dec 29, 2020   ❤️ 28
    确实有点坑,有天搞这个加班了一小时,下班发现电动车被偷了
    ohoh
        13
    ohoh  
       Dec 29, 2020
    打开老版 IE, 进入设置进行重置, 可能需要重启电脑.
    zlowly
        14
    zlowly  
       Dec 29, 2020
    最新版本的 WIN10 里的 WSL2 里监听于::1 的话,WIN10 的 HOST 主机里就可以用 localhost 访问到对应监听的端口,看起来似乎是通过 ipv6 实现的。
    xgc
        15
    xgc  
       Dec 29, 2020
    是不是开了 SS 或者什么别的 http 代理,正常是可以用 localhost:8000 访问的
    sleepm
        16
    sleepm  
       Dec 29, 2020
    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  
       Dec 29, 2020
    wsl2 除了 localhost,还有文件 io 巨缓慢的问题,TTL 能去到 5 秒.已经转投 virtualBox
    Rhilip
        18
    Rhilip  
       Dec 29, 2020
    我是绑定静态 IP, 个人觉得这是比 localhost 更好的方法访问 WSL2
    https://github.com/MicrosoftDocs/WSL/issues/418#issuecomment-648570865
    nmap
        19
    nmap  
       Dec 29, 2020
    最简单的办法是不要用 localhost,用 wsl2 eth 口的 ip 访问
    KuroNekoFan
        20
    KuroNekoFan  
       Dec 29, 2020 via iPhone   ❤️ 1
    @hui314 wsl2 访问 mnt 路径会有问题,用虚拟机本身的硬盘空间就正常了
    keepeye
        21
    keepeye  
       Dec 29, 2020
    没有 docker 需求的话还是用 wsl1 比较好,尤其是需要读写宿主机文件的的话
    libook
        22
    libook  
       Dec 29, 2020   ❤️ 1
    WSL2 是跑在虚拟机里的,虚拟机和 Win10 是相当于 2 台网络设备,所以你在 WSL2 里启动了一个服务,不能监听 localhost,而是应该监听 2 台设备同在的网络段,最简单直接的是监听 0.0.0.0:8000 。

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

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

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

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

    可参考 https://blog.class4ever.com/2588.html
    ericgui
        34
    ericgui  
    OP
       Dec 30, 2020
    @RickyC +1
    RickyC
        35
    RickyC  
       Dec 30, 2020
    不映射端口的话,
    可以尝试在 WSL2 输入 ifconfig, 找到 inet 的 IP,
    然后用 该 IP:端口, 看能不能访问.
    hantsy
        36
    hantsy  
       Dec 30, 2020
    如果直接映射 WLS 所有端口到 Windows,估计太多冲突。 没有简单的通过子域名方式来解决所有 的 WLS 端口问题。比如 Windows 启动时在 Host 文件,写入 wsl.local XXXX ( WLS IP ).
    xzysaber
        37
    xzysaber  
       Dec 30, 2020
    重启 WSL 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3457 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 98ms · UTC 11:01 · PVG 19:01 · LAX 04:01 · JFK 07:01
    ♥ Do have faith in what you're doing.