配置WSL2实现与宿主机的网络互通

前言

WSL1 是基于代理的虚拟化技术,它通过将 Linux 系统调用转换为 Windows 系统调用来实现与 Windows 内核的交互。WSL2 则使用了真正的虚拟机技术,它在 Windows主机 上运行一个轻量级的 Linux 内核。

WSL2 无法访问 Windows 的 localhost 网络是由 WSL2 的网络架构所致。WSL2 使用了一个虚拟网络适配器来与 Windows 主机进行通信,这导致 WSL2 无法直接访问 Windows 的 localhost 网络。因此,以往的 WSL2 在访问 Windows 网络时需要将其当作 LAN 的另一个设备,而 Windows 宿主则可以把 WSL 当作本机设备。这导致了很多问题,尤其是梯子方面的。

WSL2 2.0 引入的镜像网络可以解决 localhost 访问问题。启用镜像网络后,WSL2 和 Windows 主机将使用相同的网络,并且可以通过 localhost 访问本机系统上的服务。这意味着你可以在 WSL2 中访问本机系统上运行的应用程序,以及通过本机系统访问在 WSL2 中运行的应用程序。

配置

在Windows的资源管理器的地址栏输入: %UserProfile% ,即可打开当前用户的主目录,创建文件: .wslconfig

[wsl2]

memory=4GB # 分配给 WSL 2 的内存大小

processors=2 # 分配给 WSL 2 的 CPU 核心数

localhostForwarding=true # 是否启用 localhost 转发

[experimental]

autoMemoryReclaim=gradual # 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择

networkingMode=mirrored # 开启镜像网络

dnsTunneling=true # 开启 DNS Tunneling

firewall=true # 开启 Windows 防火墙

autoProxy=true # 开启自动同步代理

sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间

重启WSL

管理员身份运行PowerShell:

停止WSL: wsl --shutdown

启动WSL: wsl

之后就可以在 wsl 中使用 localhost 的方式来访问宿主机上的服务了。

curl http://localhost

其他命令

在WSL中查看宿主机的IP:cat /etc/resolv.conf,输出中 nameserver 后面的地址即是宿主机的IP地址。

上一篇: 17寸电脑显示器分辨率多少最合适 如何调整电脑屏幕分辨率
下一篇: 如何给充电宝充电?全面指南

相关推荐

送朋友新婚礼物比较好是什么
【问问神父】365
孊密的意思
《呓语小镇》:温馨像素世界中的家园守护与秘密探索
轻松活泼欢快的背景音乐BGM
【问问神父】365