ericgui
V2EX  ›  Windows

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

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

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

    看来还是没法替代 macOS

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

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

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

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

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

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