#!/bin/bash # 能不能让 cloudflared 连更近的 Cloudflare 边缘? # # 现状:它连的是 198.41.x.x,日志显示落地在 lax01/sjc07(美西)。 # 从国内 4G 到美西,丢包 40%,握手经常超时。 # 如果能连香港/新加坡/日本,延迟和丢包都会好很多。 set -u echo "===== 1. cloudflared 支持哪些边缘相关参数 =====" cloudflared tunnel run --help 2>&1 | grep -iE 'edge|region|protocol|address' \ | sed 's/^/ /' echo echo " --- 顶层参数 ---" cloudflared tunnel --help 2>&1 | grep -iE 'edge|region' | sed 's/^/ /' echo echo "===== 2. argotunnel 区域域名解析出哪些 IP =====" for host in region1.v2.argotunnel.com region2.v2.argotunnel.com; do echo " $host:" getent ahostsv4 "$host" 2>/dev/null | awk '{print $1}' | sort -u \ | sed 's/^/ /' done echo echo "===== 3. 到这些 IP 的 TCP 7844 延迟(各测 3 次)=====" for ip in $(getent ahostsv4 region1.v2.argotunnel.com 2>/dev/null \ | awk '{print $1}' | sort -u | head -4); do total=0; ok=0 for i in 1 2 3; do t=$(timeout 6 bash -c "exec 3<>/dev/tcp/$ip/7844" 2>/dev/null \ && echo ok || echo fail) [ "$t" = "ok" ] && ok=$((ok+1)) done printf " %-18s 7844 通 %s/3\n" "$ip" "$ok" done echo echo "===== 4. 这些 IP 的 ICMP 延迟 =====" for ip in $(getent ahostsv4 region1.v2.argotunnel.com 2>/dev/null \ | awk '{print $1}' | sort -u | head -3); do r=$(ping -c 3 -W 2 "$ip" 2>/dev/null | tail -1) printf " %-18s %s\n" "$ip" "$r" done echo echo "===== 5. 本机出口 IP / 运营商 =====" curl -s --max-time 8 https://1.1.1.1/cdn-cgi/trace 2>/dev/null \ | grep -E '^(ip|loc|colo)=' | sed 's/^/ /' echo echo " 到 Cloudflare 的落地 colo(上面 colo= 就是,如果是 LAX/SJC 说明被路由到美西)" echo echo "===== 6. 试几个 Cloudflare 常用 anycast IP 的 7844 =====" for ip in 198.41.192.167 198.41.200.13 198.41.192.7 162.159.192.1 172.64.155.1; do ok=0 for i in 1 2; do timeout 5 bash -c "exec 3<>/dev/tcp/$ip/7844" 2>/dev/null \ && ok=$((ok+1)) done printf " %-18s 7844 通 %s/2\n" "$ip" "$ok" done