WSL配置Proxy代理引导
前言
在三番五次被wsl
的proxy
问题折腾的心态爆炸,并重装了好几次系统以后,总算理清楚了WSL
如果想要搭配windowns
上的clash for windows
的正确使用方法。把之前无论是需要脚本还是各种复杂操作的博客都删了,在这里记录一个完全不需要任何脚本,也不需要额外配置防火墙的合理方案。
工具环境
WSL 2 ArchLinux
(理论上来说其他发行版应该相同)Windows 11
(win10应该同理)Clash For Windows
Clash的配置
改方案为
WSL
继承System Proxy
来达到代理上网的目的,使用TUN Mode
直接用就行,不需要额外设置
正常配置好
Clash For Windows
,并且启用Allow LAN
的设置在
允许应用或功能通过 Windows Defender防火墙
中寻找是否有clash-win64.exe
的规则配置,注意不是 Clash For Windows ,CFW
本身只是clash
的一个前端,在启动CFW
的时候有概率防火墙只添加CFW
本身,而不添加作为核心的clash
的防火墙规则,这个时候则需要我们手动修改如果已经有了
clash-win64.exe
的规则,则只需要配置专有和公共网络同时允许即可。如果没有clash-win64.exe
的规则,可以通过下方的允许其他应用
手动添加规则,具体clash
核心文件的路径可以通过任务管理器后台或Clash for Windows\resources\static\files\win\x64\clash-win64.exe
类似的路径查询到。添加规则的时候同时允许专用和公共即可
之前经常折腾好了防火墙但过了三四个月或者一段时间后
wsl
和windows
之间就因为防火墙断开,但总找不到原因,现在想想很有可能是当时clash for windows
升级安装的时候规则被覆盖或路径变化导致的。WSL2的网络对Windows来说也是一个Public的公开网络,在设置了单独程序允许通信之后,虽然wsl
有可能无法ping
通windows
的主机,但正常访问clash
的代理端口是没有问题的
WSL的配置
到这里为止防火墙的问题就解决了,只需要通过合理的方法配置好WSL
下的代理变量就可以正常使用。其中主机名.local
这个域名是会直接在wsl
内映射到作为dns
服务器的宿主机上,因此并不需要写额外的脚本来添加映射
较为简单的方法即通过zsh
终端下oh my zsh
+ zsh-proxy 插件,通过设置proxy
来实现全局基本功能的代理配置,而在config_proxy
步骤中的代理IP填入类似Zephyrus.local:7890
格式的地址即可。
Zephyrus为我Windows的设备名,可在Windows设置中重命名,一般来说默认设置应该为类似
DESKTOP-XXXX.local:7890
,修改和查看的方法可通过搜索引擎自己解决
通过以上方式配置后的WSL
就可以正常通过Windows
上的Clash
代理了。每次WSL
出网络问题总是感觉莫名其妙没头绪,之前也试过通过New-NetFireWallRule
一类的方法放行防火墙,但都不是很好用或者后面偶尔突然就出问题,现在总算弄清楚了原因而且能很舒服的使用win
里面的代理了。