急救,局域网怎么访问主机 A 的 wsl2 的 docker 的 8080 端口服务 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
albert0yyyy
V2EX    Windows

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

  •  1
     
  •   albert0yyyy 2023-09-21 15:47:20 +08:00 4498 次点击
    这是一个创建于 750 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在情况是 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 上,无法访问

    第 1 条附言    2023-09-21 16:32:04 +08:00
    已解决
    感谢 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 条回复    2024-01-15 15:15:27 +08:00
    albert0yyyy
        1
    albert0yyyy  
    OP
       2023-09-21 15:48:07 +08:00
    头都大了,容器 ip ,wsl ip ,局域网 ip 已经混了
    mmm159357456
        2
    mmm159357456  
       2023-09-21 15:51:50 +08:00
    直接访问 A:8080 不能访问到吗?如果是 http 服务试试 curl -vk http://A:8080
    maocat
        3
    maocat  
       2023-09-21 15:56:15 +08:00
    能直接访问啊,我 wsl 里 docker 装的数据库,同事电脑能直接访问
    tailf
        4
    tailf  
       2023-09-21 15:56:35 +08:00
    A 的防火墙关闭,直接就是通的,别的机器使用 A 的子网 ip 访问即可
    Bingchunmoli
        5
    Bingchunmoli  
       2023-09-21 15:57:17 +08:00 via Android
    看服务是不是仅监听 127 如果是 0.0.0 不需要操作,如果没有防火墙什么的可以直接访问的
    lysS
        6
    lysS  
       2023-09-21 15:58:12 +08:00
    等新版本的镜像网络吧;
    临时就用 vsc 连接 wsl2:安装 wsl 插件,在终端右键选择端口,在端口标签页添加端口映射
    klo424
        7
    klo424  
       2023-09-21 16:05:51 +08:00
    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.
    kytrun
        8
    kytrun  
       2023-09-21 16:16:46 +08:00
    albert0yyyy
        9
    albert0yyyy  
    OP
       2023-09-21 16:17:59 +08:00
    @klo424 停在了第 3 步,关了 clash 应该没有代理的啦。我试了试飞鸽传书,是能局域网使用的
    gosidealone
        10
    gosidealone  
       2023-09-21 16:25:00 +08:00   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  
       2023-09-21 16:25:47 +08:00
    @gosidealone 然后我就在 mac 能够访问 wsl2 的 docker 启动的服务了
    BardOS
        12
    BardOS  
       2023-09-21 16:30:04 +08:00
    自己电脑能访问,别人用你电脑 ip+8080 也能访问呀,防火墙放行这一步就行了
    albert0yyyy
        13
    albert0yyyy  
    OP
       2023-09-21 16:31:08 +08:00
    @gosidealone #10 wc 可以了,这个命令很关键啊,我不知道 listen 和 connect 填什么
    indexphp
        14
    indexphp  
       2023-09-21 16:53:59 +08:00
    cy18
        15
    cy18  
       2023-09-21 17:12:12 +08:00
    还有个办法,在 Hyper-V 配置里面把 WSL 的网络改成桥接,不错每次重启好像都要重新设置一次。
    JayZXu
        16
    JayZXu  
       2023-09-21 17:12:49 +08:00
    windows 上起一个 nginx?
    thinkershare
        17
    thinkershare  
       2023-09-21 17:14:44 +08:00
    @albert0yyyy 新版本的 WSL2 的 docker desktop 的容器应该是不需要这个玩意的。只要防火墙允许入站,监听 host 是 0.0.0.0 或者主机在局域网的 IP 地址,应该局域网的其它机器就能够直接访问。除了你要访问的是安装在 wsl2 上的 linux 内部安装的 docker, 然后在局域网的其它机器上访问,但是那样性能会差很多。
    mcluyu
        18
    mcluyu  
       2023-09-21 17:16:13 +08:00
    docker desktop 直接用免折腾,wsl 也可以访问
    snowlyg
        19
    snowlyg  
       2023-09-21 17:19:33 +08:00
    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  
       2023-09-21 18:41:06 +08:00 via iPhone   1
    安装个 nginx 映射一下也行。

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

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

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

    或者加入预览版 wsl2 2.0 ,有 mirror 模式的网络
    yinmin
        24
    yinmin  
       2023-09-22 10:21:50 +08:00 via iPhone
    如果 windows 生产环境使用 docker ,最佳方式是 hyper-v + debian + docker ,然后网络做桥接
    WenkanEdward
        25
    WenkanEdward  
       2023-10-14 10:49:25 +08:00
    Ccf
        26
    Ccf  
       2024-01-13 17:14:42 +08:00 via iPhone
    mark ,win11 下 wsl2+debian+docker emby 也遇到局域网不能访问的情况
    Ccf
        27
    Ccf  
       2024-01-15 15:15:27 +08:00
    @gosidealone @snowlyg 查看 wsl2 的命令 ip addr show eth0
    netsh interface portproxy add v4tov4 listenport=8096 listenaddress=0.0.0.0 cOnnectport=8096 cOnnectaddress=<wsl2 的地址>
    终于搞定了 emby 的网络问题,感谢两位
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     873 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:13 PVG 05:13 LAX 14:13 JFK 17:13
    Do have faith in what you're doing.
    ubao 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