本記事では、Linux ECS インスタンスでの TCP および UDP ポートの接続性をテストする方法について説明します。
TCP ポートの接続性のテスト
テストするポートでリスナーが実行中かどうかに基づいて、メソッドを選択します。
-
ポートでリスナーがすでに実行中の場合は、「方法1:Telnet を使用した既存のリスナーのテスト」をご参照ください。
-
ポートでリスナーが実行されていない場合は、「方法2:テスト用の一時的なリスナーの作成」をご参照ください。
方法1:Telnet を使用した既存のリスナーのテスト
-
Linux インスタンスに接続します。
詳細については、「Workbench を使用した Linux インスタンスへのログイン」をご参照ください。
-
次のコマンドを実行して、Telnet を使用してポートの接続性をテストします。
例えば、サーバー
121.11.XX.XXのポート1234をテストするには、sudo telnet 121.11.XX.XX 1234を実行します。# [$Host] をターゲットサーバーの IP アドレスに、[$Port] をテストするポート番号に置き換えます。 sudo telnet [$Host] [$Port]接続に成功すると、以下のような出力が返されます。
Connected to ...というメッセージは成功を示しますが、正確な出力は Linux ディストリビューションによって異なる場合があります。説明ポート接続性テストが失敗した場合は、ターゲットサーバーのセキュリティグループがテストポートでのインバウンドトラフィックを許可していることを確認してください。許可されていない場合は、セキュリティグループルールを追加する必要があります。詳細については、「セキュリティグループルールの追加」をご参照ください。
Trying 121.11.XX.XX... Connected to 121.11.XX.XX. Escape character is '^]'.
方法2:一時的なリスナーの作成
この方法では、サーバーとクライアントの2つのインスタンスを使用して、サーバー上のポートの接続性を検証します。
-
サーバー:一時的なリスナーを作成するインスタンス。
-
クライアント:サーバーのポートに接続して接続性を検証するインスタンス。
-
Linux インスタンスに接続します。
詳細については、「Workbench を使用した Linux インスタンスへのログイン」をご参照ください。
-
サーバーで、次のコマンドを実行して Python がインストールされているかどうかを確認し、そのバージョンを表示します。
python -V-
Python のバージョンが返された場合、Python はインストールされています。
-
Python がインストールされていない場合は、「Python 環境のデプロイ」を参照して Python をインストールしてください。
-
-
サーバーで、次のコマンドを実行して、Python の組み込み Web サーバーを使用して一時的なリスナーを作成します。
たとえば、Python 3.x を使用してポート
1234でリスナーを作成するには、sudo python3 -m http.server 1234を実行します。-
Python 2.x
# [$Port] をテストするポート番号に置き換えます。 sudo python -m SimpleHTTPServer [$Port] -
Python 3.x
# [$Port] をテストするポート番号に置き換えます。 sudo python3 -m http.server [$Port]
システムは次のような出力を返します。
Serving HTTP on 0.0.0.0 port 1234 ...説明クライアントでのテストが完了したら、
Ctrl+Cを押してプロセスを停止してください。 -
-
クライアントで、次のコマンドを実行して、Telnet を使用してサーバー上の新しいリスナーへの接続性をテストします。
たとえば、サーバー
121.11.XX.XXのポート1234をテストするには、sudo telnet 121.11.XX.XX 1234を実行します。# [$Host] をサーバーの IP アドレスに、[$Port] をテストするポート番号に置き換えます。 sudo telnet [$Host] [$Port]接続に成功すると、システムは以下のような出力を返します。
Connected to ...というメッセージは成功を示しますが、正確な出力は Linux ディストリビューションによって異なる場合があります。説明ポート接続性テストが失敗した場合は、サーバーのセキュリティグループがテストポートでのインバウンドトラフィックを許可していることを確認してください。許可されていない場合は、セキュリティグループルールを追加する必要があります。詳細については、「セキュリティグループルールの追加」をご参照ください。
Trying 121.11.XX.XX... Connected to 121.11.XX.XX. Escape character is '^]'.
UDP ポートの接続性のテスト
この方法では、サーバーとクライアントの2つのインスタンスを使用して、サーバー上のポートの接続性を検証します。
-
サーバー:UDP ポートをリッスンするインスタンス。
-
クライアント:接続性を検証するためにサーバーのポートにデータを送信するインスタンス。
-
Linux インスタンスに接続します。
詳細については、「Workbench を使用した Linux インスタンスへのログイン」をご参照ください。
-
サーバーとクライアントの両方のインスタンスで、次のコマンドを実行して nc (netcat) がインストールされているかどうかを確認します。
which ncシステムが次のような応答を返した場合、nc プログラムがインストールされていることを示します。
/usr/bin/nc説明nc (netcat) がインストールされていない場合は、ご使用のオペレーティングシステムに応じて yum や apt-get などのパッケージマネージャを使用してインストールしてください。たとえば、
sudo yum install -y ncを実行します。 -
サーバーで、次のコマンドを実行して、テストするポートでリスナーを開始します。
たとえば、ポート
3333の接続性をテストするには、sudo nc -uvlp 3333を実行します。# [$Port] をテストするポート番号に置き換えます。 sudo nc -uvlp [$Port]リスナーが開始されると、システムは次のような出力を返します。
Ncat: Version 7.92 ( https://nmap.org/ncat ) Ncat: Listening on :::3333 Ncat: Listening on 0.0.0.0:3333 -
クライアントで、次のコマンドを実行して、サーバーのテストポートに接続します。
たとえば、サーバー
111.22.XX.XXのポート3333に接続するには、sudo nc -u 111.22.XX.XX 3333を実行します。# [$Host] をサーバーの IP アドレスに、[$Port] をテストするポート番号に置き換えます。 sudo nc -u [$Host] [$Port] -
接続が確立された後、クライアントで
testなどのテスト文字列を入力します。サーバーがデータを受信した場合、ポートの接続性は正常です。説明ポート接続性テストが失敗した場合は、サーバーのセキュリティグループがテストポートでのインバウンドトラフィックを許可していることを確認してください。許可されていない場合は、セキュリティグループルールを追加する必要があります。詳細については、「セキュリティグループルールの追加」をご参照ください。
[ecs-user@ixxx ~]$ sudo nc -u 1xxx 3333 test exampleサーバーはクライアントから
testとexampleのメッセージを受信します。これにより、UDP ポート 3333 の接続性が機能していることが確認されます。サーバーでの出力例は次のとおりです:[ecs-user@ixxx ~]$ sudo nc -uvlp 3333 Ncat: Version 7.92 ( https://nmap.org/ncat ) Ncat: Listening on :::3333 Ncat: Listening on 0.0.0.0:3333 Ncat: Connection from 1xxx. test example