Windows Subsystem Linux(WSL)

  • _index

WSL mirrored网络模式配置指南

WSL2.6.0网络模式升级配置指南

版本要求

当前版本状态:

  • 最新稳定版:2.5.9(存在网络配置缺陷)
  • 推荐版本:2.6.0 预览版(支持完整mirrored模式)

模式对比分析

特性 bridge模式(已废弃) mirrored模式(推荐)
协议栈架构 双协议栈 共享协议栈
IP地址分配 独立IP(Windows+WSL) 共享主机IP
端口资源 独立使用 共享端口(需避免冲突)
网络性能 相对较重 轻量高效
配置复杂度 简单 需深度配置防火墙策略

标准配置步骤

1. 网络模式设置

通过 WSL Settings 应用设置基础模式:

  1. 打开设置应用
  2. 选择"Network"选项卡
  3. 设置网络模式为"Mirrored"
  4. 应用配置并重启WSL

2. 防火墙策略配置

需通过PowerShell执行完整策略配置:

# 定义WSL虚拟机GUID
$wslGuid = '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}'

# 配置防火墙策略(按顺序执行)
Set-NetFirewallHyperVVMSetting -Name $wslGuid -Enabled True
Set-NetFirewallHyperVVMSetting -Name $wslGuid -DefaultInboundAction Allow
Set-NetFirewallHyperVVMSetting -Name $wslGuid -DefaultOutboundAction Allow
Set-NetFirewallHyperVVMSetting -Name $wslGuid -LoopbackEnabled True
Set-NetFirewallHyperVVMSetting -Name $wslGuid -AllowHostPolicyMerge True

# 验证配置结果
Get-NetFirewallHyperVVMSetting -Name $wslGuid

3. 端口映射验证

# 示例:检查80端口占用情况
Get-NetTCPConnection -LocalPort 80

常见问题处理

问题1:无法建立外部连接

  • 检查步骤:Get-NetFirewallHyperVVMSetting输出中所有字段应为True/Allow
  • 解决方案:按顺序重新执行防火墙策略配置

问题2:端口冲突

  • 验证方法:netstat -ano查看端口占用
  • 处理建议:优先释放Windows端占用端口,或修改WSL服务监听端口

验证方法

  1. 启动WSL服务(如Nginx/Apache)
  2. 从Windows主机访问http://localhost:<port>
  3. 从局域网设备访问http://<host-ip>:<port>

参考资料

  1. WSL官方网络文档
  2. WSL 2.6.0发布说明

虚拟内存磁盘配置

  • 虚拟内存磁盘配置

虚拟内存磁盘配置

浏览器缓存到虚拟磁盘

# 使用 ImDisk 创建虚拟磁盘
# 以下命令将创建一个 4GB 的虚拟磁盘并挂载到 M: 驱动器
imdisk -a -s 4G -m M: -p "/fs:ntfs /q /y"

rd /q /s "C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default\Cache"
rd /q /s "C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default\Code Cache"
md M:\Edge_Cache\
md M:\Edge_CodeCache\
mklink /D "C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default\Cache" "M:\Edge_Cache\"
mklink /D "C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default\Code Cache" "M:\Edge_CodeCache\"

# 恢复浏览器缓存到默认位置
rd "C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default\Cache"
rd "C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default\Code Cache"
md "C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default\Cache"
md "C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default\Code Cache"

# 卸载虚拟磁盘
# 如果需要移除虚拟磁盘,可以使用以下命令
imdisk -D -m M:

vs-remote-debug

remote debug with visual studio

远程调试 C++: https://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugging-cpp?view=vs-2019

Attach 调试: https://docs.microsoft.com/en-us/visualstudio/debugger/attach-to-running-processes-with-the-visual-studio-debugger?view=vs-2019

配置联调程序为 service: https://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugging?view=vs-2019#bkmk_configureService

如何配置启动参数: https://stackoverflow.com/questions/6740422/visual-studio-remote-debugging-a-service

可用参数: https://social.msdn.microsoft.com/Forums/vstudio/en-US/174c2039-b316-455a-800e-18c0d93b74bc/visual-studio-2010-remote-debugger-settings-dont-persist?forum=vsdebug

自己添加任务

"C:\Program Files\Microsoft Visual Studio 16.0\Common7\IDE\Remote Debugger\x64\msvsmon.exe"

启动参数

/noauth /anyuser /port:4045 /nosecuritywarn /timeout 360000

开发机连接: test0.example.com:4045

远程访问(需提前开启开发者模式): http://test0.example.com:50080/

vscode