第一步: 凋谢windows对wsl2的防火墙

大家都晓得wsl2和wsl1不一样, wsl2基本上就是一个虚拟机, 虚构了一个linux的零碎

主机之间是有防火墙的, 当初咱们要敞开它

关上powershell7以管理员身份运行

PS C:\WINDOWS\system32>  New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

这条命令单纯凋谢了主零碎windows对wsl2的局域网拜访权限, 无毒有害

如果胜利你应该能够在 设置 -> 防火墙 -> 高级设置 -> 入站规定中看到


第一步实现

第二步: 应用魔法

没有魔法必定上不了不必想了 个别也得花点米 这里不敢细讲 我自用的是SDKDNS

第三步: 应用Clash for window软件代理

我的本来的代理软件貌似无奈代理wsl2的环境, 我最初用了Clash for window解决了, SDKDNS官网有配置这个的教程, 并给了一键配置的计划, 十分不便

如果你用的不是Clash for window, 你应该更改代理的端口号, 个别代理软件会给出这些信息, 替换掉他们

比方你的代理软件在2333端口那么第四步中的脚本的那一行就应该改一下

alias setss='export https_proxy="http://${hostip}:2333";export http_proxy="http://${hostip}:2333";export all_proxy="socks5://${hostip}:2333";'

第四步: WSL2的配置

以下办法援用自 这里

## 获取主机 IP## 主机 IP 保留在 /etc/resolv.conf 中 wsl2须要通过这个ip拜访windowsexport hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')

而后粘贴上面的脚本并运行

export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')alias setss='export https_proxy="http://${hostip}:7890";export http_proxy="http://${hostip}:7890";export all_proxy="socks5://${hostip}:7890";'alias unsetss='unset all_proxy'

下面的脚本只影响以后会话 大可不必放心会把wsl的网络搞崩 也就是你重新启动个shell这些环境都没了

如果感觉每次粘贴麻烦 能够将这脚本粘贴到用户目录下的.zshrc配置文件或bash的配置文件中

或保留为任意文件每次运行source <保留的脚本文件名>

第五步: enjoy

➜  ~ curl www.google.com<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head><meta content="&#19990;&#30028;&#20013;&#12398;&#12354;&#12425;&#12422;&#12427;&#24773;&#22577;&#12434;&#26908;&#32034;&#12377;&#12427;&#12383;&#12417;&#12398;&#12484;&#12540;&#12523;&#12434;&#25552;&#20379;&#12375;&#12390;&#12356;&#12414;&#12377;&#12290;&#12373;&#12414;&#12374;&#12414;&#12394;&#26908;&#32034;&#27231;&#33021;&#12434;&#27963;&#29992;&#12375;&#12390;&#12289;&#12362;&#25506;&#1