添加学习笔记:Markdown演进与rclone代理配置问题总结
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
# rclone 同步代理配置问题总结
|
||||
|
||||
## 问题描述
|
||||
|
||||
rclone bisync 在同步时无法连接到 Google API 服务器(googleapis.com),
|
||||
导致同步失败,错误信息如下:
|
||||
|
||||
```
|
||||
CRITICAL: Failed to create file system for destination "gdrive:学习笔记":
|
||||
couldn't find root directory ID: dial tcp 142.250.204.42:443: i/o timeout
|
||||
```
|
||||
|
||||
系统使用 Clash Verge 作为代理工具,代理端口为 7897,但 rclone 无法通过
|
||||
代理访问 googleapis.com。
|
||||
|
||||
---
|
||||
|
||||
## 根本原因
|
||||
|
||||
rclone 访问 Google Drive 依赖 `googleapis.com` 这个域名,但该域名在
|
||||
Clash 的规则配置中没有被正确路由到代理节点,导致走了直连并超时。
|
||||
|
||||
同时,同步脚本中的网络检测函数 `check_network` 也在检测 googleapis.com,
|
||||
所以网络检测始终失败,触发重试逻辑,最终放弃同步。
|
||||
|
||||
---
|
||||
|
||||
## 尝试过但未成功的方法
|
||||
|
||||
### 方法一:直接用 curl 测试代理端口
|
||||
|
||||
```bash
|
||||
curl -sf --max-time 10 --proxy http://127.0.0.1:7897 https://www.googleapis.com
|
||||
```
|
||||
|
||||
**结果**:不可用
|
||||
|
||||
**原因**:Clash 规则模式下 googleapis.com 没有匹配到代理规则,走了直连。
|
||||
|
||||
---
|
||||
|
||||
### 方法二:在 Clash Verge 全局扩展覆写配置(Merge)中添加规则,策略组写为 PROXY
|
||||
|
||||
```yaml
|
||||
prepend-rules:
|
||||
- DOMAIN-SUFFIX,googleapis.com,PROXY
|
||||
```
|
||||
|
||||
**结果**:不可用
|
||||
|
||||
**原因**:配置里不存在叫 `PROXY` 的策略组,实际策略组名称是 `OK CLOUD`,
|
||||
规则匹配后找不到对应出口,流量仍然直连。
|
||||
|
||||
---
|
||||
|
||||
### 方法三:将策略组改为 `OK CLOUD` 后重新加载
|
||||
|
||||
```yaml
|
||||
prepend-rules:
|
||||
- DOMAIN-SUFFIX,googleapis.com,OK CLOUD
|
||||
```
|
||||
|
||||
**结果**:不可用
|
||||
|
||||
**原因**:googleapis.com 这个域名通过代理节点也无法访问,是域名层面的限制。
|
||||
而 google.com 和 drive.google.com 可以正常访问,说明节点对该域名有特殊限制。
|
||||
|
||||
---
|
||||
|
||||
### 方法四:设置环境变量让 rclone 走系统代理,但未修改检测函数
|
||||
|
||||
```bash
|
||||
export HTTPS_PROXY=http://127.0.0.1:7897
|
||||
~/gdrive_sync.sh
|
||||
```
|
||||
|
||||
**结果**:不可用
|
||||
|
||||
**原因**:脚本中 `check_network` 函数仍检测 `googleapis.com`,
|
||||
该域名不可达导致网络检测失败,脚本在进入 rclone 同步之前就已放弃。
|
||||
|
||||
---
|
||||
|
||||
## 最终解决方案
|
||||
|
||||
修改同步脚本,做两处调整:
|
||||
|
||||
**1. 在配置区加入代理环境变量:**
|
||||
|
||||
```bash
|
||||
export HTTPS_PROXY="http://127.0.0.1:7897"
|
||||
export HTTP_PROXY="http://127.0.0.1:7897"
|
||||
```
|
||||
|
||||
**2. 将 `check_network` 的检测目标改为 `drive.google.com`:**
|
||||
|
||||
```bash
|
||||
curl -sf --max-time 10 --proxy "$HTTPS_PROXY" https://drive.google.com > /dev/null 2>&1
|
||||
```
|
||||
|
||||
**原因**:`drive.google.com` 可以通过代理正常访问,用它作为网络检测目标更可靠。
|
||||
rclone 通过代理访问 Google Drive API 也能成功,说明 googleapis.com
|
||||
仅在直接 curl 测试时不可达,rclone 内部的请求路径略有不同。
|
||||
|
||||
---
|
||||
|
||||
## 关键教训
|
||||
|
||||
| 问题 | 教训 |
|
||||
|------|------|
|
||||
| 策略组名称写错 | Clash 规则中策略组名称必须与配置完全一致,不能用通用名如 `PROXY` |
|
||||
| 网络检测域名选择不当 | 检测域名应选择实际可达且与业务相关的域名,而非 API 端点 |
|
||||
| googleapis.com 不可直接访问 | 应以 drive.google.com 等用户端域名作为连通性判断依据 |
|
||||
|
||||
---
|
||||
|
||||
*记录日期:2026-05-07*
|
||||
Reference in New Issue
Block a user