ホーム›NETWORK / TCP

ERR_CONNECTION_REFUSEDの原因と直し方|ポート・FW・オリジンを確認

接続拒否はDNSより後、HTTPより前で止まっていることが多い症状です。接続先IPとポートを固定し、利用者→CDN/LB→オリジンのどこが拒否したかを確認します。

先に結論

接続拒否はDNSより後、HTTPより前で止まっていることが多い症状です。接続先IPとポートを固定し、利用者→CDN/LB→オリジンのどこが拒否したかを確認します。

最初の5分で接続先と拒否位置を固定する

  1. URL、発生時刻、利用回線、ブラウザーのエラー全文を保存する。
  2. FQDNが解決したIPv4/IPv6と、接続先ポート(通常80/443)を記録する。
  3. 外部監視、別回線、サーバー内部から同じホスト・ポートを比較する。
  4. Webサーバーやコンテナが対象IP・ポートで待受しているか確認する。
  5. FW、セキュリティグループ、LBヘルスチェック、CDNイベントを同時刻でつなぐ。
先に結論:名前解決に失敗しているならDNS、接続は成立して応答待ちならタイムアウト、接続後にHTTP応答があるなら該当ステータスへ進みます。

観測結果から次の確認先を決める

観測優先候補次の確認
全接続元で即時拒否待受停止・誤ポートプロセス、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失敗が接続失敗として記録されることもあります。

  1. DNSが現在のCDN/LBを指すことを確認する。
  2. エッジのrequest IDとオリジンアクセスログを時刻で突き合わせる。
  3. オリジンがCDN/LBの送信元とhealth checkを許可しているか確認する。
  4. HTTPとHTTPS、IPv4とIPv6、各targetの結果を分ける。
  5. 修正後は外部・エッジ・オリジンの三地点で再確認する。

避ける操作

  • 原因確認前にFWやWAFを全面停止する。
  • オリジンIPや管理ポートをインターネットへ公開して迂回する。
  • DNS、証明書、FW、アプリを同時に変更する。
  • IPv4だけの成功で、公開中のAAAAを放置する。
  • 本番の秘密鍵・認証情報を外部診断サービスへ入力する。

公式情報

よくある質問

ERR_CONNECTION_REFUSEDはサーバー停止ですか?

停止だけとは限りません。宛先IPに到達したものの対象ポートで待受していない、FWが拒否した、CDNやロードバランサーからオリジンへの接続が拒否された場合にも発生します。

タイムアウトとの違いは何ですか?

refusedは接続を明示的に拒否された可能性が高く、timeoutは応答が返らない状態です。ただしCDN表示ではオリジンTLS失敗などが接続失敗としてまとめられる場合があるため、エッジとオリジンのログで確定します。

FWを停止して確認してよいですか?

本番FWの全停止は避けます。必要な送信元とポートだけを一時許可し、変更前後のルールと時刻を残して確認します。