WSL2 配合 Clash 使用的方案
解决 WSL 怎么使用 Clash 翻墙的问题
WSL2 配合 Clash 的代理方案
WSL2 不能像 WSL 一样直接使用 127.0.0.1:7890
这样的语句实现代理设置,因为 WSL2 是一台独立的虚拟机,所以 WSL2 想要实现代理和一台单独的设备想要用你 PC 的代理原理是一样的。通过本机暴露的 IP 地址加上端口号来设置。
网上有现成的脚本:
#!/bin/bash
host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export ALL_PROXY="http://$host_ip:7890"
这个不能像 Powershell 的函数一样直接调用,而且我试了几次都不行。查到了另外一个解决方案:
export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
export https_proxy="http://${hostip}:7890"
export http_proxy="http://${hostip}:7890"
export all_proxy="sock5://${hostip}:7891"
比上一个脚本更加详细一些。
嫌麻烦直接看这里
我的思路是想要放在 .zshrc
文件里,直接通过命令开启关闭。查了一下“怎么设置 zsh 的网络代理”,结合刚才的脚本,最终方案是:
0:开启 Clash for Windows 的 Allow Wlan
开关,允许局域网设备访问代理。
-
在
.zshrc
文件里增加如下语句:proxy () { export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*') export https_proxy="http://${hostip}:7890" export http_proxy="http://${hostip}:7890" export all_proxy="sock5://${hostip}:7891" echo "HTTP Proxy on: ${hostip}" } noproxy () { unset http_proxy unset https_proxy unset all_proxy echo "HTTP Proxy off" }
-
刷新 zsh 环境。
source ~/.zshrc
-
通过执行
proxy
和noproxy
来开关代理。可行。
有问题看这里
-
检查是否在 Clash 中打开了
Allow Wlan
。 -
检查 Clash 端口是否是
7890
。 -
搜索
防火墙设置
,检查是否允许 Clash for Windows 在所有网络上访问,两个小箭头都勾选即可。 -
必要时可以关闭 WSL2 环境重新打开试试。
希望可以帮到其他人。
Last modified on 2021-02-20