hpingでポートを指定しての疎通確認

hpingを使用すれば、対象のホストのポートを指定してpingを飛ばすことができる。
対象のホストで指定したポートが開いていて、そのポートでサービスが稼動しているか?などの確認を行うことができる非常に便利なツール。
以下は、Ubuntuで実行する場合。先ずはインストールを行う。

# aptitude install hping3

試しに、localhostの80番に対して実行してみる。

# hping3 -c 4 -S -p 80 localhost    
HPING localhost (lo 127.0.0.1): S set, 40 headers + 0 data bytes
len=44 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=32792 rtt=0.2 ms
len=44 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=SA seq=1 win=32792 rtt=0.2 ms
len=44 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=SA seq=2 win=32792 rtt=0.2 ms
len=44 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=SA seq=3 win=32792 rtt=0.1 ms

--- localhost hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.2/0.2 ms

flagsがSA なら、ポートはオープンしていて正常に疎通が取れたことを表す。
指定したオプションの意味は、-cで回数を指定、-Sでsynパケット、-pでポートの指定。

指定したポートでサービスが稼動していない場合には以下のように flagsがRA となって返って来る。
とりあえず、上記との違いを比較する為に、Apacheのサービスを停止してみて、再び80番に対してhpingしてみる。

# /etc/init.d/apache2 stop
 * Stopping web server apache2        [ OK ]

# hping3 -c 4 -S -p 80 localhost
HPING localhost (lo 127.0.0.1): S set, 40 headers + 0 data bytes
len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=RA seq=0 win=0 rtt=0.2 ms
len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=RA seq=1 win=0 rtt=0.1 ms
len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=RA seq=2 win=0 rtt=0.1 ms
len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=RA seq=3 win=0 rtt=0.1 ms

--- localhost hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.1/0.2 ms

あとはそもそもポートが開いてないと以下のような結果になる。

# hping3 -c 4 -S -p 23 chibi.name
HPING chibi.name (eth2 122.21.243.156): S set, 40 headers + 0 data bytes

--- chibi.name hping statistic ---
4 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

※上記のchibi.nameは自分の管理しているサイト


あと、単純にpingとして実行したい場合は以下のようにする(-1のオプションを付ける)。

# hping3 -1 -c 4 localhost          
HPING localhost (lo 127.0.0.1): icmp mode set, 28 headers + 0 data bytes
len=28 ip=127.0.0.1 ttl=64 id=10775 icmp_seq=0 rtt=0.5 ms
len=28 ip=127.0.0.1 ttl=64 id=10776 icmp_seq=1 rtt=0.1 ms
len=28 ip=127.0.0.1 ttl=64 id=10777 icmp_seq=2 rtt=0.3 ms
len=28 ip=127.0.0.1 ttl=64 id=10778 icmp_seq=3 rtt=0.1 ms

--- localhost hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.1/0.3/0.5 ms