在 Windows 11 中设置 WSL2 Ubuntu 的 `networkingMode=mirrored` 详细教程 ...

打印 上一主题 下一主题

主题 1599|帖子 1599|积分 4797

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

在 Windows 11 中利用 WSL2(Windows Subsystem for Linux 2)时,默认的网络配置可能会导致一些网络互通性问题,例如无法通过 localhost 访问 WSL2 中的服务,或者在局域网中无法访问 WSL2 中的服务。为了解决这些问题,Windows 11 23H2 及以上版本引入了 networkingMode=mirrored 配置,使 WSL2 与 Windows 主机共享相同的网络配置。本文将详细介绍如何设置 WSL2 Ubuntu 的 networkingMode=mirrored,并解决常见问题。

环境要求

在开始之前,请确保满意以下环境要求:


  • Windows 版本:Windows 11 23H2 或更高版本。
  • WSL 版本:WSL2 2.0.0 或更高版本。
可以通过以下下令检查 WSL 版本:
  1. wsl --version
复制代码
如果版本低于 2.0.0,可以通过以下下令更新:
  1. wsl --update --pre-release
复制代码

配置 .wslconfig 文件


  • 创建或编辑 .wslconfig 文件

    • 打开 PowerShell 或下令提示符,输入以下下令创建或编辑 .wslconfig 文件:
      1. notepad $env:USERPROFILE\.wslconfig
      复制代码
    • 如果文件已存在,直接编辑即可。

  • 添加镜像网络配置
    在 .wslconfig 文件中添加以下内容:
    1. [wsl2]
    2. networkingMode=mirrored
    3. dnsTunneling=true
    4. autoProxy=true
    5. firewall=true
    6. [experimental]
    7. autoMemoryReclaim=gradual
    8. sparseVhd=true
    9. hostAddressLoopback=true
    复制代码

    • networkingMode=mirrored:启用镜像网络模式,使 WSL2 与 Windows 共享网络。
    • dnsTunneling=true:启用 DNS 隧道,进步与 VPN 等复杂网络的兼容性。
    • autoProxy=true:同步 Windows 的代理设置到 WSL2。
    • firewall=true:启用 Windows 防火墙集成。
    • hostAddressLoopback=true:允许通过主机的局域网 IP 访问 WSL2 中的服务。


重启 WSL2

完成配置后,重启 WSL2 以应用更改:
  1. wsl --shutdown
复制代码
等待几秒后重新启动 WSL2。

验证镜像网络模式


  • 检查 IP 地点

    • 在 WSL2 中运行以下下令检察 IP 地点:
      1. ip addr
      复制代码
      如果 IP 地点与 Windows 主机的 IP 地点同等,说明镜像网络模式已启用。

  • 测试网络互通

    • 在 WSL2 中启动一个服务(如 Python HTTP 服务器):
      1. python3 -m http.server 8000
      复制代码
    • 在 Windows 中访问 http://localhost:8000,如果能够访问,说明镜像网络模式配置成功。


解决常见问题


  • 局域网访问问题

    • 如果局域网装备无法访问 WSL2 中的服务,可能是 Hyper-V 防火墙克制了入站毗连。可以通过以下下令允许入站毗连:
      1. Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
      复制代码
      或者为特定端口添加规则:
      1. New-NetFirewallHyperVRule -Name "AllowPort8000" -DisplayName "Allow Port 8000" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 8000
      复制代码

  • Docker 容器无法通过 localhost 访问

    • 如果利用 Docker,必要在 /etc/docker/daemon.json 中添加以下配置:
      1. {
      2.   "iptables": false
      3. }
      复制代码
      然后重启 Docker 服务:
      1. sudo service docker restart
      复制代码


其他注意事项



  • 端口辩论:如果遇到端口辩论问题,可以调整 Windows 的 TCP 动态端口范围,克制与常用端口辩论:
    1. netsh int ipv4 set dynamic tcp start=50000 num=15536
    复制代码
  • IPv6 支持:镜像网络模式支持 IPv6,但 localhost 的 IPv6 地点 ::1 可能无法直接利用。

结论

通过以上步调,您可以成功将 WSL2 Ubuntu 的网络模式设置为 mirrored,并享受更便捷的网络互通体验。如果遇到问题,可以参考相关文档或社区讨论。希望本文对您有所资助!

参考文档


  • WSL 官方文档
  • WSL2 网络配置

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表