当前位置: 首页 > news >正文

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

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

    • 引言
    • 环境要求
    • 配置 `.wslconfig` 文件
    • 重启 WSL2
    • 验证镜像网络模式
    • 解决常见问题
    • 其他注意事项
    • 结论

引言

在 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 版本:

wsl --version

如果版本低于 2.0.0,可以通过以下命令更新:

wsl --update --pre-release

配置 .wslconfig 文件

  1. 创建或编辑 .wslconfig 文件

    • 打开 PowerShell 或命令提示符,输入以下命令创建或编辑 .wslconfig 文件:
      notepad $env:USERPROFILE\.wslconfig
      
    • 如果文件已存在,直接编辑即可。
  2. 添加镜像网络配置
    .wslconfig 文件中添加以下内容:

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

重启 WSL2

完成配置后,重启 WSL2 以应用更改:

wsl --shutdown

等待几秒后重新启动 WSL2。


验证镜像网络模式

  1. 检查 IP 地址

    • 在 WSL2 中运行以下命令查看 IP 地址:
      ip addr show eth0
      
      如果 IP 地址与 Windows 主机的 IP 地址一致,说明镜像网络模式已启用。
  2. 测试网络互通

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

解决常见问题

  1. 局域网访问问题

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

    • 如果使用 Docker,需要在 /etc/docker/daemon.json 中添加以下配置:
      {"iptables": false
      }
      
      然后重启 Docker 服务:
      sudo service docker restart
      

其他注意事项

  • 端口冲突:如果遇到端口冲突问题,可以调整 Windows 的 TCP 动态端口范围,避免与常用端口冲突:

    netsh int ipv4 set dynamic tcp start=50000 num=15536
    
  • IPv6 支持:镜像网络模式支持 IPv6,但 localhost 的 IPv6 地址 ::1 可能无法直接使用。


结论

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


参考文档

  • WSL 官方文档
  • WSL2 网络配置
http://www.lryc.cn/news/526409.html

相关文章:

  • 万字长文总结前端开发知识---JavaScriptVue3Axios
  • 怎么样把pdf转成图片模式(不能复制文字)
  • 本地centos网络配置
  • kotlin内联函数——runCatching
  • Python3 正则表达式:文本处理的魔法工具
  • 《DiffIR:用于图像修复的高效扩散模型》学习笔记
  • windows平台通过命令行安装前端开发环境
  • 记交叉编译asio_dtls过程
  • 学习yosys(一款开源综合器)
  • 自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • 对于Docker的初步了解
  • C语言进阶——3字符函数和字符串函数(2)
  • 机器学习day3
  • 追剧记单词之:国色芳华与单词速记
  • AIGC浪潮下,图文内容社区数据指标体系构建探索
  • 总线、UART、IIC、SPI
  • 戴尔电脑设置u盘启动_戴尔电脑设置u盘启动多种方法
  • 【python】四帧差法实现运动目标检测
  • JVM学习指南(48)-JVM即时编译
  • office 2019 关闭word窗口后卡死未响应
  • [操作系统] 深入进程地址空间
  • CVE-2025-0411 7-zip 漏洞复现
  • leetcode151-反转字符串中的单词
  • 若依 v-hasPermi 自定义指令失效场景
  • vue3中自定一个组件并且能够用v-model对自定义组件进行数据的双向绑定
  • 使用 Python 和 Tesseract 实现验证码识别
  • 谈一谈前端构建工具的本地代理配置(Webpack与Vite)
  • CentOS7非root用户离线安装Docker及常见问题总结、各种操作系统docker桌面程序下载地址
  • Alibaba Spring Cloud 十三 Nacos,Gateway,Nginx 部署架构与负载均衡方案
  • +-*/运算符优先级计算模板