先に結論
接続拒否はDNSより後、HTTPより前で止まっていることが多い症状です。接続先IPとポートを固定し、利用者→CDN/LB→オリジンのどこが拒否したかを確認します。
最初の5分で接続先と拒否位置を固定する
- URL、発生時刻、利用回線、ブラウザーのエラー全文を保存する。
- FQDNが解決したIPv4/IPv6と、接続先ポート(通常80/443)を記録する。
- 外部監視、別回線、サーバー内部から同じホスト・ポートを比較する。
- Webサーバーやコンテナが対象IP・ポートで待受しているか確認する。
- FW、セキュリティグループ、LBヘルスチェック、CDNイベントを同時刻でつなぐ。
観測結果から次の確認先を決める
| 観測 | 優先候補 | 次の確認 |
|---|---|---|
| 全接続元で即時拒否 | 待受停止・誤ポート | プロセス、listen先、コンテナ公開ポート |
| 外部だけ拒否、内部は成功 | FW・SG・経路 | 送信元範囲、NACL、public route |
| IPv6だけ拒否 | AAAAとIPv6待受の不一致 | AAAA、IPv6 FW、dual-stack設定 |
| CDN経由だけ521等 | CDN→origin拒否 | origin IP、許可元、TLS mode、edge log |
| LBの一部targetだけ失敗 | target port・health check | 登録port、listen、health check path |
CDN・ロードバランサー経由では二つの接続を分ける
利用者からエッジまでが成功しても、エッジからオリジンへのTCP接続は別です。Cloudflareのログでは521がオリジンによる接続拒否を示しますが、製品や構成によってTLS失敗が接続失敗として記録されることもあります。
- DNSが現在のCDN/LBを指すことを確認する。
- エッジのrequest IDとオリジンアクセスログを時刻で突き合わせる。
- オリジンがCDN/LBの送信元とhealth checkを許可しているか確認する。
- HTTPとHTTPS、IPv4とIPv6、各targetの結果を分ける。
- 修正後は外部・エッジ・オリジンの三地点で再確認する。
避ける操作
- 原因確認前にFWやWAFを全面停止する。
- オリジンIPや管理ポートをインターネットへ公開して迂回する。
- DNS、証明書、FW、アプリを同時に変更する。
- IPv4だけの成功で、公開中のAAAAを放置する。
- 本番の秘密鍵・認証情報を外部診断サービスへ入力する。
公式情報
よくある質問
ERR_CONNECTION_REFUSEDはサーバー停止ですか?
停止だけとは限りません。宛先IPに到達したものの対象ポートで待受していない、FWが拒否した、CDNやロードバランサーからオリジンへの接続が拒否された場合にも発生します。
タイムアウトとの違いは何ですか?
refusedは接続を明示的に拒否された可能性が高く、timeoutは応答が返らない状態です。ただしCDN表示ではオリジンTLS失敗などが接続失敗としてまとめられる場合があるため、エッジとオリジンのログで確定します。
FWを停止して確認してよいですか?
本番FWの全停止は避けます。必要な送信元とポートだけを一時許可し、変更前後のルールと時刻を残して確認します。