サイト群の IP に中国本土からアクセスできないと、海外からは問題なく見えていても、その IP 上のすべてのサイトが中国の訪問者と検索エンジンから見えなくなります。IP に到達できなくなる原因には、以前の利用者の履歴、IP 帯全体のフィルタリング、特定のポートやドメインのブロック、通信事業者の経路の問題などがあります。この記事では、中国国内の複数の拠点から疎通を確認する方法、これらのケースの見分け方、IP ブロック全体の一括チェック、問題のある IP からサイトをすばやく移す方法を解説します。
オンラインの多拠点テストサービス(例:ITDOG、17CE、Boce、Chinaz)では、中国電信(China Telecom)、中国聯通(China Unicom)、中国移動(China Mobile)の数十拠点から ping、TCP ポート、HTTP のテストを実行できます。問題ごとに、次の 3 つのテストを行います。
| 観察される状況 | 考えられる原因 |
|---|---|
| 中国のすべての拠点で ping と TCP が失敗し、海外の拠点では成功する | 中国本土からその IP に到達できない |
| ping は通るが、TCP 80/443 がタイムアウトまたはリセットされる | この IP の特定ポートがブロックされている、またはサーバー側のファイアウォールの問題 |
| IP とポートは正常だが、ドメインでは失敗する、または無関係な IP に解決される | IP ではなくドメインの問題(DNS 汚染またはホスト名によるフィルタリング) |
| 1 つの通信事業者だけ失敗する(例:中国移動) | その事業者、またはその事業者までの経路でのルーティングの問題 |
| 日中は正常だが、夜間にパケットロスが多い | ブロックではなく、国際回線の混雑 |
パブリックリゾルバーと中国本土のリゾルバーの応答を比較します。問い合わせを何度か繰り返し、中国のリゾルバーがサーバーとまったく関係のないアドレスを返す場合はドメインが影響を受けているため、サイトを別の 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
/24 のすべての IP を一度にチェックするには、中国本土にあるマシン(低価格のクラウドサーバーやオフィスのパソコンで十分です)で小さなスクリプトを実行します。各 IP の TCP 80 と 443 をテストし、失敗したものを一覧表示します。
# 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 とを区別できます。
経路の問題は、プロバイダー側で解決できることがよくあります。次の情報を集めてください。
# 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 による接続トラブルシューティングを参照してください。
sites.txt を編集してデプロイスクリプトを実行)、Nginx をリロードします。テスト済みの未使用 IP のリストを用意しておけば、数分でサイトを移せます。古い IP は、しばらく時間をおいて再テストしてから再利用してください。サイトのコンテンツも見直しましょう。中国で認められていないコンテンツを含むサイトは、どの IP に移しても再び影響を受けます。
中国国内のマシンで cron を使ってステップ4の一括チェックを毎日実行し、失敗した IP のリストを自分宛てに送るか、そのマシンで Uptime Kuma を動かして主要サイトを監視します(Uptime Kuma による監視を参照)。サイトを複数の /24 ブロックに分散させておけば、1 つの IP 帯で問題が起きたときの影響を抑えられます(複数 C クラスのサイト群向けサーバーを参照)。
いいえ。サーバーは稼働しており、中国からサーバーまでの経路が機能していない状態です。ステップ1〜5に沿って、原因が IP、ポート、ドメイン、通信事業者の経路のどれなのかを特定してください。
はい。サイトを載せる前に、新しい IP はすべて中国国内の拠点からテストし、合格したものだけをデプロイ用のリストに入れてください。
複数拠点でのテスト結果と、ステップ5の mtr の出力を添えてチケットを送信してください。お客様のブロックの経路を確認し、対応策をご相談します。
上記の手順で解決しない場合は、サポートチケットを送信して IMIDC の 24 時間 365 日対応テクニカルサポートへご連絡ください。サーバー IP、影響を受けた IP とドメイン、多拠点テストのスクリーンショット、mtr の結果を添えていただくと、より迅速に調査できます。