カテゴリー
2025年 Linux LPIC Ubuntu トラブルシューティング 技術一般 管理

複数の宛先に ping を打つことができる「fping」


にほんブログ村

Windows には「Exping」という便利なツールがあるのですが、ExpingはLinuxでは使えません。でも、Linuxには「fping」があります。今回は、「fping」の使い方をまとめてみました。

fping のインストール

「apt install」でインストールできます。

$ sudo apt update
$ sudo apt install fping

ping の使い方

基本的な使い方は、1つの宛先に対して ICMP Echo Request を送ります。通常の ping と同じです。

ICMP Echo Reply が返ってこれば「xxxx is alive」、返ってこなければ「xxx is unreachable」と表示されます。

KKIntt@jackson:~$ fping 172.16.26.1
172.16.26.1 is alive
KKInt@jackson:~$ fping 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
172.16.26.5 is unreachable

もちろん、IPアドレスだけでなく、ホスト名を指定することもできます。

KKInt@jackson:~$ fping www.yahoo.co.jp
www.yahoo.co.jp is alive

宛先の複数指定

単純に、ICMP Echo Request を送信したい宛先を並べて指定します。

KKInt@jackson:~$ fping 172.16.26.1 172.16.26.2 172.16.26.4
172.16.26.1 is alive
172.16.26.2 is alive
172.16.26.4 is alive

範囲を指定しての宛先指定

-g オプションを使うことで、指定した範囲の IPアドレスに対して ICMP Echo Request を送信することが出来ます。

以下の例では、172.16.26.1から172.16.26.5までを範囲として指定しています。そのうち、4オクテッド目が3と5のIPアドレスからはICMP Echo Reply が返ってていません。

KKInt@jackson:~$ fping -g 172.16.26.1 172.16.26.5
172.16.26.1 is alive
172.16.26.2 is alive
172.16.26.4 is alive
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.3
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.3
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.3
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.3
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
172.16.26.3 is unreachable
172.16.26.5 is unreachable

サブネットマスクを指定しての宛先指定

-g オプションを使用すると、サブネットマスク単位で ICMP Echo Request を送信する範囲を指定することも出来ます。

「172.16.26.0/29」を指定する場合は、以下のように指定します。

最初の 172.16.26.0 はネットワークアドレス、最後の172.16.26.7 はブロードキャストアドレスになるため、「172.16.26.0/29」の場合、172.16.26.1 – 172.16.26.6 がPing の対象となります。

KKInt@jackson:~$ fping -g 172.16.26.0/29
172.16.26.1 is alive
172.16.26.2 is alive
172.16.26.4 is alive
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.6
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.6
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.6
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.6
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.5
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.3
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.3
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.3
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.3
172.16.26.3 is unreachable
172.16.26.5 is unreachable
172.16.26.6 is unreachable
kanta@jackson:~$ 

ファイルから読み込んで範囲指定

-f オプションを使用すると、ファイル読み込んでfpingを実行することが出来ます。

まず、ping-list というファイルを作成し、 以下のように宛先IPアドレスを記述しました。

KKInt@jackson:~$ cat ping-list 
172.16.26.1
172.16.26.2
172.16.26.4
172.16.26.7
172.16.26.8

-f オプションで対象のファイルを読み込んで fping を実行することで、ファイルに記載されている宛先 IPアドレスに対して ICMP Echo Request を送信することが出来ます。

KKInt@jackson:~$ fping -f ping-list
172.16.26.1 is alive
172.16.26.2 is alive
172.16.26.4 is alive
172.16.26.7 is alive
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.8
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.8
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.8
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.8
172.16.26.8 is unreachable

結局はLinux上での操作ですので、ファイルの読み込ませ方は、いろいろできます。

「<」でファイルを fping に渡せますし、

$ fping < ping_list.txt 

cat で表示させたファイルの内容を fping に渡すことも可能です。

$ cat ping_list.txt | fping

送信回数指定

-c オプションを使用すると、ICMP Echo Request を送信する回数を指定することが出来ます。

3回送信したい場合は、以下のように実行します。

KKInt@jackson:~$ fping -c3 172.16.26.1
172.16.26.1 : [0], 64 bytes, 0.203 ms (0.203 avg, 0% loss)
172.16.26.1 : [1], 64 bytes, 0.234 ms (0.218 avg, 0% loss)
172.16.26.1 : [2], 64 bytes, 0.150 ms (0.195 avg, 0% loss)

172.16.26.1 : xmt/rcv/%loss = 3/3/0%, min/avg/max = 0.150/0.195/0.234

送信し続ける

ICMP Echo Request を送信し続けたい場合は -l オプションを使用します。

「Ctrl + C」で、Echo Request の送信を停止することができます。

KKInt@jackson:~$ fping -l 172.16.26.1
172.16.26.1 : [0], 64 bytes, 0.226 ms (0.226 avg, 0% loss)
172.16.26.1 : [1], 64 bytes, 0.132 ms (0.179 avg, 0% loss)
172.16.26.1 : [2], 64 bytes, 0.125 ms (0.161 avg, 0% loss)
172.16.26.1 : [3], 64 bytes, 0.195 ms (0.169 avg, 0% loss)
172.16.26.1 : [4], 64 bytes, 0.205 ms (0.176 avg, 0% loss)
172.16.26.1 : [5], 64 bytes, 0.223 ms (0.184 avg, 0% loss)
^C <<< Ctl + c で終了
172.16.26.1 : xmt/rcv/%loss = 6/6/0%, min/avg/max = 0.125/0.184/0.226

送信間隔(ミリ秒)

-i オプションを使用すると、ICMP Echo Request を送信する間隔を指定することが出来ます。

指定する時間の単位はミリ秒なので、3秒間隔ならば「3000」と指定します。

KKInt@jackson:~$ fping -c3 -i 3000 172.16.26.1
172.16.26.1 : [0], 64 bytes, 0.185 ms (0.185 avg, 0% loss)
172.16.26.1 : [1], 64 bytes, 0.138 ms (0.162 avg, 0% loss)
172.16.26.1 : [2], 64 bytes, 0.186 ms (0.170 avg, 0% loss)

172.16.26.1 : xmt/rcv/%loss = 3/3/0%, min/avg/max = 0.138/0.170/0.186

ICMP Host Unreachableを表示させたくない

ICMP Echo Request が失敗した際に表示される「ICMP Host Unreachable 〜」というメッセージを表示させたくない場合の方法です。

「ICMP Host Unreachable 〜」は標準エラー出力なので、「2>」を指定してエラー出力を /dev/null に送ることで、メッセージの表示を抑えることができます。

KKInt@jackson:~$ fping -f ping-list 2> /dev/null 
172.16.26.1 is alive
172.16.26.2 is alive
172.16.26.4 is alive
172.16.26.7 is alive
172.16.26.8 is unreachable

alive なホストのみ表示

-a オプションを使用すると、ICMP Echo Replyを返す(Alive)ホストのみを表示することができます。

以下の例では「ICMP Host Unreachable 〜」のメッセージを/dev/null に送って表示させないようにしています。

KKInt@jackson:~$ fping -a  -f ping-list 2> /dev/null 
172.16.26.1
172.16.26.2
172.16.26.4
172.16.26.7

-a オプションを使わなくても、以下のように grep で抽出することもできます。

KKInt@jackson:~$ fping -f ping-list 2> /dev/null | grep alive
172.16.26.1 is alive
172.16.26.2 is alive
172.16.26.4 is alive
172.16.26.7 is alive

unreachable だけ表示

-u オプションを使用すると、ICMP Echo Reply を返さないホスト(unreachable)のみを表示することができます。

KKInt@jackson:~$ fping -u -f ping-list 2> /dev/null 
172.16.26.8

unreachable のメッセージも合わせて表示させたい場合は、fping の結果を grepに渡すことで unreachable のみ表示させることもできますね。

KKInt@jackson:~$ fping -f ping-list 2> /dev/null | grep unreachable
172.16.26.8 is unreachable

統計情報表示

-s オプションを使用すると、実行結果の統計情報を表示します。

KKInt@jackson:~$ fping -f ping-list -s
172.16.26.1 is alive
172.16.26.2 is alive
172.16.26.4 is alive
172.16.26.7 is alive
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.8
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.8
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.8
ICMP Host Unreachable from 172.16.26.11 for ICMP Echo sent to 172.16.26.8
172.16.26.8 is unreachable

       5 targets
       4 alive
       1 unreachable
       0 unknown addresses

       4 timeouts (waiting for response)
       8 ICMP Echos sent
       4 ICMP Echo Replies received
       4 other ICMP received

 0.207 ms (min round trip time)
 0.229 ms (avg round trip time)
 0.249 ms (max round trip time)
        4.107 sec (elapsed real time)

関連するブログ:

最近の人気ブログ TOP 10:

最近の記事:

カテゴリー
2024年 iSCSI Linux LPIC QNAP Ubuntu コンピューター ストレージ

UbuntuとQNAPのiSCSI統合方法


にほんブログ村

Ubuntu を使って、外部ストレージの iSCSI ターゲットに接続させた時のメモです。

今回の構成は、以下の通りです。

Ubuntu と QNAP は同じセグメントに設置していますが、別のセグメントであっても OK です。ただし、遅延がない程度の距離にした方が良いです。

以前 10ミリ秒 もないくらいの距離で試しましたが、遅くて使い物になりませんでした。同じ LAN 内にした方が良いです。

iSCSI イニシエーターのインストール

iSCSI イニシエーターのモジュールをインストールします。

kk@Jackson:~$ sudo apt -y install open-iscsi 
[sudo] password for kk: 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
     <省略>
Processing triggers for libc-bin (2.35-0ubuntu3.6) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for initramfs-tools (0.140ubuntu13.4) ...
update-initramfs: Generating /boot/initrd.img-6.5.0-15-generic
kk@Jackson:~$ 

iSCSI の設定

「/etc/iscsi/」のフォルダーができますので、その中の「initiatorname.iscsi」のファイルを編集します。

kk@Jackson:/etc/iscsi$ ls -la 
total 36
drwxr-xr-x   2 root root  4096 Feb  6 12:01 .
drwxr-xr-x 149 root root 12288 Feb  6 12:01 ..
-rw-------   1 root root   348 Feb  6 12:01 initiatorname.iscsi  <<< このファイルを編集
-rw-r--r--   1 root root 13334 Jan 19  2022 iscsid.conf
kk@Jackson:/etc/iscsi$ 
kk@Jackson:/etc/iscsi$ sido vim initiatorname.iscsi 

iSCSI ターゲットとなるストレージ側で設定しているターゲット名(IQN)を指定します。

## DO NOT EDIT OR REMOVE THIS FILE!
## If you remove this file, the iSCSI daemon will not start.
## If you change the InitiatorName, existing access control lists
## may reject this initiator.  The InitiatorName must be unique
## for each iSCSI initiator.  Do NOT duplicate iSCSI InitiatorNames.
# InitiatorName=iqn.2004-10.com.ubuntu:01:c317f55f6df
InitiatorName=iqn.2004-04.com.qnap:ts-231k:iscsi.jonathan.45e748  <<< iSCSI ターゲットを指定

次に、同じフォルダーにある「iscsid.conf」ファイルを編集します。

kk@Jackson:/etc/iscsi$ ls -la 
total 36
drwxr-xr-x   2 root root  4096 Feb  6 12:10 .
drwxr-xr-x 149 root root 12288 Feb  6 12:01 ..
-rw-------   1 root root   415 Feb  6 12:10 initiatorname.iscsi
-rw-r--r--   1 root root 13334 Jan 19  2022 iscsid.conf  <<< このファイルを編集
kk@Jackson:/etc/iscsi$ 
kk@Jackson:/etc/iscsi$ sido vim iscsid.conf

58行目から70行目にかけて設定をしていきます。

まず、CHAP 認証を有効にします。

次に、iSCSI ターゲット側で設定しているユーザー名とパスワードを指定します。

# *************
# CHAP Settings
# *************

# To enable CHAP authentication set node.session.auth.authmethod
# to CHAP. The default is None.
#node.session.auth.authmethod = CHAP
node.session.auth.authmethod = CHAP  <<< コメントを外して有効化

# To configure which CHAP algorithms to enable set
# node.session.auth.chap_algs to a comma seperated list.
# The algorithms should be listen with most prefered first.
# Valid values are MD5, SHA1, SHA256, and SHA3-256.
# The default is MD5.
#node.session.auth.chap_algs = SHA3-256,SHA256,SHA1,MD5

# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
#node.session.auth.username = username
#node.session.auth.password = password
node.session.auth.username = kkint  <<< ユーザー名を指定
node.session.auth.password = 1234567890abcde  <<< パスワードを指定

iSCSI のデーモンを再起動して、設定変更を読み込ませます。

kk@Jackson:/etc/iscsi$ sudo systemctl restart iscsid open-iscsi 

kk@Jackson:/etc/iscsi$ systemctl status iscsid open-iscsi.service 
● iscsid.service - iSCSI initiator daemon (iscsid)
     Loaded: loaded (/lib/systemd/system/iscsid.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2024-02-06 12:18:43 JST; 18s ago
TriggeredBy: ● iscsid.socket
       Docs: man:iscsid(8)
    Process: 808615 ExecStartPre=/lib/open-iscsi/startup-checks.sh (code=exited, status=0/SUCCESS)
    Process: 808618 ExecStart=/sbin/iscsid (code=exited, status=0/SUCCESS)
   Main PID: 808620 (iscsid)
      Tasks: 2 (limit: 4488)
     Memory: 4.4M
        CPU: 42ms
     CGroup: /system.slice/iscsid.service
             ├─808619 /sbin/iscsid
             └─808620 /sbin/iscsid

Feb 06 12:18:43 Jackson systemd[1]: Starting iSCSI initiator daemon (iscsid)...
Feb 06 12:18:43 Jackson iscsid[808618]: iSCSI logger with pid=808619 started!
Feb 06 12:18:43 Jackson systemd[1]: Started iSCSI initiator daemon (iscsid).
Feb 06 12:18:44 Jackson iscsid[808619]: iSCSI daemon with pid=808620 started!

○ open-iscsi.service - Login to default iSCSI targets
     Loaded: loaded (/lib/systemd/system/open-iscsi.service; enabled; vendor preset: enabled)
     Active: inactive (dead)
  Condition: start condition failed at Tue 2024-02-06 12:18:43 JST; 18s ago
             ├─ ConditionDirectoryNotEmpty=|/etc/iscsi/nodes was not met
             └─ ConditionDirectoryNotEmpty=|/sys/class/iscsi_session was not met
       Docs: man:iscsiadm(8)
             man:iscsid(8)

Feb 06 12:01:54 Jackson systemd[1]: Condition check resulted in Login to default iSCSI targets be>
Feb 06 12:18:43 Jackson systemd[1]: Condition check resulted in Login to default iSCSI targets be>
kk@Jackson:/etc/iscsi$ 

iSCSI 接続

ディスカバリーをしてみます。

iSCSI ターゲットの IP アドレスを指定します。

ストレージが見えましたね。

kk@Jackson:/etc/iscsi$ sudo iscsiadm -m discovery -t sendtargets -p 172.16.26.4
172.16.26.4:3260,1 iqn.2004-04.com.qnap:ts-231k:iscsi.jonathan.45e748
kk@Jackson:/etc/iscsi$ 

状態を確認します。

こちらでもストレージが見えています。

kk@Jackson:/etc/iscsi$ sudo iscsiadm -m node -o show 
# BEGIN RECORD 2.1.5
node.name = iqn.2004-04.com.qnap:ts-231k:iscsi.jonathan.45e748
node.tpgt = 1
node.startup = manual
node.leading_login = No
iface.iscsi_ifacename = default
iface.net_ifacename = <empty>
iface.ipaddress = <empty>
iface.prefix_len = 0
iface.hwaddress = <empty>
iface.transport_name = tcp
     <省略>
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
node.conn[0].iscsi.HeaderDigest = None
node.conn[0].iscsi.DataDigest = None
node.conn[0].iscsi.IFMarker = No
node.conn[0].iscsi.OFMarker = No
# END RECORD
kk@Jackson:/etc/iscsi$ 

iSCSI ターゲットにログインします。

「successful」が表示されれば OK です。

表示されない場合、IQN や IP アドレス、ユーザー名、パスワードが間違っている可能性があります。

kk@Jackson:/etc/iscsi$ sudo iscsiadm -m node --login -p 172.16.26.4
Logging in to [iface: default, target: iqn.2004-04.com.qnap:ts-231k:iscsi.jonathan.45e748, portal: 172.16.26.4,3260]
Login to [iface: default, target: iqn.2004-04.com.qnap:ts-231k:iscsi.jonathan.45e748, portal: 172.16.26.4,3260] successful.
kk@Jackson:/etc/iscsi$ 

接続確認

確立しているセッションを確認します。

kk@Jackson:/etc/iscsi$ sudo iscsiadm -m session -o show 
tcp: [1] 172.16.26.4:3260,1 iqn.2004-04.com.qnap:ts-231k:iscsi.jonathan.45e748 (non-flash)
kk@Jackson:/etc/iscsi$ 

QNAP の方の設定も見てみます。

Ubuntu (172.16.26.10)から接続されていますね。

システムの起動時に自動で接続するようにするには、以下の設定を入れておきます。

kk@Jackson:/etc/iscsi$ sudo iscsiadm -m node -p 172.16.26.4 -o update -n node.startup -v automatic 
kk@Jackson:/etc/iscsi$ 

パーティションを見てみましょう。

「sdb」で、ストレージの iSCSI 領域が見えてますね。

kk@Jackson:/etc/iscsi$ cat /proc/partitions 
major minor  #blocks  name

   7        0          4 loop0
   7        1      64988 loop1
   7        2      65444 loop2
   7        3      75892 loop3
   7        4      75676 loop4
   7        6     268812 loop6
   7        7     358084 loop7
   8        0   31266648 sda
   8        1     524288 sda1
   8        2   30740480 sda2
   7        8     358088 loop8
   7        9     508804 loop9
   7       10     508908 loop10
   7       11      93888 loop11
   7       12      47032 loop12
   7       13      12620 loop13
   7       14      41836 loop14
   7       15      41400 loop15
   7       16        452 loop16
   7       17        428 loop17
   7       18     268380 loop18
   8       16 2411724800 sdb  <<<
   8       17 2411722752 sdb1
kk@Jackson:/etc/iscsi$ 

面白かったら、フォローしてください!

関連するブログ:

最近の人気ブログ TOP 10:

最近の記事: