站群與多 IP

站群 IP 被牆檢測:國內無法訪問的 IP 如何測試、排查與快速更換

7 個步驟 6 分鐘閱讀 73 次閱讀 0
本文目錄

一個國內無法訪問的站群 IP,會讓上面所有站點對國內訪客和搜尋引擎“隱身”,即使從海外訪問一切正常。IP 在國內無法訪問,可能是因為前任使用者留下的歷史記錄、整個 IP 段被過濾、單個埠或域名被封,或者運營商線路問題。本文介紹如何從國內多個地區測試連通性、區分這幾種情況、批次檢測整個 IP 段,以及把站點快速遷出有問題的 IP。

在國外測試無法判斷 IP 在國內是否可用。請務必從國內節點測試:使用線上多節點測試服務,或者一台位於中國大陸的小型伺服器或電腦。

步驟 1:從國內多個地區測試

線上多地測試服務(例如 ITDOG、17CE、Boce 或 Chinaz 站長工具)可以從電信、聯通、移動三網的數十個節點發起 ping、TCP 埠和 HTTP 測試。每遇到一個問題,做以下三項測試:

  • ping IP:檢測基本連通性。
  • 對 IP 的 80 和 443 埠做 TCP 測試:檢測 Web 服務能否訪問。
  • 對域名做 HTTP 測試:檢測網站本身能否開啟。

步驟 2:根據結果判斷原因

你看到的現象可能原因
國內節點 ping 和 TCP 全部失敗,海外節點正常IP 在中國大陸無法訪問(被牆)
能 ping 通,但 TCP 80/443 超時或被重置該 IP 的特定埠被封鎖,或伺服器自身防火牆有問題
IP 和埠都正常,但域名打不開或解析到無關 IP問題出在域名(DNS 汙染或按域名過濾),而不是 IP
只有某一家運營商失敗(例如移動)該運營商或通往該運營商的線路存在路由問題
白天正常,晚上丟包嚴重國際線路晚高峰擁堵,並非被牆

步驟 3:檢查域名是否存在 DNS 問題

對比公共 DNS 和國內 DNS 的解析結果,並多查詢幾次:如果國內 DNS 返回的地址與你的伺服器毫無關係,說明是域名本身受到了影響(DNS 汙染),把站點換到其他 IP 也無濟於事。

dig +short example.com A @1.1.1.1
dig +short example.com A @114.114.114.114
dig +short example.com A @223.5.5.5

步驟 4:批次檢測整個 IP 段

要一次性檢測 /24 中的每個 IP,可以在一台位於中國大陸的機器上執行一個小指令碼(一台低價雲伺服器或一台辦公電腦即可)。指令碼會測試每個 IP 的 TCP 80 和 443 埠,並列出失敗的 IP。

# ips.txt: one IP per line (generate with: for i in $(seq 2 254); do echo 203.0.113.$i; done > ips.txt)
cat > check-ips.sh <<'EOF2'
#!/bin/bash
while read -r ip; do
  r80=$(timeout 4 bash -c "</dev/tcp/$ip/80" 2>/dev/null && echo ok || echo FAIL)
  r443=$(timeout 4 bash -c "</dev/tcp/$ip/443" 2>/dev/null && echo ok || echo FAIL)
  echo "$ip 80:$r80 443:$r443"
done < ips.txt | tee result-$(date +%F).txt | grep FAIL
EOF2
chmod +x check-ips.sh && ./check-ips.sh

IP 只有在埠上有服務監聽時才會響應,所以請只對已經繫結了站點(或至少有 Nginx 預設站點)的 IP 執行此指令碼。再把結果與在國外伺服器上做的同樣測試進行對比,就能把真正的連通性問題與只是沒有執行服務的 IP 區分開來。

步驟 5:為機房收集證據

線路問題通常可以由機房修復。請收集以下資訊:

# From the server towards major Chinese resolvers (apt install mtr-tiny / dnf install mtr)
mtr -rwc 50 114.114.114.114
mtr -rwc 50 223.5.5.5

# From the machine in China towards your server
mtr -rwc 50 203.0.113.10

儲存多地測試結果的截圖,並註明測試時間。線路分析方法參見回國回程路由測試和使用 ping、tcping 和 mtr 排查網路連通性。

步驟 6:把站點遷出問題 IP

  1. 從你的 IP 段中挑選一個通過步驟 4 測試的備用 IP。
  2. 在對照表和 Nginx 配置中修改該站點的 IP(如果使用的是站群伺服器批次建站中的方案,修改 sites.txt 並執行部署指令碼即可),然後過載 Nginx。
  3. 更新域名的 A 記錄。如果預計會經常遷移站點,請提前把 TTL 調低到 300 秒。
  4. 從國內多個地區重新測試新 IP 和域名。

提前準備一份已測試、未使用的 IP 清單,就能在幾分鐘內完成遷移;舊 IP 過一段時間後重新測試,通過後再複用。同時請檢查站點內容:如果內容在中國不被允許,換到任何 IP 上都會再次受到影響。

步驟 7:持續監控

在國內的機器上用 cron 每天執行步驟 4 的批次檢測,並把失敗列表發給自己;或者在該機器上執行 Uptime Kuma 監控重點站點(參見使用 Uptime Kuma 監控)。把站點分散到多個 /24 段,可以在某個 IP 段出問題時限制影響範圍(參見多 C 段站群伺服器)。

常見問題

IP 在國外能訪問,國內卻打不開,是伺服器宕機了嗎?

不是。伺服器在正常執行,只是從國內到伺服器的路徑不通。按照步驟 1 到步驟 5 排查,判斷問題出在 IP、埠、域名還是運營商線路。

部署站點前需要先測試新 IP 嗎?

需要。每個新 IP 在放站點之前,都應先從國內多個地區測試,只把通過測試的 IP 加入部署列表。

IP 在國內無法訪問,IMIDC 能幫忙處理嗎?

請提交工單,附上多個地區的測試結果和步驟 5 中的 mtr 輸出。我們會檢查你所用 IP 段的路由情況,並與你溝通可行的方案。

如果按以上步驟操作後問題仍未解決,請提交工單聯絡 IMIDC 7×24 技術支援,並附上伺服器 IP、受影響的 IP 和域名、多地測試截圖以及 mtr 結果,方便工程師快速定位。

這篇文章有幫助嗎?

相關教程