複数のホストに対する疎通確認を効率的に実施できるコマンドラインツール
- fping -
fpingは、標準のpingコマンドを大幅に拡張したネットワーク診断ツールです。複数のホストを効率的にスキャンできるほか、CIDR表記の指定、出力結果の絞り込み、ファイル入力にも対応しており、実務を想定した機能が標準で備わっています。
本記事では、fpingとpingの違いから始まり、インストール方法、スキャン対象の指定方法、実務でよく利用されるオプションまで網羅的に解説します。
実際のコマンド例と実行結果を交えながら解説しているので、理解しやすい構成となっています。fpingの使い方を体系的に学びたい方は、ぜひ最後までご覧ください。
fpingとは
fpingは、ネットワーク上の複数ホストに対して一括でICMP Echo Requestを送信し、疎通確認を行うコマンドラインツールです。
- 複数のホストを一括で疎通確認できる
- ホストの疎通確認(生存確認)に特化している
- ネットワーク全体のホスト死活監視に向いている
- CIDR表記によるネットワーク範囲指定が可能
- ファイルから対象ホストを読み込める
- 応答があったホスト(到達可能なホスト)のみ表示できる
- 応答がなかったホスト(到達不能なホスト)のみ表示できる
- 送信回数や送信間隔を設定可能
- 応答時間(RTT)やパケット損失率を表示できる
- スクリプトや自動化処理との相性が良い
- IPv4とIPv6の両方に対応している
- LinuxやUnix系OSで広く利用されている
1992年にRoland Schemers氏によって開発され、現在はDavid Schweikert氏が中心となってメンテナンスしています。
fpingとpingの違い
fpingとpingは、どちらもICMPプロトコルを利用した疎通確認ツールですが、設計思想や用途に大きな違いがあります。pingは、単一ホストの疎通確認という目的においては非常にシンプルで使いやすいツールです。一方、fpingは、複数ホストへの一括スキャン、CIDR表記の対応、出力のフィルタリング、ファイル入力など、実務での利用シーンを想定した機能が標準で備わっています。
| 比較項目 | fping | ping |
|---|---|---|
| 主な用途 | 複数ホストの一括疎通確認 | 単一ホストの疎通確認 |
| 対象ホスト数 | 複数台 | 1台 |
| IPレンジ指定 | 可能 | 不可 |
| 対象ホストをファイルから入力 | 可能(-fオプション) | 不可 |
| 応答ホストのみ出力 | 可能(-aオプション) | 不可 |
| 未応答ホストのみ出力 | 可能(-uオプション) | 不可 |
例えば、192.0.2.1〜192.0.2.254までのホストの稼働状況を確認したい場合、pingでは254回コマンドを実行する必要がありますが、fpingでは以下のように1回のコマンドで対象ネットワーク全体を調査できます。
$ fping -g 192.0.2.1 192.0.2.254 # 開始・終了IPアドレスを指定
or
$ fping -g 192.0.2.0/24 # CIDR形式で指定リリース履歴
fpingは1992年にRoland Schemers氏によって開発されたオープンソースのネットワーク診断ツールです。その後、多くの開発者によってメンテナンスが継続され、IPv6対応やパフォーマンス改善、各種オプションの追加が行われてきました。
| バージョン | リリース日 |
|---|---|
| 5.5 | 2026年1月1日 |
| 5.4 | 2025年8月19日 |
| 5.3 | 2025年1月3日 |
| 5.2 | 2024年4月21日 |
| 5.1 | 2022年2月7日 |
| 5.0 | 2020年8月5日 |
| 4.4 | 2020年7月25日 |
| 4.3 | 2020年7月11日 |
| 4.2 | 2019年2月20日 |
| 4.1 | 2018年9月18日 |
| 4.0 | 2017年4月24日 |
現在はGitHub上で開発が継続されており、Linuxディストリビューションの標準・追加パッケージとして広く提供されています。
fpingの誤用が招く法的リスク
対象システムの管理者から許可を得ずにfpingを実行することは、不正アクセス禁止法や情報セキュリティ関連法に抵触する可能性があります。特に注意が必要な点として、『悪意がなかった』『ツールの動作確認だった』という主張は、法的な免責事由にはなりません。攻撃意図の有無にかかわらず、無許可のスキャン行為そのものが違法となりうるのです。
fpingのインストール
fpingは主要なLinuxディストリビューションで利用可能であり、インストール方法はOSによって異なります。
Kali Linux 2026.1の場合
Kali Linuxには、多くのネットワーク調査ツールやセキュリティ診断ツールが標準搭載されており、fpingもその一つです。そのため、追加のインストール作業は不要です。

ターミナルを起動し、以下のコマンドを実行することで、インストールの有無とバージョンを確認できます。
$ fping -v
fping: Version 5.1バージョン情報が表示されれば、正常にインストールされています。何らかの理由で削除されている場合は、APTパッケージマネージャから再インストールできます。後述のUbuntuと同様にapt installでインストールしてください。
Ubuntu 26.04 LTSの場合
2026年6月現在、最新バージョンであるUbuntu 26.04 LTSにおいて、Desktop版、Server版ともにインストールされていません。そのため、APTパッケージマネージャを使用してインストールします。
パッケージ情報を最新化する
インストール前に、パッケージリストを最新の状態に更新します。
$ sudo apt updateパッケージ情報を確認する
$ apt show fping
Package: fping
Version: 5.1-1build1
Priority: optional
Section: universe/net
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Axel Beckert <abe@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 79.9 kB
Depends: libcap2-bin, netbase, libc6 (>= 2.38)
Enhances: netdata (>= 1.5)
Homepage: https://www.fping.org/
Download-Size: 30.4 kB
APT-Sources: http://archive.ubuntu.com/ubuntu resolute/universe amd64 Packages
Description: sends ICMP ECHO_REQUEST packets to network hosts
fping is a ping like program which uses the Internet Control Message Protocol
(ICMP) echo request to determine if a target host is responding. fping
differs from ping in that you can specify any number of targets on the command
line, or specify a file containing the lists of targets to ping. Instead of
sending to one target until it times out or replies, fping will send out a
ping packet and move on to the next target in a round-robin fashion.インストール済みでないことを確認する
$ apt list --installed | grep fping※インストールしていない場合、何も出力されません。
fpingをインストールする
$ sudo apt install fpingインストール後の確認
# 実行ファイルのパス
$ which fping
/usr/bin/fping
# バージョン情報
$ fping -v
fping: Version 5.1実行パス、およびバージョン情報が表示されれば、インストール成功です。
本記事で使用する実行環境
本記事の実行環境
| 仮想化ソフトウェア | Oracle VirtualBox 7.2 |
|---|---|
| ゲストOS | Kali Linux 2026.1 |
| fpingバージョン | fping 5.1 |
| ネットワーク構成 | ホストオンリーネットワーク(192.168.10.0/24) |
fpingを使用した疎通確認は、必ず自身が管理権限を持つネットワーク・機器に対してのみ実施してください。本記事では、Windows上に構築した仮想環境内でfpingを実行しています。
対象ホストから応答が得られない場合、ICMP Host Unreachable from ...というメッセージが標準エラー出力(stderr)に表示されます。本記事の実行例では、実行結果を見やすくするため、これらのメッセージを省略しています。
実際にメッセージを抑制する方法は、本記事の後半の「ICMP Host Unreachable from ...」を非表示にしたいのセクションで解説しています。
fpingコマンドの実行方法
基本的な使い方
fpingの基本的なコマンド書式は、以下のとおりです。
$ fping [オプション] <ターゲット>fpingは、複数ホストの疎通状況を効率的に把握できるよう設計されています。pingと比べて出力情報が簡潔なため、実行結果を容易に確認できます。
実行結果の出力例
# 応答がある場合
192.0.2.1 is alive
# 応答がない場合
192.0.2.1 is unreachableバージョン情報
インストールされているfpingのバージョンを確認する場合は、-vオプションを使用します。(--versionでも可)
$ fping -v
fping: Version 5.1ヘルプメッセージ
利用可能なオプションやコマンド構文を確認する場合は、-hオプションを使用します。(--helpでも可)
$ fping -h
Usage: fping [options] [targets...]
Probing options:
-4, --ipv4 only ping IPv4 addresses
-6, --ipv6 only ping IPv6 addresses
-b, --size=BYTES amount of ping data to send, in bytes (default: 56)
-B, --backoff=N set exponential backoff factor to N (default: 1.5)
-c, --count=N count mode: send N pings to each target
-f, --file=FILE read list of targets from a file ( - means stdin)
-g, --generate generate target list (only if no -f specified)
(give start and end IP in the target list, or a CIDR address)
(ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24)
-H, --ttl=N set the IP TTL value (Time To Live hops)
-I, --iface=IFACE bind to a particular interface
-l, --loop loop mode: send pings forever
-m, --all use all IPs of provided hostnames (e.g. IPv4 and IPv6), use with -A
-M, --dontfrag set the Don't Fragment flag
-O, --tos=N set the type of service (tos) flag on the ICMP packets
-p, --period=MSEC interval between ping packets to one target (in ms)
(in loop and count modes, default: 1000 ms)
-r, --retry=N number of retries (default: 3)
-R, --random random packet data (to foil link data compression)
-S, --src=IP set source address
-t, --timeout=MSEC individual target initial timeout (default: 500 ms,
except with -l/-c/-C, where it's the -p period up to 2000 ms)
Output options:
-a, --alive show targets that are alive
-A, --addr show targets by address
-C, --vcount=N same as -c, report results in verbose format
-d, --rdns show targets by name (force reverse-DNS lookup)
-D, --timestamp print timestamp before each output line
-e, --elapsed show elapsed time on return packets
-i, --interval=MSEC interval between sending ping packets (default: 10 ms)
-n, --name show targets by name (reverse-DNS lookup for target IPs)
-N, --netdata output compatible for netdata (-l -Q are required)
-o, --outage show the accumulated outage time (lost packets * packet interval)
-q, --quiet quiet (don't show per-target/per-ping results)
-Q, --squiet=SECS same as -q, but add interval summary every SECS seconds
-s, --stats print final stats
-u, --unreach show targets that are unreachable
-v, --version show version
-x, --reachable=N shows if >=N hosts are reachable or notより詳しい情報が必要な場合は、man fpingコマンドも利用できます。fpingの仕様や各オプションの詳細を確認できるため、初めて利用する方は一読しておくと理解が深まります。
スキャン対象の指定方法
- 単一ホスト
- 複数ホスト
- スペース区切り
- IPレンジ
- 開始・終了IPアドレス指定
- CIDR指定
- ファイル指定
単一ホストへの疎通確認
最もシンプルな実行方法です。
$ fping 192.168.10.102
192.168.10.102 is alive複数ホストへの一括スキャン
複数ホストを指定する場合は、スペース区切りで対象を列挙します。
$ fping 192.168.10.102 192.168.10.105 192.168.10.106
192.168.10.102 is alive
192.168.10.105 is unreachable
192.168.10.106 is aliveIPレンジによる一括スキャン
サブネット全体やIPアドレス範囲を対象にスキャンする場合、-gオプションを使用します。(--generateでも可)
開始IPアドレスと終了IPアドレスを指定する
開始IPアドレスと終了IPアドレスを指定することで、その範囲内の全ホストをスキャンできます。
# 書式
$ fping -g <開始IPアドレス> <終了IPアドレス>
# 実行例
$ fping -g 192.168.10.101 192.168.10.110
192.168.10.101 is unreachable
192.168.10.102 is alive
192.168.10.103 is unreachable
192.168.10.104 is unreachable
192.168.10.105 is unreachable
192.168.10.106 is alive
192.168.10.107 is unreachable
192.168.10.108 is unreachable
192.168.10.109 is unreachable
192.168.10.110 is unreachable上記の場合、192.168.10.101から192.168.10.110までの10ホストに対して、ICMP Echo Requestを送信します。
CIDR形式(サブネット)で指定する
CIDR表記でサブネット全体を指定することもできます。
# 書式
$ fping -g <ネットワークアドレス/プレフィックス長>
# 実行例
$ fping -g 192.168.10.0/24
192.168.10.1 is unreachable
192.168.10.2 is unreachable
192.168.10.3 is alive
192.168.10.4 is unreachable
192.168.10.5 is unreachable
〜 省略 〜
192.168.10.250 is unreachable
192.168.10.251 is alive
192.168.10.252 is alive
192.168.10.253 is unreachable
192.168.10.254 is unreachableこのコマンドは192.168.10.0/24、すなわち192.168.10.1〜192.168.10.254の254ホストを対象にスキャンします。
スキャン対象をファイルから読み込む
スキャン対象のホストをファイルから読み込む場合は、-fまたは--fileオプションを使用します。
$ cat target.txt
192.168.10.2
192.168.10.12
192.168.10.102
192.168.10.202
$ fping -f target.txt # --file=targets.txt でも可
192.168.10.2 is unreachable
192.168.10.12 is unreachable
192.168.10.102 is alive
192.168.10.202 is unreachableファイル指定によるスキャンは、定期的な死活監視や資産情報の棚卸しなど、定常的な運用業務の効率化に適しています。
よく使うオプション
fpingには多くのオプションが用意されていますが、本セクションでは特に使用頻度の高いオプションを厳選して解説します。
- パケット送信制御
- 使用するネットワークインターフェースを指定する(-I, --iface)
- 各ホストへの送信回数を指定する(-c, --count)
- 各ホストへの送信回数を指定し、応答時間を横に並べる(-C, --vcount)
- 継続的にpingを送り続ける(-l, --loop)
- パケット送信間隔を指定する(-i, --interval)
- 同一ホストへの送信間隔を指定する(-p, --period)
- 応答がない場合の再送回数を指定する(-r, --retry)
- 表示・出力関連
- 応答があるホストのみ表示する(-a, --alive)
- 応答がないホストのみ表示する(-u, --unreach)
- パケットの経過時間を表示する(-e, --elapsed)
- タイムスタンプを表示する(-D, --timestamp)
- サマリのみ出力する(-q, --quiet)
- 統計情報を表示する(-s, --stats)
パケット送信制御
使用するネットワークインターフェースを指定する(-I, --iface)
$ fping -I eth0 192.168.10.102
192.168.10.102 is alive複数のNICを搭載した端末でfpingを実行する場合、-Iオプションで送信元のネットワークインターフェースを明示的に指定できます。インターフェース名がわからない場合、ip addr コマンドで確認できます。

各ホストへの送信回数を指定する(-c, --count)
$ fping -c 3 192.168.10.102 192.168.10.103
192.168.10.102 : [0], 64 bytes, 0.353 ms (0.353 avg, 0% loss)
192.168.10.102 : [1], 64 bytes, 0.555 ms (0.454 avg, 0% loss)
192.168.10.102 : [2], 64 bytes, 0.614 ms (0.507 avg, 0% loss)
192.168.10.103 : [0], timed out (NaN avg, 100% loss)
192.168.10.103 : [1], timed out (NaN avg, 100% loss)
192.168.10.103 : [2], timed out (NaN avg, 100% loss)
192.168.10.102 : xmt/rcv/%loss = 3/3/0%, min/avg/max = 0.353/0.507/0.614
192.168.10.103 : xmt/rcv/%loss = 3/0/100%-cオプションは、各ホストに送信するICMP Echo Requestの回数を指定します。各送信ごとの応答時間に加え、処理完了後には以下の統計情報が表示されます。
- xmt:送信回数
- rcv:応答回数
- %loss:パケットロス率
- min:最小応答時間
- avg:平均応答時間
- max:最大応答時間
各ホストへの送信回数を指定し、応答時間を横に並べる(-C, --vcount)
$ fping -C 3 192.168.10.102 192.168.10.103
192.168.10.102 : [0], 64 bytes, 0.444 ms (0.444 avg, 0% loss)
192.168.10.102 : [1], 64 bytes, 0.358 ms (0.401 avg, 0% loss)
192.168.10.102 : [2], 64 bytes, 0.497 ms (0.433 avg, 0% loss)
192.168.10.103 : [0], timed out (NaN avg, 100% loss)
192.168.10.103 : [1], timed out (NaN avg, 100% loss)
192.168.10.103 : [2], timed out (NaN avg, 100% loss)
192.168.10.102 : 0.444 0.358 0.497
192.168.10.103 : - - --C(大文字)は、前述の-c(小文字)と同様に送信回数を指定しますが、出力内容が異なります。
- 各送信ごとの応答時間を出力する。(
-cと同じ) - 処理完了後の統計情報は出力されず、各送信ごとの応答時間をスペース区切りで出力する。
- 応答がなかった場合は、
-(ハイフン)が出力される。
継続的にpingを送り続ける(-l, --loop)
$ fping -l 192.168.10.102
192.168.10.102 : [0], 64 bytes, 0.358 ms (0.358 avg, 0% loss)
192.168.10.102 : [1], 64 bytes, 1.12 ms (0.741 avg, 0% loss)
192.168.10.102 : [2], 64 bytes, 0.668 ms (0.716 avg, 0% loss)
192.168.10.102 : [3], 64 bytes, 0.580 ms (0.682 avg, 0% loss)
192.168.10.102 : [4], 64 bytes, 0.540 ms (0.654 avg, 0% loss)
192.168.10.102 : [5], 64 bytes, 0.466 ms (0.623 avg, 0% loss)
192.168.10.102 : [6], 64 bytes, 0.492 ms (0.604 avg, 0% loss)
192.168.10.102 : [7], 64 bytes, 0.620 ms (0.606 avg, 0% loss)
192.168.10.102 : [8], 64 bytes, 0.626 ms (0.608 avg, 0% loss)
192.168.10.102 : [9], 64 bytes, 0.554 ms (0.603 avg, 0% loss)
192.168.10.102 : [10], 64 bytes, 0.605 ms (0.603 avg, 0% loss)
192.168.10.102 : [11], 64 bytes, 0.493 ms (0.594 avg, 0% loss)
192.168.10.102 : [12], 64 bytes, 0.550 ms (0.591 avg, 0% loss)
192.168.10.102 : [13], 64 bytes, 0.528 ms (0.586 avg, 0% loss)-lオプションを指定すると、fpingは停止するまで対象ホストへICMP Echo Requestを送り続けます(ループモード)。終了するには Ctrl + Cを押します。
パケット送信間隔を指定する(-i, --interval)
# 例)100ミリ秒間隔でパケットを送信する場合
$ fping -i 100 -g 192.168.10.0/24-iオプションは、各ターゲットへのICMPパケット送信間隔をミリ秒単位で指定します。(デフォルト:10ミリ秒)
同一ホストへの送信間隔を指定する(-p, --period)
$ fping -c 5 -p 500 192.168.10.100-c 5:5回送信する-p 500:500ms間隔で送信する
-pオプションは、同一ホストに対してICMPパケットを送信する際の間隔をミリ秒単位で指定します(デフォルト:1000ミリ秒 = 1秒)。このオプションは、-c、-Cまたは-lオプションと組み合わせて使用します。
-iと-pの違い
| オプション | 対象 | デフォルト値 |
|---|---|---|
-i | 各ホストへの送信間隔 | 10 ms |
-p | 同一ホストへの送信間隔 | 1000 ms |
-iはスキャン全体のスループットに影響し、-pは個々のホストに対する送信間隔に影響します。
応答がない場合の再送回数を指定する(-r, --retry)
# 例)再送なし(1回のみ送信)
$ fping -r 0 192.168.10.100
# 例)再送回数を5回に設定
$ fping -r 5 192.168.10.100-rオプションは、ICMP Echo Requestに対して応答がなかった場合の再送(リトライ)回数を指定します(デフォルト:3回)。
表示・出力関連
応答があるホストのみ表示する(-a, --alive)
$ fping -a -g 192.168.10.101 192.168.10.110
192.168.10.102
192.168.10.106-aオプションは、ICMP Echo Requestに対して応答があったホスト(alive)のみを標準出力(stdout)に表示します。
通常、応答があったホストはis alive、応答がなかったホストはis unreachableと表示します。そのため、多数のホストを一括スキャンする場合、未応答ホストが多い環境では出力結果が冗長になることがあります。-aオプションを利用することで、応答があったホストのみを表示し、稼働状況を迅速に把握できます。
応答がないホストのみ表示する(-u, --unreach)
$ fping -u -g 192.168.10.101 192.168.10.110
192.168.10.101
192.168.10.103
192.168.10.104
192.168.10.105
192.168.10.107
192.168.10.108
192.168.10.109
192.168.10.110-uオプションは、-a オプションとは逆に、ICMP Echo Requestに対して応答がなかったホスト(unreachable)のみを表示します。
パケットの経過時間を表示する(-e, --elapsed)
$ fping -e -g 192.168.10.101 192.168.10.110
192.168.10.101 is unreachable
192.168.10.102 is alive (0.454 ms)
192.168.10.103 is unreachable
192.168.10.104 is unreachable
192.168.10.105 is unreachable
192.168.10.106 is alive (0.515 ms)
192.168.10.107 is unreachable
192.168.10.108 is unreachable
192.168.10.109 is unreachable
192.168.10.110 is unreachable-eオプションを指定すると、応答のあったホストについてICMP Echo Replyの応答時間(RTT:Round Trip Time)を表示できます。
タイムスタンプを表示する(-D, --timestamp)
$ fping -c 3 -D 192.168.10.102
[1780826295.99051] 192.168.10.102 : [0], 64 bytes, 0.396 ms (0.396 avg, 0% loss)
[1780826297.00145] 192.168.10.102 : [1], 64 bytes, 0.503 ms (0.450 avg, 0% loss)
[1780826297.99223] 192.168.10.102 : [2], 64 bytes, 0.500 ms (0.467 avg, 0% loss)
192.168.10.102 : xmt/rcv/%loss = 3/3/0%, min/avg/max = 0.396/0.467/0.503-Dオプションを使用すると、各出力行の先頭にUNIXタイムスタンプが表示されます。このオプションは、-c、-Cまたは-lオプションと組み合わせて使用します。
サマリのみ出力する(-q, --quiet)
# -c(小文字)オプションを併用
$ fping -q -c 3 192.168.10.102 192.168.10.103
192.168.10.102 : xmt/rcv/%loss = 3/3/0%, min/avg/max = 0.414/0.503/0.571
192.168.10.103 : xmt/rcv/%loss = 3/0/100%
# -C(大文字)オプションを併用
$ fping -q -C 3 192.168.10.102 192.168.10.103
192.168.10.102 : 0.348 0.465 0.534
192.168.10.103 : - - --qオプションは、個々のホストへの応答結果を表示せず、最終的なサマリのみを出力します。多数のホストを対象としたスキャンでは出力が膨大になりがちですが、-qを使うことで必要な情報を簡潔に確認できます。このオプションは、-cまたは-Cオプションと組み合わせて使用します。
統計情報を表示する(-s, --stats)
$ fping -s -g 192.168.10.101 192.168.10.110
192.168.10.101 is unreachable
192.168.10.102 is alive
192.168.10.103 is unreachable
192.168.10.104 is unreachable
192.168.10.105 is unreachable
192.168.10.106 is alive
192.168.10.107 is unreachable
192.168.10.108 is unreachable
192.168.10.109 is unreachable
192.168.10.110 is unreachable
10 targets
2 alive
8 unreachable
0 unknown addresses
32 timeouts (waiting for response)
34 ICMP Echos sent
2 ICMP Echo Replies received
32 other ICMP received
0.371 ms (min round trip time)
0.394 ms (avg round trip time)
0.418 ms (max round trip time)
4.171 sec (elapsed real time)-sオプションは、スキャン終了後に全体の統計情報をまとめて表示します。個別の応答状況を確認しながら、スキャン全体の到達ホスト数やRTTの統計も同時に確認できます。
「ICMP Host Unreachable from ...」を非表示にしたい
fpingで広範囲のIPアドレスを対象に疎通確認を実施すると、応答しないホストに対して以下のようなメッセージが出力されます。
ICMP Host Unreachable from XXX.XXX.XXX.XXX for ICMP Echo sent to XXX.XXX.XXX.XXX
/24のサブネットでは最大254台、/16のサブネットでは最大65,534台のホストが到達不能となる可能性があり、大量のエラーメッセージが出力される恐れがあります。
このセクションでは、ICMP Host Unreachable from ...メッセージを非表示にする代表的な3つの方法を紹介します。
- 2>/dev/null
- 2>&1 | grep -v '^ICMP Host Unreachable from'
- 2> >(grep -v '^ICMP Host Unreachable from' >&2)
2>/dev/null
最も簡単な方法は、標準エラー出力(stderr)を破棄する方法です。
$ fping -g 192.0.2.0/24 2>/dev/null2:標準エラー出力(stderr)>:リダイレクト/dev/null:出力を破棄する特殊ファイル
fpingは通常、疎通確認結果を標準出力(stdout)へ出力し、エラーメッセージや到達不能通知を標準エラー出力(stderr)へ出力します。上記コマンドの場合、2>/dev/nullによって、標準エラー出力(stderr)はすべて破棄されます。つまり、ICMP Host Unreachable from ...を含むすべてのエラーメッセージが表示されなくなります。
| メリット | デメリット |
|---|---|
| 記述がシンプル シェルを問わず利用可能 | すべてのエラーメッセージが非表示になる 重要なエラーメッセージも表示されないので、トラブルシューティングは困難になる |
2>&1 | grep -v '^ICMP Host Unreachable from'
特定のメッセージだけを除外したい場合は、grep -vを利用します。
$ fping -g 192.0.2.0/24 2>&1 | grep -v '^ICMP Host Unreachable from'2>&1:標準エラー出力(stderr)を標準出力(stdout)へ統合grep -v:条件に一致する行を除外^:行頭を表す正規表現ICMP Host Unreachable from:除外対象の文字列
上記のコマンド例の場合、ICMP Host Unreachable fromで始まる行だけが削除され、それ以外の出力は表示されます。
| メリット | デメリット |
|---|---|
| 他のエラーメッセージも表示される フィルタ条件を柔軟に変更できる | 標準出力(stdout)と標準エラー出力(stderr)が統合される grepの実行結果が終了ステータスになる |
2> >(grep -v '^ICMP Host Unreachable from' >&2)
Bashのプロセス置換(Process Substitution)を利用すると、標準出力(stdout)と標準エラー出力(stderr)を分離したままフィルタリングできます。
$ fping -g 192.0.2.0/24 2> >(grep -v '^ICMP Host Unreachable from' >&2)2> >(...):標準エラー出力(stderr)をプロセス置換にリダイレクトするgrep -v '^ICMP Host Unreachable from':特定の行を除外する>&2:grep の結果を再び標準エラー出力(stderr)に出力
この方法では、標準エラー出力(stderr)のみをgrepへ渡します。
- 標準エラー出力(stderr) → grep → 標準エラー出力(stderr)
- 標準出力(stdout) → そのまま表示
つまり、「標準出力(stdout)は変更しない」「標準エラー出力(stderr)だけをフィルタリングする」という動作になります。
| メリット | デメリット |
|---|---|
| 標準出力(stdout)と標準エラー出力(stderr)の分離を保持できる 他のエラーメッセージも表示される 最も厳格な方法 | Bash/Zshに依存する 記述が複雑 Linux初心者には理解しにくい |
各コマンドの比較表
ICMP Host Unreachable fromを非表示にする方法を比較すると、以下のようになります。
| 比較項目 | 2>/dev/null | 2>&1 | grep -v | 2> >(grep -v ... >&2) |
|---|---|---|---|
| 記述の簡潔さ | シンプル | やや複雑 | 複雑 |
| stdout/stderr の分離 | 維持される | 統合される | 維持される |
| ICMP以外のエラー表示 | 表示されない | 表示される | 表示される |
| 対応シェル | すべて対応 | すべて対応 | Bash・Zshのみ |
| 終了ステータス | fpingのまま | grepの終了ステータスになる | fpingのまま |
| 推奨シーン | コマンドラインで手軽に確認したい | エラーログも残したい、かつ手軽に書きたい | スクリプトに組み込む stdout/stderrを後続処理で使い分けたい |
まとめ
fpingは、大量のホストに対して効率的に疎通確認を実施できるICMPベースのネットワーク診断ツールです。通常のpingコマンドと比較して、複数ホストへの一括スキャンに優れており、ネットワーク管理や脆弱性診断、ペネトレーションテストの事前調査などで広く利用されています。
本記事では以下の内容を解説しました。
- fpingの概要
- pingとの違い
- インストール方法
- 基本的な使い方
- よく使うオプション
- 「ICMP Host Unreachable from …」の非表示方法
fpingの使用は、自身が管理権限を持つシステム、または事前に許可を得たシステムに限定してください。権限のないシステムへのスキャンは、不正アクセス禁止法等の法律に抵触する可能性があります。
