对话笔记直发:GCP 网络排查与修复报告 2026-08-30。分类:AI工程。

GCP 网络排查与修复报告

日期:2026-08-30 | 机器:gcp(free-tier-vm,Debian 12,us-west1-a,公网 你的服务器IP(已脱敏),SSH root@2255) 结论先行:根因 = 机器上常驻的 dae 分流代理(eBPF)把 Tailscale 流量与 DNS 劫持到不稳定的代理节点。暂停 dae 完成入网(gcp = tailnet内网IP(已脱敏)),验收全绿。dae 配置未做任何改动。


1. 现象与时间线

时间(+0800)事件
19:30Plan A P1 阶段,gcp 在线安装 Tailscale 失败:Could not resolve host: pkgs.tailscale.com,apt 部分索引下载失败
19:35诊断:getent hosts 对 debian.org / google.com / pkgs.tailscale.com 全部失败;resolvectl query 却能查到部分记录
19:40绕过方案成功:从 aws 的 apt 缓存取 .deb 经 WSL 传入,dpkg -i 安装 tailscale 1.102.3 完成
19:47tailscale up 挂死。journalctl:bootstrapDNS(...derp12...) error: EOF、failed to resolve "controlplane.tailscale.com": no DNS fallback candidates remain
19:50连通性采样:TCP 443 → 1.1.1.1 ✅ / 142.250.x(Google) ✅;TCP 443 → 你的服务器IP(已脱敏)(pkgs) ❌ / 你的服务器IP(已脱敏)(controlplane A) ❌;UDP 53 → 8.8.8.8 ❌;DoH(1.1.1.1) ❌。当时误判为”DNS 污染 + SNI 拦截”(写入初版 inventory)
(侧聊排查)复测发现同一批 IP 从 BLOCKED 变 OPEN——故障会自己好/坏 → 排除静态防火墙,指向”看心情放行的中间人”;网卡列表发现 dae0@if18
(侧聊排查)实锤:systemctl stop dae → DNS 瞬间恢复 → tailscale up 一次成功 → systemctl start dae,登录态保持

2. 排查推理链(三个假设的推翻与确认)

假设检验方法结果
① DNS 被污染(返回假 IP)从干净网络(aws 首尔)解析同一批域名对照gcp 与 aws 得到的 IP 一致(controlplane IPv6 完全相同)→ 记录是真的,排除
② GCP 出站防火墙按段拦截对 6 个不同家的 IP 打 TCP 443 地图8.8.8.8/1.0.0.1/AWS(216.128.x)/CloudFront(143.204.x)/GCP-LB 全 OPEN(初测曾 BLOCKED)→ 规则不静态,排除
③ 机器上有”会变卦的中间人”(代理)网卡列表抓到 dae0@if18;确认 /usr/local/bin/dae 自 6 月 13 日常驻,配置 /usr/local/etc/dae/config.dae 中 0 条 tailscale 直连规则✅ 实锤。停止 dae 后 DNS 立刻恢复、入网一次成功,反证闭环

3. 根因

dae(daeuniverse 的 eBPF 透明分流代理)自 2026-06-13 起常驻本机,其路由规则未对 tailscale.com / ts.net / tailnet内网IP(已脱敏)/10 做直连放行,导致:

  1. DNS 被劫持/不稳:dae 接管 UDP 53,部分域名解析随机失败(getent 全挂、resolvectl 时好时坏、UDP→8.8.8.8 被拦、DoH 失败);
  2. Tailscale 控制面/DERP 流量被分到代理节点:节点健康时通,节点抖动时就断——这正是”同一 IP 一小时内 BLOCKED→OPEN”的原因。

为什么之前查不到:dae 走内核 eBPF 劫持,iptables/nft ruleset 里零痕迹(无 REDIRECT/TPROXY/MARK);且排查 grep 的关键字(warp/wire/clash/sing/xray/v2ray/tun/proxy)不含 “dae”,dae0 网卡名在第一轮 ip link 输出里被淹没。教训记录在第 7 节。

4. 已执行的处置

#动作说明
1systemctl stop dae(暂停,未改配置)腾出干净网络窗口;约 1 分钟内其他服务代理连接闪断,属预期
2tailscale up --authkey=<单机钥匙> --hostname=gcp --accept-dns=false一次成功,gcp = tailnet内网IP(已脱敏)
3systemctl start dae恢复原有代理链路,登录态保持
4API 关闭 gcp 设备 key 过期id=2073516613890573
5ACL 追加放行feng-1 与 tx-tencent → tailnet内网IP(已脱敏) : tcp/2255 + icmp(现共 11 grants;备份 /root/acl-current-20260830.json)
6补发 AI 公钥到 gcp rootaiops-wsl + aiops-mindfs 双 key(改动前备份 authorized_keys.bak-20260830)
7fail2ban 加 ignoreip = 127.0.0.1/8 tailnet内网IP(已脱敏)/10防私网侧 AI 误封(备份 /root/jail.local.bak-20260830)

5. 验收结果(全绿)

WSL(默认钥匙) → root@`tailnet内网IP(已脱敏)`:2255   → OK:free-tier-vm        ✅
WSL(aiops-wsl) → root@`tailnet内网IP(已脱敏)`:2255  → root@free-tier-vm      ✅
tx(mindfs+aiops-mindfs) → gcp:2255          → root@free-tier-vm      ✅(手机 MindFS 路径打通)
dae 重启后 tailscale 登录态                  → `tailnet内网IP(已脱敏)` 保持    ✅

入网进度:5/6(yun1 / aws / rabisu / rabisu-1 / gcp ✅;仅剩 yun 等用户提权)。

6. 遗留风险与永久修复建议(待用户批准)

风险:dae 已恢复运行,Tailscale 的 WireGuard(UDP 41641) 与 DERP(TCP 443) 流量重新归它管辖。当前链路正常,但其代理节点抖动时,gcp 的私网链路可能再次时断时续。

建议的永久修复(改 /usr/local/etc/dae/config.dae,routing 段靠前位置加两行直连规则):

pname(tailscaled) -> direct
dip(`tailnet内网IP(已脱敏)`/10) -> direct

操作方式:备份 → 编辑 → systemctl reload dae 平滑重载(不中断既有代理)。因 dae 是用户代理体系的地盘,未获批准不动,一句话即执行。

7. 经验教训

  1. eBPF 代理在传统排查里是隐形的:iptables-save / nft list ruleset 均无痕迹,必须看 ip link 里的虚拟网卡(dae0/weg0/tun0 等)+ systemctl list-units 全量核对;
  2. grep 关键字要包含工具本身的名字:本轮 grep 漏掉 “dae”;另 grep 模式 sing 误命中 cron 的 “processing” 字样——宽泛模式会产生假信号;
  3. “时好时坏”是代理链路的指纹:静态防火墙不会让同一 IP 一小时内 BLOCKED→OPEN;遇到间歇性故障优先测”暂停可疑中间层”做 A/B;
  4. 跨机对照解析是真伪 DNS 的最快裁判:从一台干净机器解析同样域名一比即知。

8. 附录:关键证据命令

# 根因确认
systemctl status dae                       # active, enabled, since Jun 13
ps aux | grep [d]ae                        # /usr/local/bin/dae run -c /usr/local/etc/dae/config.dae
grep -c "tailscale" /usr/local/etc/dae/config.dae   # 0 —— 无直连规则
ip -br link                                # dae0@if18 UP
 
# 决定性 A/B 实验
systemctl stop dae && getent ahostsv4 controlplane.tailscale.com   # 立刻返回 `你的服务器IP(已脱敏)`(真实 IP)
tailscale up --authkey=$(cat /tmp/.tskey) --hostname=gcp --accept-dns=false
systemctl start dae
 
# 真实 IP 对照(干净网络 aws)
getent ahostsv4 controlplane.tailscale.com # `你的服务器IP(已脱敏)`(与 gcp 所得同段,均为真实记录)

待同步文档:docs/server-inventory.yaml/md(gcp 改”已入网”)、/mnt/vps/gcp/AGENTS.md(替换”未入网”段)、docs/execution-log.md(本报告条目)——待用户指示后执行。



相关: 00-索引-AI工程索引 8.21 Open WRT OpenClash中cloudflared隧道修复记录