2026年8月18日

2026年8月18日

ping のオプション活用法|回数・間隔・サイズ・TTL・タイムアウトを目的別に使い分ける

ping は宛先を指定するだけでも使えますが、オプションを組み合わせると「回数を決めて自動判定する」「時刻付きで長時間記録する」「MTU の問題を探す」「経路の数を絞って測る」といった調査ができるようになります。この記事では、Linux・macOS・Windows でオプションの書き方が違う点を押さえたうえで、目的別に使い方を整理します。ping の基本的な疎通確認の流れではなく、オプションの選び方に絞った内容です。

まず押さえたい OS ごとの違い

同じ「ping」でも、OS によって実装が異なり、同じ文字のオプションが別の意味を持つことがあります。特に混乱しやすいのが次の2点です。

  • 回数の指定: Linux と macOS は -c、Windows は -n です。
  • **-t の意味**: Linux では TTL の指定、macOS では全体のタイムアウト(秒)、Windows では「止めるまで送り続ける」です。

主なオプションの対応は次のとおりです(Linux は多くのディストリビューションで標準の iputils 版を想定しています。細部はバージョンによって異なるため、手元では man ping や ping /? で確認してください。主要な版を前提にした一般的な対応です)。オプションの意味は実装の更新で変わることがあります(2026年10月現在)。

目的 Linux(iputils) macOS Windows
回数を指定 -c 回数 -c 回数 -n 回数
止めるまで送り続ける 既定の動作 既定の動作 -t
送信間隔(秒) -i 秒 -i 秒 指定不可
データサイズ -s バイト -s バイト -l バイト
断片化を禁止 -M do -D -f
TTL を指定 -t 値 -m 値 -i 値
1回の応答待ち時間 -W 秒 -W ミリ秒 -w ミリ秒
全体の制限時間 -w 秒 -t 秒 なし
IPv4 / IPv6 を指定 -4 / -6 ping6 を使う場合あり -4 / -6

Linux の -w と Windows の -w は意味が違う(Linux は全体の制限時間、Windows は1回の待ち時間)点も、取り違えやすいところです。

目的1:回数を決めて終わらせる

Linux や macOS の ping は、何も指定しないと止めるまで送り続けます。手作業の確認でも、スクリプトでも、回数を決めておくと結果の統計(送信数・受信数・ロス率・往復時間の最小/平均/最大)が最後に表示され、比較しやすくなります。

ping -c 5 example.com        # Linux / macOS
ping -n 5 example.com        # Windows

目的2:スクリプトで疎通を自動判定する

監視や定期チェックのスクリプトでは、応答を待ちすぎないことと、結果を終了ステータスで判定することが大切です。

if ping -c 3 -W 2 -q 192.0.2.10 > /dev/null; then
  echo "reachable"
else
  echo "unreachable"
fi
  • -c 3: 3回送ります。1回だけだと、一時的な取りこぼしで誤って「落ちている」と判定しやすくなります。
  • -W 2: 1回の応答を最大2秒待ちます。
  • -q: 途中経過を出さず、最後の統計だけを出します。

Linux の iputils 版では、応答が1つでも返れば終了ステータスは 0、まったく返らなければ 0 以外になります。スクリプトはこの値で分岐できます。ただし ICMP を受け付けないサーバーもあるため、Web サイトの死活監視なら ping だけでなく HTTP での確認を併用します。

目的3:時刻付きで長時間記録する

「ときどき途切れる」症状は、いつ起きたかが分からないと原因を追えません。Linux では -D で各行に時刻(UNIX 時刻)を付け、-O で応答がなかった回も行として出力できます。

ping -D -O example.com | tee ping_$(date +%Y%m%d_%H%M).log

-O を付けないと、応答がなかった回は何も表示されず、途切れた時間帯がログから読み取りにくくなります。止めるときは Ctrl+C で、最後に統計が出力されます。

Windows では -t で送り続け、Ctrl+Break で途中の統計、Ctrl+C で終了です。Windows の ping には時刻を付けるオプションがないため、時刻が必要なら PowerShell の Test-Connection など別の方法と組み合わせます。

目的4:送信間隔を変える

既定の間隔は1秒です。長時間の記録で送信数を減らしたいなら間隔を広げます。

ping -i 5 example.com        # 5秒ごと

逆に間隔を短くする場合、一定以下の値は root 権限が必要です(下限は実装やバージョンによって異なります)。また -f(フラッド ping)は応答を待たずに大量に送るモードで、root 権限が必要です。自分が管理するネットワーク内の負荷試験以外では使わないでください。管理外の宛先に短い間隔で大量に送ると、攻撃と見なされることがあります。

目的5:MTU の問題を探す

「ping は通るのに、大きなファイルの転送やページ表示だけが止まる」場合、経路の途中で通せるパケットの大きさ(MTU)が小さくなっている可能性があります。断片化を禁止したうえで、パケットのサイズを変えて試します。

ping -c 3 -M do -s 1472 example.com    # Linux
ping -c 3 -D -s 1472 example.com       # macOS
ping -n 3 -f -l 1472 example.com       # Windows

指定するのは ICMP のデータ部分の大きさです。IPv4 では IP ヘッダー 20 バイトと ICMP ヘッダー 8 バイトが加わるため、1472 バイトで合計 1500 バイトになります。1472 で「断片化が必要」といったエラーや無応答になり、サイズを下げると通るなら、通る最大値に 28 を足した値がその経路の MTU の目安です。VPN や PPPoE の回線では 1500 より小さいことがよくあります。

目的6:TTL を指定して届く範囲を調べる

TTL(Time To Live)は、パケットが通過できるルーターの数の上限です。TTL を小さくして送ると、途中のルーターで期限切れになり、そのルーターから「時間超過」の通知が返ります。

ping -c 1 -t 3 example.com    # Linux(macOS は -m 3、Windows は -i 3)

TTL を1から順に増やしていけば経路の中継点を確認できますが、普段の経路調査は traceroute や mtr に任せたほうが手間がかかりません。TTL 指定は、特定のホップまで届いているかだけを確かめたいときに使えます。

目的7:使うインターフェースやアドレスを指定する

複数の NIC や VPN を持つサーバーでは、どの経路から送るかで結果が変わります。Linux では -I でインターフェース名か送信元アドレスを指定できます。

ping -c 3 -I eth1 192.0.2.10

macOS では -S で送信元アドレスを指定します。また、宛先が IPv4 と IPv6 の両方に対応している場合は、-4 / -6 で明示的に分けて試すと、片方だけ通らないといった問題を見つけられます。

オプションを使うときの注意点

  • ICMP が止められていると応答はない: ファイアウォールやクラウドのセキュリティ設定で ICMP を受け付けない宛先では、どのオプションを付けても応答はありません。サービスが動いているかは、ポートへの接続で別に確認します。
  • 往復時間は ICMP の扱われ方に左右される: ルーターやサーバーは ICMP の処理を後回しにすることがあり、実際のアプリケーション通信より遅く見える場合があります。
  • OS をまたいでコマンドを使い回さない: 前述のとおり同じ文字でも意味が違います。手順書を作るときは対象 OS を明記します。

まとめ

  • 回数は Linux / macOS が -c、Windows が -n。-t や -w は OS ごとに意味が違うので要注意です。
  • スクリプトでは -c・-W・-q を組み合わせ、終了ステータスで判定します。
  • 断続的な不調の記録には、Linux の -D -O で時刻と無応答の回を残します。
  • MTU の確認は断片化禁止(-M do / -D / -f)とサイズ指定を組み合わせ、1472 バイトから探ります。
  • 間隔を詰める操作やフラッド ping は、自分の管理するネットワーク内に限って使います。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲