問題の説明
特定のポートを使用して ECS インスタンスに接続しようとすると、Connection timed out または Connection refused エラーで失敗します。
原因
-
ネットワークアクセスコントロールポリシーによるブロック: セキュリティグループまたはインスタンスの内部ファイアウォールが、アプリケーションに到達する前にリクエストをサイレントにドロップします。クライアントは応答を受信しないため、
Connection timed outエラーが発生します。 -
ターゲットポートがリッスンしていません: リクエストはインスタンスのオペレーティングシステムに到達しますが、ターゲットポートでリッスンしているアプリケーションはありません。OS はリクエストを拒否するため、
Connection refusedエラーが発生します。
セルフサービス トラブルシューティング ツールの使用
セルフサービスツールは、セキュリティグループの設定、インスタンスの内部ファイアウォール、ポートのリッスン状態をチェックし、診断レポートを生成します。
をクリックしてセルフサービスのトラブルシューティングページに移動し、対象のリージョンに切り替えます。
ツールで問題を特定できない場合は、次の手順に進んでください。
手動でのトラブルシューティング
接続タイムアウト
-
セキュリティグループのルールを確認し、インバウンドルールが宛先ポートへのアクセスを許可していること、および優先度の高い拒否ルールがそれを上書きしていないことを確認します。
-
ECS コンソール - インスタンス ページに移動します。インスタンス ID をクリックして、詳細ページを開きます。
-
インスタンス詳細ページで、[セキュリティグループ] タブをクリックし、セキュリティグループ ID をクリックしてその詳細ページを開きます。
-
**[インバウンドルール]** タブで、ルールを確認します :
-
拒否ルールの確認 : 優先度の高い拒否ルールがアクセスをブロックしていないかを確認します。
-
許可ルールの確認 : 送信元 IP アドレスと宛先ポートに対する許可ルールが存在することを確認します。
-
-
-
インスタンスの内部ファイアウォールを確認します :
Alibaba Cloud Linux
ECS インスタンスにログインします。
[ECS コンソール - インスタンス] に移動します。上部メニューで、目的のリージョンとリソースグループを選択します。
対象インスタンスの詳細ページに移動します。 [Connect] をクリックし、[Workbench] を選択します。 ページ上のプロンプトに従ってターミナルにログインします。
-
ファイアウォールで開いているポートを表示します :
firewall-cmd --list-all -
宛先ポートがリストにない場合は、ファイアウォールルールを追加します。
<PORT>を実際のポート番号に置き換えます。firewall-cmd --zone=public --add-port=<PORT>/tcp --permanent -
ファイアウォールをリロードして新しいルールを適用します :
firewall-cmd --reload
Ubuntu
ECS インスタンスにログインします。
[ECS コンソール - インスタンス] に移動します。上部メニューで、目的のリージョンとリソースグループを選択します。
対象インスタンスの詳細ページに移動します。 [Connect] をクリックし、[Workbench] を選択します。 ページ上のプロンプトに従ってターミナルにログインします。
-
UFW のステータスと設定済みのルールを確認します :
sudo ufw status -
宛先ポートが一覧にない場合は、ファイアウォールルールを追加します。
<PORT>を宛先ポート番号に置き換えます:sudo ufw allow <PORT>/tcp -
ファイアウォールをリロードして新しいルールを適用します :
sudo ufw reload
Windows
ECS インスタンスにログインします。
ECS コンソール - インスタンスに移動し、上部ナビゲーションバーで対象のリージョンとリソースグループを選択します。
対象インスタンスの詳細ページに移動し、[Connect] をクリックして、[Workbench] を選択します。 接続方法を [Terminal] に設定し、ユーザー名とパスワードを入力して、グラフィカルターミナルページにログインします。
-
セキュリティが強化された Windows Defender ファイアウォールを開きます :
-
タスクバーで[サーバー マネージャー]を検索して開きます。
-
サーバー マネージャーで、 を選択します。
-
-
ファイアウォールでポートを開放するための新しい受信規則を作成します :
-
ファイアウォールの状態を確認します。無効になっている場合は、これ以上の操作は必要ありません。
-
有効な場合は、左側のペインで[インバウンドルール]をクリックします。
[Windows リモート管理 - 互換モード (HTTP-In)] を見つけます。
有効になっていない場合は、右クリックして [ルールを有効化] を選択します。
-
-
ローカルクライアント (ECS インスタンスではない) からポートへの接続性を確認します :
telnet <Public IP address> <Port number>出力に
Connected to ...が含まれている場合、ポートはアクセス可能です。
接続拒否
Linux
ECS インスタンスにログインします。
[ECS コンソール - インスタンス] に移動します。上部メニューで、目的のリージョンとリソースグループを選択します。
対象インスタンスの詳細ページに移動します。 [Connect] をクリックし、[Workbench] を選択します。 ページ上のプロンプトに従ってターミナルにログインします。
-
<PORT>を実際のポート番号に置き換えて、ポートのリッスンステータスを確認します:netstat -an | grep <PORT> -
結果を確認します :
-
リッスン中:状態列に
LISTENが表示されている場合、ポートは正常にリッスンしています。重要リッスンアドレスが
127.0.0.1の場合、サービスはローカル接続のみを受け入れます。サービス設定ファイル (Nginx の場合はnginx.conf、SSH の場合はsshd_configなど) を更新し、リッスンアドレスを0.0.0.0またはインスタンスのパブリック IP アドレスに変更してください。 -
リッスンしていない: 出力が返されないか、出力に
LISTEN状態がない場合、サービスは実行されていません。サービスを起動してください。
-
Windows
ECS インスタンスにログインします。
ECS コンソール - インスタンスに移動し、上部ナビゲーションバーで対象のリージョンとリソースグループを選択します。
対象インスタンスの詳細ページに移動し、[Connect] をクリックして、[Workbench] を選択します。 接続方法を [Terminal] に設定し、ユーザー名とパスワードを入力して、グラフィカルターミナルページにログインします。
-
PowerShell でポートを確認します :
-
タスクバーで [PowerShell] を検索して開きます。
-
ポートのリスニングステータスを確認します。
<PORT>を実際のポート番号に置き換えます:netstat -ano | findstr "<PORT>" -
結果を確認します :
-
リッスン:出力に
LISTENが含まれている場合、ポートは正常にリッスンしています。リッスンアドレスが127.0.0.1の場合、サービスはローカル接続のみを受け付けます。サービス設定ファイルで、リッスンアドレスを127.0.0.1から0.0.0.0またはインスタンスのパブリック IP アドレスに変更します。 -
リッスンしていない: 出力が返されない場合、または出力に
LISTEN状態がない場合、サービスは実行されていません。サービスを起動します。
-
-