V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
chackchackGO
V2EX  ›  问与答

近 2 年了, wsl2 的网络桥接还没好起来?

  •  
  •   chackchackGO · 2023-06-13 11:12:23 +08:00 · 1321 次点击
    这是一个创建于 556 天前的主题,其中的信息可能已经有所发展或是发生改变。

    google 了 2 小时, 关于这方面的讨论有在微软文档的, 有在 reddit 的, 有在 github issue 的, 有在个人博客的.

    netsh interface portProxy似乎不能 v6tov4. 也不是很方便.

    有看到说用.wslconfig的如下配置

    [wsl2]
    vmSwitch=hyper_v_bridge
    networkMode=bridged
    ipv6=true
    

    但是我并没有生效. 我已经确保wsl --update 以及文件名和文件路径的问题的正确了, 因为debugConsole=true配置可以正常生效.

    如有路过大神可以指点一二吗? 还是继续默默的端口转发凑活用好了.

    6 条回复    2023-06-13 12:09:35 +08:00
    jincong
        1
    jincong  
       2023-06-13 11:19:32 +08:00
    jonathanchoo
        2
    jonathanchoo  
       2023-06-13 11:22:54 +08:00
    在 WSL2 中,如果需要将 IPv6 流量转发到 IPv4 网络中,可以使用 socat 工具。socat 是一款强大的网络工具,可以在不同协议之间进行数据转换和传输。在 WSL2 中,可以使用 socat 将 IPv6 流量转发到 IPv4 网络中。

    具体操作步骤如下:

    安装 socat 工具。在 Ubuntu 中,可以使用以下命令安装:
    sudo apt-get update
    sudo apt-get install socat
    启动 socat 进程。在 Ubuntu 中,可以使用以下命令启动 socat 进程:
    socat TCP6-LISTEN:8080,fork TCP4:127.0.0.1:80
    这里将 IPv6 流量监听在本地的 8080 端口上,同时将转发到本地的 80 端口。

    配置 Windows 的端口转发。在管理员权限的命令提示符中,可以使用以下命令将 Windows 的 80 端口转发到 WSL2 的 8080 端口:
    netsh interface portproxy add v4tov6 listenaddress=0.0.0.0 listenport=80 connectaddress=::1 connectport=8080
    这里将监听在本地的 80 端口上,同时将转发到本地的 ::1 (即 IPv6 环回地址)的 8080 端口上。

    验证配置是否生效。在 Windows 中,可以打开浏览器,输入 http://localhost ,然后访问本地的 80 端口。如果一切正常,应该能够看到从 WSL2 转发过来的页面。
    需要注意的是,这种方式需要在 Windows 中进行端口转发,并且 socat 进程需要在 WSL2 中手动启动,稍微有些繁琐。如果只是简单地进行开发调试,可以尝试使用 WSL2 内置的端口转发功能,详见 WSL2 官方文档。
    zhouS9
        3
    zhouS9  
       2023-06-13 11:49:00 +08:00
    刚弄完,hyper-v 弄个虚拟交换机,然后照一楼那个来
    xtreme1
        4
    xtreme1  
       2023-06-13 11:50:48 +08:00
    这一节配置微软应该已经取消了, 现在文档中看不到
    chackchackGO
        5
    chackchackGO  
    OP
       2023-06-13 12:05:50 +08:00
    @xtreme1 啊? 砍刀部要出手了吗
    chackchackGO
        6
    chackchackGO  
    OP
       2023-06-13 12:09:35 +08:00
    @zhouS9
    @jincong
    感谢, 对比发现是我`networkingMode`字段错了.
    但是外网依然不能访问 ipv6
    我确认我的主机 ipv6 连通性无误.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2674 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:13 · PVG 20:13 · LAX 04:13 · JFK 07:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.