#!/bin/sh # 让 Tailscale 域名在 mihomo 里解析为真实 IP(绕开 fake-ip 劫持), # 否则 tailscaled 连不上控制服务器、登录时拿不到 URL。 # 该脚本在 NAS 上运行;config.yaml 归 wangjia 所有,无需 root。 # 幂等:重复执行不会重复插入。改前自动备份,并热重载生效(不重启容器)。 set -e CFG=/volume1/docker/proxy/mihomo/config.yaml echo "==> 1/4 备份配置" cp "$CFG" "$CFG.bak.tailscale" echo " 备份: $CFG.bak.tailscale" echo "==> 2/4 写入 fake-ip-filter(幂等)" python3 - "$CFG" <<'PY' import sys p = sys.argv[1] text = open(p).read() if "+.tailscale.com" in text: print(" 已存在,跳过插入") sys.exit(0) lines = text.splitlines(True) add = [ " - '+.tailscale.com'\n", " - '+.tailscale.io'\n", " - '+.tailscale-dns.com'\n", ] out, done = [], False for ln in lines: out.append(ln) if (not done) and "+.pool.ntp.org" in ln: out.extend(add) done = True if not done: print(" !! 没找到锚点 '+.pool.ntp.org',未修改,请人工检查") sys.exit(1) open(p, "w").writelines(out) print(" 已插入 3 条 tailscale 域名") PY echo "==> 3/4 热重载 mihomo" curl -s -X PUT 'http://127.0.0.1:9090/configs?force=true' \ -H 'Content-Type: application/json' \ -d '{"path":"/root/.config/mihomo/config.yaml"}' echo " reload 已请求" echo "==> 4/4 验证解析(期望是真实公网 IP,不再是 198.18.x)" sleep 1 nslookup controlplane.tailscale.com 2>&1 | tail -3 echo "==> 完成。现在回到卡住的窗口按 Ctrl+C,重新执行:" echo " sudo /var/packages/Tailscale/target/bin/tailscale up --reset --operator=wangjia"