给wsl2 配置代理不知道为啥我做起来就这么麻烦,所以这里干脆记下所有的配置文件:

  1. .wslconfig
[wsl2]
memory=16GB
processors=2
swap=0
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

下面用了 127.0.0.1, 我其实也没搞明白为什么可以这样干, 感觉应该是因为 networkingMode=mirrored?反正搜索到的很多教程都不起作用

  1. .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"