こんにちは、Aireです。
hping3は任意のTCP/IPパケットを送信し、ターゲットからの応答をpingのように表示できるネットワークツール(コマンド)です。
今回はこのhping3を使用して、ログイン中のLinuxサーバがインターネットに接続されているか確認する方法を紹介します。
基本的にこの手の確認はpingが使えれば十分なのですが、環境の都合上、pingが通らない(ICMP通信ができない)ケースがあり、代替手段としてhping3を使用しましたので、使い方を備忘録として残しておきます。
検証環境
今回は以下のLinux環境を使用し、hping3を試しました。
- OS:Red Hat Enterprise Linux release 8.2 (Ootpa)(cat /etc/redhat-release)
- Kernel:4.18.0-193.75.1.el8_2.x86_64(uname -r)
hping3をインストールする
hping3のインストール手順を記載します。大まかな流れとしては、はじめにEPELリポジトリをインストール後、リポジトリからhping3のインストールを行います。
- 「dnf install」コマンドを実行し、LinuxサーバにEPELリポジトリをインストールします。
実行方法
$ dnf –y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ dnf –y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm Last metadata expiration check: 0:42:42 ago on Sat Nov 26 13:36:03 2022. epel-release-latest-8.noarch.rpm 28 kB/s | 24 kB 00:00 Dependencies resolved. ======================================================================================================= Package Architecture Version Repository Size ======================================================================================================= Installing: epel-release noarch 8-18.el8 @commandline 24 k (…途中省略…) Installed: epel-release-8-18.el8.noarch Complete! |
- 「dnf update」コマンドを実行し、システムを更新します。
実行方法
$ dnf –y update
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ dnf –y update Extra Packages for Enterprise Linux 8 - x86_64 12 MB/s | 13 MB 00:01 Last metadata expiration check: 0:00:04 ago on Sat Nov 26 14:20:31 2022. Dependencies resolved. ======================================================================================================= Package Arch Version Repository Size ======================================================================================================= Installing: kernel x86_64 4.18.0-193.91.1.el8_2 rhel-8-for-x86_64-baseos-eus-rhui-rpms 2.8 M kernel-core x86_64 4.18.0-193.91.1.el8_2 rhel-8-for-x86_64-baseos-eus-rhui-rpms 28 M kernel-modules x86_64 4.18.0-193.91.1.el8_2 rhel-8-for-x86_64-baseos-eus-rhui-rpms 24 M Upgrading: bind-export-libs x86_64 32:9.11.13-6.el8_2.4 rhel-8-for-x86_64-baseos-eus-rhui-rpms 1.1 M bind-libs x86_64 32:9.11.13-6.el8_2.4 rhel-8-for-x86_64-appstream-eus-rhui-rpms 172 k (…途中省略…) Complete! |
- 以下のコマンドを実行し、LinuxサーバにEPELリポジトリがインストールされたことを確認します。
実行方法
$ rpm -qa | grep -i epel
実行例
1 2 |
$ sudo rpm -qa | grep -i epel epel-release-8-18.el8.noarch |
- 「dnf install」コマンドを実行し、EPELリポジトリからhping3ソフトウェアパッケージをインストールします。
実行方法
$ dnf -y –enablerepo=”epel” install hping3
実行例
1 2 3 4 5 6 7 8 9 10 |
$ dnf -y --enablerepo="epel" install hping3 Last metadata expiration check: 0:05:23 ago on Sat Nov 26 14:20:31 2022. Dependencies resolved. (…途中省略…) Installed: hping3-0.0.20051105-33.el8.x86_64 tcl-1:8.6.8-2.el8.x86_64 Complete! |
hping3を使用してインターネット接続を確認する
ここではhping3の簡単な使い方を紹介します。詳細は「man hping3」または「hping3 –help」を確認してください。
以下の例では、yahoo.co.jpの443番ポート(-p 443)にSYNパケット(-S)を4回(-c 4)送信し、いずれも応答が返ってきています。(SYNパケットは、TCPで接続を確立する際に送信するパケットのことです)
1 2 3 4 5 6 7 8 9 10 |
$ hping3 -S -p 443 -c 4 yahoo.co.jp HPING yahoo.co.jp (eth0 183.79.219.252): S set, 40 headers + 0 data bytes len=46 ip=183.79.219.252 ttl=48 DF id=0 sport=443 flags=SA seq=0 win=29200 rtt=9.8 ms len=46 ip=183.79.219.252 ttl=48 DF id=0 sport=443 flags=SA seq=1 win=29200 rtt=9.7 ms len=46 ip=183.79.219.252 ttl=49 DF id=0 sport=443 flags=SA seq=2 win=29200 rtt=9.7 ms len=46 ip=183.79.219.252 ttl=49 DF id=0 sport=443 flags=SA seq=3 win=29200 rtt=11.4 ms --- yahoo.co.jp hping statistic --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 9.7/10.2/11.4 ms |
以下の例では、タイムスタンプオプション(–tcp-timestamp)を追加し、GoogleのパブリックDNSサービス(8.8.8.8)の53番ポートにSYNパケットを1回送信し、いずれも応答が返ってきています。
1 2 3 4 5 6 7 8 9 |
$ hping3 -S -p 53 -c 1 --tcp-timestamp 8.8.8.8 HPING 8.8.8.8 (eth0 8.8.8.8): S set, 40 headers + 0 data bytes len=56 ip=8.8.8.8 ttl=56 DF id=0 sport=53 flags=SA seq=0 win=65535 rtt=3.5 ms TCP timestamp: tcpts=3441452558 --- 8.8.8.8 hping statistic --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 3.5/3.5/3.5 ms |
以下の例では、GoogleのパブリックDNSサービスの53番ポートにSYNパケットを3回、5秒のインターバル(-i 5)をおいて送信し、いずれも応答が返ってきています。
1 2 3 4 5 6 7 8 9 |
$ hping3 -S -p 53 -c 3 -i 5 8.8.8.8 HPING 8.8.8.8 (eth0 8.8.8.8): S set, 40 headers + 0 data bytes len=46 ip=8.8.8.8 ttl=120 DF id=0 sport=53 flags=SA seq=0 win=65535 rtt=3.9 ms len=46 ip=8.8.8.8 ttl=56 DF id=0 sport=53 flags=SA seq=1 win=65535 rtt=1.8 ms len=46 ip=8.8.8.8 ttl=56 DF id=0 sport=53 flags=SA seq=2 win=65535 rtt=3.7 ms --- 8.8.8.8 hping statistic --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 1.8/3.1/3.9 ms |
以上、ここまで。