WSL 代理配置

less than 1 minute read

Published:

方法一:WSL 未处于镜像模式,设置 WSL 的环境变量。

这种情况下,打开 WSL 会提示 “wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。”

  1. 允许 7890 端口通过防火墙。CMD 执行:

    netsh advfirewall firewall add rule name="Open Port 7890" dir=in action=allow protocol=TCP localport=7890
    
  2. Clash for Windows - General - Allow LAN 选择开启。

  3. WSL 中设置环境变量。

    • 临时设置:

       export hostip=$(ip route show | grep -i default | awk '{print $3}')
       export https_proxy="http://${hostip}:7890"
       export http_proxy="http://${hostip}:7890"
      
    • 永久设置:

      打开 Shell 的配置文件(~/.bashrc~/.zshrc),在文件末尾添加以下内容:

       # Set proxy environment variables
       export hostip=$(ip route show | grep -i default | awk '{print $3}')
       export https_proxy="http://${hostip}:7890"
       export http_proxy="http://${hostip}:7890"
      
  4. 测试连接,显示 HTTP/1.1 200 OK... 则连接成功。

    curl --head --silent http://www.google.com
    

方法二: 将 WSL 切换至镜像模式

  1. 打开 WSL 的配置文件 %USERPROFILE%\.wslconfig,添加以下内容:

    [experimental]
    autoMemoryReclaim=gradual
    networkingMode=mirrored
    dnsTunneling=true
    firewall=true
    autoProxy=true
    
  2. 在 CMD 中执行 wsl --shutdown,重启 WSL。

  3. 在 WSL 中执行:

    echo $http_proxy
    echo $https_proxy
    

    可以看到与主机中的代理一致。