この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
EC2セキュリティグループポート通信確認
初めに
EC2を構築時にセキュリティグループをアタッチしないといけないです。今回は構築したEC2のポート疎通確認について記載します。
通信ツールをインストールしたり、ICMPを使うことで通信確認を行いますが、場合により、社内制限などツールをインストールできないこともあります。今回は、デフォルトで入っているツールを利用して通信確認する方法をご紹介します。
Test-NetConnection
確認環境(Windows 10 ,Windows Server)
PowershellのTest-NetConnectionコマンドを利用して通信確認を行います。
成功時
「TcpTestSucceeded : True」のレスポンスがあります。
PS C:\Users\Administrator> Test-NetConnection <ip address> -Port 22
ComputerName : <ip address>
RemoteAddress : <ip address>
RemotePort : 22
InterfaceAlias : xxx
SourceAddress : xxxx.xxxx.xxxx.xxxx
TcpTestSucceeded : True
失敗時
通信確認中にコンソールに緑色の「Waiting for response」がしばらく表示されます。 「TcpTestSucceeded : False」になっていることを確認します。
PS C:\Users\Administrator> Test-NetConnection <ip address> -Port 80
警告: TCP connect to (3.112.194.175 : 80) failed
ComputerName : <ip address>
RemoteAddress : <ip address>
RemotePort : 80
InterfaceAlias : xxxx
SourceAddress : xxxx.xxxx.xxxx.xxxx
PingSucceeded : True
PingReplyDetails (RTT) : 55 ms
TcpTestSucceeded : False
curl
確認環境 (Amazon Linux2,Ubuntu 20.04.1 LTS)
curlを使用してGET、POSTしたり、APIのテストをよくやると思いますが、curlを利用することでPortの通信確認もできます。
最近のLinuxには始めからcurlがインストールされていると思いますが、ない場合はaptやyumなどを使用してインストールしてください。
成功時
[Linux: ~ ]$ curl -m 5 -v telnet://<ip address>:80
* Trying <ip address>...
* TCP_NODELAY set
* Connected to <ip address> (<ip address>) port 80 (#0)
#### 「Connected」が表示され、Ctrl+Cで中止します。
失敗時
[Linux: ~ ]$ curl -m 5 -v telnet://<ip address>:80
* Trying <ip address>:80...
* TCP_NODELAY set
* Connection timed out after 5001 milliseconds
* Closing connection 0
curl: (28) Connection timed out after 5001 milliseconds
#### 5Sでタイムアウトすると設定したで5S経ったら、タイムアウトになることを確認します。
最後
他に以下のツールも通信確認に良く利用されています。
telnet, nc(netcat)
ただし、事前にインストール必要があるので、インストール方法と利用方法Googleでよいと思います。