众所周知,WSL每次运行的时候都会被虚拟网卡自动分配新的IP

这很麻烦,因为每次连接都需要查它的IP

根据官方说法,如果你的Windows版本在18945之后,就支持通过localhost访问WSL

但是不知道为什么我一个Windows11不支持这个功能,所以还得想办法

解决方法我能想到的有三种:

  • 设定固定 IP
  • 每次启动后重设 IP
  • Windows 中自动修改host文件,使其指向WSL

前两种尝试后宣告失败,最后一个经大佬指点使用了一个Github项目成功实现

项目地址:https://github.com/shayne/go-wsl2-host

它的总体过程是创建一个服务,以一个管理员账户的名义每次自动修改host文件

下载得到一个wsl2host.exe,使用下面的语句安装(需要管理员权限)

1
wsl2host.exe install

之后会提示你给它一个管理员账户,输入账号密码即可

注意:如果你使用的是微软账户,那么会遇到麻烦,需要通过下面的方法解决(来源

点击以打开

首先随便给它一个账号,然后打开服务页面(services.msc),找到WSL2 Host并打开

使用浏览手动指定账户

注意是密码,不是PIN码

然后检查是否在运行,像下面的就是已经在运行了

1
wsl2host.exe start

之后检查host文件(C:\Windows\System32\drivers\etc\hosts),看看是不是已经成功更改

现在我这之后通过ubuntu2004.wsl就可以访问了,方便地很