尝试绑定 IP 结果一重启就回到解放前,只能是想一个其它办法来绕过,毕竟 IP 可变,但是 hostname 可以固定不变。
每次在 wsl 启动后把 ip 更新到 windows 的 etc/hosts 文件里面不就行了? 就按这个思路来。
# 拿到 wsl 的 ip 地址
$ipLine = wsl --exec ip -a a | findStr inet | findStr eth0
$wslIP = $ipLine.trim().split(" |/")[1]
echo "WSL new ip is: " $wslIP
# 写入 etc\hosts 文件中
$hostsPath = "$env:windir\System32\drivers\etc\hosts"
if($wslIP) {
    $newHosts = Get-Content $hostsPath | Foreach {if ($_ -match '^\s*([^#].*?\d{1,3}.*?wsl.*)') { $wslIP + " wsl"} else {$_}} 
    echo $newHosts
    $newHosts | Out-File $hostsPath -enc ascii
}
保存到 test.ps1 文件中运行即可。
开心。
此脚本仅提供一个思路,如果能运行是最让人开心的,如果不能需要调整一下脚本中具体的关键词,如 eth0, wsl 等等
|  |      1vone      2021-01-27 17:12:52 +08:00 通过访问 localhost 不是会自动转发吗 | 
|  |      2szq8014 OP @vone 哦,艹,原来 localhost 还给转发了。。哈哈哈哈哈哈,解决了一个不存在的问题,一直只使用 IP 的。。原来 WSL 还有魔法 | 
|  |      3CuriousBull      2021-01-27 17:29:50 +08:00 在别的地方看到设置 wsl2 图形界面设置,有使用以下语句 `export DISPLAY=$(ip route | awk '{print $3; exit}'):0` 仿照类似的句式,配合 clash,同样可以设置代理端口设置,譬如 `export https_proxy=$(ip route | awk '{print $3; exit}'):7890` | 
|  |      4szq8014 OP @CuriousBull 哈哈,你这个是反过来用 | 
|      5cymanbu      2021-01-28 17:59:04 +08:00 我是通过主动设置 ip 的方式来实现的固定 ip 地址。https://blog.csdn.net/manbu_cy/article/details/108476859 |