一、现象 环境说明 Windows 11 WSL2 Ubuntu 20.04 VS Code 1.69.2 Clash for Windows 0.19.22 + TUN Mode 在 VS Code 中,欧博通过 Remote - WSL 打开 Ubuntu 子系统中的项目,IntelliCode 扩展无法下载模型,WakaTime 扩展无法上传统计数据。 二、排查问题Clash for Windows 保持打开状态,皇冠并使用 TUN Mode; 在 VS Code 中打开 Windows 本地项目,IntelliCode 和 WakaTime 可以正常工作; 在 Ubuntu 子系统终端中,执行 curl windows.net 和 curl wakatime.com 正常返回结果; 在 VS Code 中打开 Ubuntu 子系统的远程项目,DG游戏IntelliCode 和 WakaTime 无法正常工作; 关闭 Clash for Windows,在 VS Code 中打开 Ubuntu 子系统的远程项目,IntelliCode 和 WakaTime 正常工作; 三、猜测原因Clash for Windows + TUN Mode 对 Ubuntu 子系统中的 vscode-server 没有起到代理的作用,欧博注册但是 IntelliCode 和 WakaTime 在没有代理的情况下应该也可以正常工作,所以怀疑 vscode-server 被配置了错误的代理。 开启 Clash for Windows 之后,Windows 系统代理一般被设置为 127.0.0.1:7890,欧博代理VS Code 会继承这个代理设置,Ubuntu 子系统中的 vscode-server 应该也继承了这个代理设置。但是 Ubuntu 子系统在 127.0.0.1:7890 上并没有代理服务,导致 vscode-server 联网失败。 四、解决方法打开 VS Code 设置,并搜索 "proxy" 可以看到: VS Code 的代理设置,会从 "http_proxy" 和 "https_proxy" 环境变量中继承,所以在 Ubuntu 子系统中正确设置 "http_proxy" 和 "https_proxy" 环境变量应该可以解决问题。 在 Ubuntu 子系统的 ~/.bashrc 文件末尾加上下面代码: # 获取 Host IP WINDOWS_IP=$(ip route | grep default | awk '{print $3}') PROXY_HTTP="http://${WINDOWS_IP}:7890" # 设置环境变量 export http_proxy="${PROXY_HTTP}" export https_proxy="${PROXY_HTTP}"重新在 VS Code 中打开 Ubuntu 子系统的远程项目,发现 IntelliCode 和 WakaTime 仍然无法正常工作,经排除发现 Windows 防火墙阻止了 Ubuntu 子系统访问 Host IP。 在 Windows 防火墙中增加一条规则: New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow另外,Clash for Windows 需要启用 Allow LAN。 至此,问题解决。 (责任编辑:) |