使用网络应用和 WSL 时需要了解一些注意事项。 默认情况下,WSL 使用基于 NAT 的体系结构。建议尝试新的镜像网络模式以获得最新的功能和改进。
镜像模式网络
可以在 .wslconfig 文件中的 [wsl2] 下设置 networkingMode=mirrored,以启用镜像模式网络。 启用此功能会将 WSL 更改为全新的网络体系结构,其目标是将 Windows 上的网络接口“镜像”到 Linux 中,以添加新的网络功能并提高兼容性。具体改进方法见后文。
以下是启用此模式的当前优势:
- IPv6 支持
- 使用 localhost 地址
127.0.0.1
从 Linux 内部连接到 Windows 服务器。 不支持 IPv6 localhost 地址::1
- 改进了 VPN 的网络兼容性
- 多播支持
- 直接从局域网 (LAN) 连接到 WSL
这种新模式解决了使用基于 NAT(网络地址转换)的体系结构时出现的网络问题。
下面说一说如何进行配置
1.使用管理员权限在 PowerShell 窗口中运行以下命令,以配置防火墙设置,从而允许入站连接:
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
或
New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80
2.设置.wslconfig文件
使用 .wslconfig 为 WSL 上运行的所有已安装的发行版配置全局设置。
- 默认情况下,.wslconfig 文件不存在。 它必须创建并存储在
%UserProfile%
目录中才能应用这些配置设置。 - 用于在作为 WSL 2 版本运行的所有已安装的 Linux 发行版中全局配置设置。
- 只能用于 WSL 2 运行的发行版。 作为 WSL 1 运行的发行版不受此配置的影响,因为它们不作为虚拟机运行。
- 要访问
%UserProfile%
目录,请在 PowerShell 中使用cd ~
访问主目录(通常是用户配置文件C:\Users\<UserName>
) - 或者可以打开 Windows 文件资源管理器并在地址栏中输入
%UserProfile%
。 该目录路径应类似于:C:\Users\<UserName>\.wslconfig
。
WSL 将检测这些文件是否存在,读取内容,并在每次启动 WSL 时自动应用配置设置。 如果文件缺失或格式错误(标记格式不正确),则 WSL 将继续正常启动,而不应用配置设置。
之后在C:\Users\<UserName>文件夹下创建一个文本文档,写入以下内容,并将txt文档名字修改为“.wslconfig”
[wsl2]
memory=4GB
swap=8GB
#上面两个根据自己电脑进行设置,也可以删掉,WSL会自动配置缺省值
pageReporting=false
dnsProxy=false
debugConsole=true
networkingMode=mirrored
firewall=false
autoProxy=true
完成设置后,打开windows中的v***y或者c***h,之后打开wsl,即可将本地网络镜像至linux子系统,这样无须进行其他配置,相对于其他方法更加简单快捷