技術空間

Linux

telnetやcurlでポートが開放されているか確認


TOP > Linux > telnetやcurlでポートが開放されているか確認



■telnetで接続確認

他のサーバとなんらかの通信を行う場合、ファイアウォールによって接続が遮断されているか確認することがよくある。 この際使用するのがtelnetである。tenetによって、ポートがオープンになっているかの確認を実施する。コマンドは以下のとおり。(windowsで実行する場合も同じ構文)

telnet {ホスト名もしくはIPアドレス} {ポート番号}
サンプル
$ telnet amateras 80
Trying 10.18.245.134...
Connected to amateras. <- 接続成功
Escape character is '^]'.
                       <- プロンプトがオープン状態になる。CTRL + "]" を押下すると抜けられる
telnet> quit <- 最後にquitで終了
Connection closed

ちなみにファイアウォールでポートが開放されていない場合、以下のようにタイムアウトになる。

エラーの場合1
$ telnet amateras 80
Trying 10.18.245.134...
telnet: connect to address 10.18.245.134: Connection timed out<- 接続タイムアウト

ポートが開放されているが、サービスが起動していない場合は、Connection refusedとなる。

エラーの場合2
$ telnet amateras 80
Trying 10.18.245.134...
telnet: connect to address 10.18.245.134: Connection refused<- 接続拒否
■curlで接続確認

curlコマンドでも同じように接続確認が可能。telnetがインストールされてない場合にも使えるので便利。コマンド構文は以下のとおり。

curl -v telnet://{ホスト名もしくはIPアドレス}:{ポート番号}
サンプル
$ curl -v telnet://amateras:80
* About to connect() to amateras port 80 (#0)
*   Trying 10.18.245.134... connected <- 接続成功
* Connected to amateras (10.18.245.134) port 80 (#0)
                     <- プロンプトがオープン状態になる。CTRL + "]" を押下すると抜けられる

ファイアウォールでポートが開放されていない場合、タイムアウトになる。

エラーの場合1
$ curl -v telnet://amateras:80
* About to connect() to amateras port 80 (#0)
*   Trying 10.18.245.134... Connection timed out <- 接続タイムアウト
* couldn't connect to host
* Closing connection #0
curl: (7) couldn't connect to host

ポートが開放されているが、サービスが起動していない場合は、Connection refusedとなる。

エラーの場合2
$ curl -v telnet://amateras:80
* About to connect() to amateras port 80 (#0)
*   Trying 10.18.245.134... Connection refused <- 接続拒否
* couldn't connect to host
* Closing connection #0
curl: (7) couldn't connect to host
■Windows PowerShellで接続確認

Linuxではないが、WindowsのPowerShellでも接続確認ができる。やや面倒だが、こちらもtelnetが使えない場合に代替策として利用できる。

サンプル
$tc = New-Object System.Net.Sockets.TcpClient
$tc.connect("amateras", 80)
$tc.connected
True  <- 接続成功(接続失敗の場合はFalseになる)
$tc.close()


TOP > Linux > telnetやcurlでポートが開放されているか確認

Tweet ̃Gg[͂ĂȃubN}[Nɒlj
技術空間