给wsl2 配置代理不知道为啥我做起来就这么麻烦,所以这里干脆记下所有的配置文件:
.wslconfig
[wsl2]
memory=16GB
processors=2
swap=0
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
下面用了 127.0.0.1, 我其实也没搞明白为什么可以这样干, 感觉应该是因为 networkingMode=mirrored?反正搜索到的很多教程都不起作用
.zshrc代理部分
PROXY_PORT="23458"
NO_PROXY_LIST="127.0.0.1,localhost,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"
# 函数:开启 WSL 代理
set_wsl_proxy() {
PROXY_URL="http://127.0.0.1:${PROXY_PORT}"
export HTTP_PROXY="${PROXY_URL}"
export HTTPS_PROXY="${PROXY_URL}"
export http_proxy="${PROXY_URL}"
export https_proxy="${PROXY_URL}"
export NO_PROXY="${NO_PROXY_LIST}"
export no_proxy="${NO_PROXY_LIST}"
echo "✅ WSL 代理已启用。"
echo "代理地址: ${PROXY_URL}"
}
# 函数:关闭 WSL 代理
unset_wsl_proxy() {
unset HTTP_PROXY
unset HTTPS_PROXY
unset http_proxy
unset https_proxy
unset NO_PROXY
unset no_proxy
echo "❌ WSL 代理已关闭。"
}
# 函数:测试代理连接
proxy_wsl_test() {
echo "=== 代理状态检查 ==="
if [ -z "$http_proxy" ]; then
echo "⚠️ 代理环境变量未设置 (http_proxy 为空)。请运行 'proxy_on'。"
return 1
else
echo "✅ 代理环境变量已设置: $http_proxy"
fi
# 测试代理连接到 Windows 主机(使用您验证有效的 127.0.0.1)
echo "--- 测试 Clash 服务连接 ($http_proxy) ---"
if nc -z -w 3 127.0.0.1 "${PROXY_PORT}" 2>/dev/null; then
echo "✅ 127.0.0.1:${PROXY_PORT} 连接成功 (服务正在监听)。"
else
echo "❌ 127.0.0.1:${PROXY_PORT} 连接失败 (服务未运行或转发失败)。"
return 1
fi
# 实际测试外网访问
echo "--- 实际访问外网测试 (Google) ---"
if curl -I -m 5 https://www.google.com 2>/dev/null; then
echo "✅ 代理测试成功!可以访问外网。"
else
echo "❌ 代理测试失败!无法通过代理访问外网。"
return 1
fi
}
alias proxy_on="set_wsl_proxy"
alias proxy_off="unset_wsl_proxy"
alias proxy_test="proxy_wsl_test"