急救,局域网怎么访问主机 A 的 wsl2 的 docker 的 8080 端口服务 - V2EX
albert0yyyy

急救,局域网怎么访问主机 A 的 wsl2 的 docker 的 8080 端口服务

  •  1
     
  •   albert0yyyy Sep 21, 2023 5278 views
    This topic created in 984 days ago, the information mentioned may be changed or developed.

    现在情况是 A 是 windows ,有一个 docker 容器,映射到了 A 主机的 127.0.0.1:8080 上,可以正常访问。

    现在需要局域网的其它主机访问 A 主机的 docker 容器的 8080 端口服务,该怎么做?

    已经试过的方案: 将 windows 入站放开 8080 tcp 端口 然后 windows 的端口 127.0.0.1:8080 转发到 0.0.0.0:8080 上,无法访问

    Supplement 1    Sep 21, 2023
    已解决
    感谢 10 楼 @gosidealone
    附上他的原话

    这个我刚好有研究。我的情况是 windows 里面安装了 wsl2 ,wsl2 里面使用了 docker ,要想在局域网访问 windows 的 wsl2 的 docker ,首先 windows 开发端口,再拿到 wsl2 的 ip ,使用命令 netsh interface portproxy add v4tov4 listenport=<本机监听端口> listenaddress=<本机 IP 地址> cOnnectport=<目标机器端口> cOnnectaddress=<目标机器 IP 地址> 目标机器 ip 地址填写 wsl2 的地址就可以了 要管理员权限执行
    27 replies    2024-01-15 15:15:27 +08:00
    albert0yyyy
        1
    albert0yyyy  
    OP
       Sep 21, 2023
    头都大了,容器 ip ,wsl ip ,局域网 ip 已经混了
    MasterofNone
        2
    MasterofNone  
       Sep 21, 2023
    直接访问 A:8080 不能访问到吗?如果是 http 服务试试 curl -vk http://A:8080
    maocat
        3
    maocat  
       Sep 21, 2023
    能直接访问啊,我 wsl 里 docker 装的数据库,同事电脑能直接访问
    tailf
        4
    tailf  
       Sep 21, 2023
    A 的防火墙关闭,直接就是通的,别的机器使用 A 的子网 ip 访问即可
    Bingchunmoli
        5
    a href="/member/Bingchunmoli" class="dark">Bingchunmoli  
       Sep 21, 2023 via Android
    看服务是不是仅监听 127 如果是 0.0.0 不需要操作,如果没有防火墙什么的可以直接访问的
    lysS
        6
    lysS  
       Sep 21, 2023
    等新版本的镜像网络吧;
    临时就用 vsc 连接 wsl2:安装 wsl 插件,在终端右键选择端口,在端口标签页添加端口映射
    v2er4241
        7
    v2er4241  
       Sep 21, 2023
    1. 先在主机 A 上访问 telnet 127.0.0.1 8080 ,看是否可以访问,不可访问的话就是 docker 映射的有问题。
    2. 再在主机 A 上访问 telnet [A 的 IP] 8080 ,看是否可以访问,不可访问的话就是防火墙的问题。
    3. 关闭防火墙,再在主机 A 上访问 telnet [A 的 IP] 8080 ,看是否可以访问,不可访问的话就是有什么代理或者软件拦截了。
    4. 再在主机 B 上访问 telnet [A 的 IP] 8080 ,不能访问的话就是网络问题。
    5. 以上 4 步都没问题了,就打开防火墙,添加入站规则-放通端口 8080.
    albert0yyyy
        9
    albert0yyyy  
    OP
       Sep 21, 2023
    @klo424 停在了第 3 步,关了 clash 应该没有代理的啦。我试了试飞鸽传书,是能局域网使用的
    gosidealone
        10
    gosidealone  
       Sep 21, 2023   2
    这个我刚好有研究。我的情况是 windows 里面安装了 wsl2 ,wsl2 里面使用了 docker ,要想在局域网访问 windows 的 wsl2 的 docker ,首先 windows 开发端口,再拿到 wsl2 的 ip ,使用命令 netsh interface portproxy add v4tov4 listenport=<本机监听端口> listenaddress=<本机 IP 地址> cOnnectport=<目标机器端口> cOnnectaddress=<目标机器 IP 地址> 目标机器 ip 地址填写 wsl2 的地址就可以了 要管理员权限执行
    gosidealone
        11
    gosidealone  
       Sep 21, 2023
    @gosidealone 然后我就在 mac 能够访问 wsl2 的 docker 启动的服务了
    BardOS
        12
    BardOS  
       Sep 21, 2023
    自己电脑能访问,别人用你电脑 ip+8080 也能访问呀,防火墙放行这一步就行了
    albert0yyyy
        13
    albert0yyyy  
    OP
       Sep 21, 2023
    @gosidealone #10 wc 可以了,这个命令很关键啊,我不知道 listen 和 connect 填什么
    indexphp
        14
    indexphp  
       Sep 21, 2023
    cy18
        15
    cy18  
       Sep 21, 2023
    还有个办法,在 Hyper-V 配置里面把 WSL 的网络改成桥接,不错每次重启好像都要重新设置一次。
    JayZXu
        16
    JayZXu  
       Sep 21, 2023
    windows 上起一个 nginx?
    thinkershare
        17
    thinkershare  
       Sep 21, 2023
    @albert0yyyy 新版本的 WSL2 的 docker desktop 的容器应该是不需要这个玩意的。只要防火墙允许入站,监听 host 是 0.0.0.0 或者主机在局域网的 IP 地址,应该局域网的其它机器就能够直接访问。除了你要访问的是安装在 wsl2 上的 linux 内部安装的 docker, 然后在局域网的其它机器上访问,但是那样性能会差很多。
    mcluyu
        18
    mcluyu  
       Sep 21, 2023
    docker desktop 直接用免折腾,wsl 也可以访问
    snowlyg
        19
    snowlyg  
       Sep 21, 2023
    netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 cOnnectport=8080 cOnnectaddress=172.18.236.240

    connectaddress 是你 wsl2 的 ip , 这样就可以通过你电脑 ip 局域网访问 wsl2 内的服务了。
    mmdsun
        20
    mmdsun  
       Sep 21, 2023 via iPhone   1
    安装个 nginx 映射一下也行。

    WSL 2 下个版本就没有这个问题了:
    t/975098
    lazycat
        21
    lazycat  
       Sep 21, 2023
    zed1018
        22
    zed1018  
       Sep 21, 2023
    倒也不用填 wsl 的 ip ,毕竟那个是变的,最好是用 v4tov6 的转发 0.0.0.0 -> ::1
    ppqqows
        23
    ppqqows  
       Sep 22, 2023
    去 hyper-v 虚拟机管理里面,建立一个桥接接口,
    然后编辑 C:\Users\UserName\.wslconfig

    [wsl2]
    # Bridged network
    networkingMode = bridged
    vmSwitch = lanBridge

    这个特性不知道是那个版本加进来的,我是 22H2 ,可以桥接网络,代价就是 wsl2 启动更慢了。

    或者加入预览版 wsl2 2.0 ,有 mirror 模式的网络
    yinmin
        24
    yinmin  
       Sep 22, 2023 via iPhone
    如果 windows 生产环境使用 docker ,最佳方式是 hyper-v + debian + docker ,然后网络做桥接
    WenkanEdward
        25
    WenkanEdward  
       Oct 14, 2023
    Ccf
        26
    Ccf  
       Jan 13, 2024 via iPhone
    mark ,win11 下 wsl2+debian+docker emby 也遇到局域网不能访问的情况
    Ccf
        27
    Ccf  
       Jan 15, 2024
    @gosidealone @snowlyg 查看 wsl2 的命令 ip addr show eth0
    netsh interface portproxy add v4tov4 listenport=8096 listenaddress=0.0.0.0 cOnnectport=8096 cOnnectaddress=<wsl2 的地址>
    终于搞定了 emby 的网络问题,感谢两位
    About     Help     Advertise     Blog     API     FAQ     Solana     2907 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 77ms UTC 15:21 PVG 23:21 LAX 08:21 JFK 11:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86