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

wsl2 的 mirrored 网络模式下,在里面监听一个端口,同局域网同网段下的设备可以 telnet,不同网段的设备不行。

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

    在 wsl2 中监听 6400 端口,然后从不同的网段的设备上 telnet 这个端口。 例如我设备的 ip 是 192.168.1.123 ,然后从 192.168.1.x 的设备上可以 telnet 192.168.1.123 6400 成功。在 192.168.2.x 等所有的非 192.168.1.x 的设备上都不能 telnet 成功。但是如果我在 windows 上面监听 6400 端口则所有网段的设备都可以 telnet 成功。 有人遇到过类似的问题么?

    第 1 条附言  ·  259 天前
    已解决,让它沉下去吧
    17 条回复
    zed1018
        1
    zed1018  
       260 天前
    盲猜一手是防火墙的原因,可以参考官方文档把 inbound 默认管理方式都设为 allow 试试。

    https://learn.microsoft.com/en-us/windows/wsl/networking

    另外考虑优先在 windows listen 这个端口排除一下是不是本身两个网段就不通而不是在 wsl2 里不通。
    zed1018
        2
    zed1018  
       260 天前
    噢,后半句当我没说。没看完你的贴子。
    leeyuzhe
        3
    leeyuzhe  
    OP
       260 天前
    @zed1018 #1
    防火墙我开始设置成了 allow ,后来干脆直接关了,然后并没有改善
    leeyuzhe
        4
    leeyuzhe  
    OP
       260 天前
    @leeyuzhe 破案了,把 cfw 的 tun 关了就行了,感觉那块网卡有问题还是
    zed1018
        5
    zed1018  
       260 天前
    @leeyuzhe #4 恭喜解决问题。其实用代理就好了,一般来讲。不行可以配合 proxychains-ng
    realJamespond
        6
    realJamespond  
       260 天前
    子网掩码没设置对?
    onlxx123
        7
    onlxx123  
       260 天前
    @leeyuzhe 我有个相似的问题想请教,WSL2 网络模式也是 mirrored ,同局域网同网段下的设备可以访问,但是本机用 IP 却访问不了,只能 127.0.0.1 访问。
    weak
        8
    weak  
       260 天前 via iPhone
    @onlxx123 wsl --update --pre-release 把 WSL2 更新到 2.0.0 或以上版本。
    Ipsum
        9
    Ipsum  
       260 天前
    @leeyuzhe tun 没有路由规则的时候会优先走他内部的,你自己加一条静态路由进去就行了。
    leeyuzhe
        10
    leeyuzhe  
    OP
       260 天前
    @Ipsum 请问具体如何操作,或者有什么关键词能让我搜索一下
    leeyuzhe
        11
    leeyuzhe  
    OP
       260 天前
    @realJamespond 不是的,你注意看我最后一句,我在 windows 上面监听的端口完全正常
    Ipsum
        12
    Ipsum  
       260 天前
    @leeyuzhe ip r add xxx.xxx.xxx.xxxx/xx via gwip
    pkokp8
        13
    pkokp8  
       260 天前
    🤔我之前解决不了,就用 nginx 代理
    hez2010
        14
    hez2010  
       260 天前
    @onlxx123 你这个看上去是 dns 的配置问题了
    mmdsun
        15
    mmdsun  
       260 天前
    借楼问下,我最近也遇到有个奇葩问题,WSL 2 镜像网络模式。

    WSL 2 中安装 Linux 版本的 docker (非 docker desktop ), 启动程序监听 0.0.0.0, docker 端口开了,防火墙关了。
    本机只能 localhost:8080 访问,本机用 192.168 的本机 ip+8080 不能访问,当然局域网其他设备也不能访问。

    最后只能本机安装了 nginx 转到了 localhost:8080 上,局域网才能访问。
    dant
        16
    dant  
       260 天前
    > windows 上面监听 6400 端口则所有网段的设备都可以 telnet 成功
    windows 默认有源进源出,linux 默认只会按路由表匹配
    leeyuzhe
        17
    leeyuzhe  
    OP
       259 天前
    @Ipsum #12
    @dant
    感谢,加了静态路由之后好了!!你们拯救了我一下午时间!
    现在又有个新问题,我 wls2 里面的 kafka 客户端报错 Cannot assign requested address 。
    ```
    Error connecting to node 10.0.15.247:9092 (id: 0 rack: null)
    java.net.BindException: Cannot assign requested address
    at sun.nio.ch.Net.connect0(Native Method) ~[?:1.8.0_402]
    at sun.nio.ch.Net.connect(Net.java:482) ~[?:1.8.0_402]
    at sun.nio.ch.Net.connect(Net.java:474) ~[?:1.8.0_402]
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:647) ~[?:1.8.0_402]
    at org.apache.kafka.common.network.Selector.doConnect(Selector.java:277) ~[kafka-clients-3.1.2.jar:?]
    at org.apache.kafka.common.network.Selector.connect(Selector.java:255) ~[kafka-clients-3.1.2.jar:?]
    at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:990) ~[kafka-clients-3.1.2.jar:?]
    at org.apache.kafka.clients.NetworkClient.access$600(NetworkClient.java:73) ~[kafka-clients-3.1.2.jar:?]
    at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:1161) ~[kafka-clients-3.1.2.jar:?]
    ```
    我通过打断点发现一个奇怪的问题,在 Net.connect 中调用了一个方法叫 isIPv6Available ,也是个 native 方法,在网络模式为 nat 或者 bridge 时返回 false ,在 mirrored 模式下返回了 true ,这是不是问题的原因。因为在另外的两种网络模式下都是好的,并且我的电脑跟 247 之间确实没有 ipv6 网络。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   984 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:47 · PVG 03:47 · LAX 11:47 · JFK 14:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.