ネットワークの「郵便屋さん」を過労死させるな!pingフラッドの真実と現場の心得
こんにちは、NOCの現場で数々の障害を鎮火してきたシニアエンジニアです。
皆さんは、トラブルシューティングで最初に何を使いますか?そう、誰もが真っ先に頼るのが ping ですよね。ネットワークの世界の「郵便屋さん」であるこのツールは、相手がそこにいるか確認するための非常に便利な道具です。
しかし、この郵便屋さん、実は使い方を間違えると「凶器」にもなり得ることをご存知でしょうか?今日は、連続して大量のパケットを送りつける「フラッディング型ping」について、現場の視点から紐解いていきたいと思います。
—
1. pingは「丁寧な挨拶」から「嫌がらせ」へ
まず、pingの仕組みを身近な例で考えてみましょう。
- 通常のping: 「そこにいますか?」「はい、いますよ!」という、礼儀正しいやり取りです。
- フラッディング型ping: 相手が「はい!」と答える暇も与えず、1秒間に何千通もの手紙を郵便受けに叩き込む行為です。
これを技術用語では「パケットフラッド」と呼びます。ネットワークの帯域を占有し、相手の機器の処理能力を食いつぶすこの行為は、検証環境では「負荷テスト」として有用ですが、実運用環境では「立派なDoS攻撃(サービス拒否攻撃)」とみなされます。
2. なぜ「フラッディング」は危険なのか?
なぜ、ただの小包(パケット)を送るだけでネットワークが悲鳴を上げるのでしょうか。
1. 郵便受け(バッファ)のパンク: 機器は一度に処理できる手紙の数に限界があります。限界を超えると、新しい手紙を捨ててしまうか、処理が追いつかずにダウンします。
2. 道路(帯域)の渋滞: 大量のパケットが回線を埋め尽くすと、本当に必要な通信(Webサイトの読み込みやDBの更新など)が通れなくなり、サービスが停止します。
3. CPUの疲弊: 機器の脳みそ(CPU)は、届いた手紙を「誰からかな?」「中身は何かな?」と判断するのにエネルギーを使います。過剰な手紙はCPUを100%まで跳ね上げ、機器をフリーズさせます。
3. 検証環境で使うならこう書く!(実用サンプル)
もし皆さんが検証環境でネットワークの限界を調べる必要があるなら、Linuxの ping コマンドの -f オプション(Floodモード)を使います。
※注意:このコマンドは、絶対に本番環境や自分が管理していないネットワークに向けて実行しないでください。即座に「攻撃」と判断され、アラートが飛びます。
# -f : Floodモード(送った分だけ即座に次を送る)
# -i 0 : 送信間隔をゼロにする(限界まで高速化)
# sudo権限が必要なのは、あまりに強力なパケットを生成するためです
sudo ping -f -i 0 192.168.1.100
# 実行を止める時は [Ctrl + C] を即座に押しましょう!
現場のエンジニアが教える「安全な検証」のコツ
本番に近い環境で負荷を試したい場合は、いきなり全開にするのではなく、少しずつパケットの間隔を調整して、監視ツール(ZabbixやPrometheusなど)のグラフを見ながら、「どこで遅延が発生するか」を観察するのがプロの流儀です。
4. 現場で「pingフラッド」に遭遇したらどうするか?
もし、皆さんが運用中のネットワークで「急に通信が重くなった!」という事態に直面したら、まずは ss コマンドや netstat コマンドで接続状況を確認しましょう。
# 現在の通信状況を確認(特定のIPから大量の応答が来ていないかチェック)
ss -ntu | grep 192.168.1.100
もし、身に覚えのない大量のパケットが特定のIPから届いているなら、迷わずファイアウォールやルーターのACL(アクセス制御リスト)でそのIPをブロックします。
! Ciscoルーター等の設定例
access-list 100 deny icmp host 192.168.x.x any
access-list 100 permit ip any any
最後に:エンジニアとしての「節度」を持つこと
ネットワーク技術は、使い手によって薬にも毒にもなります。
ping を使いこなすことは、ネットワーク運用の第一歩ですが、その裏側には「相手の機器や回線に負担をかけている」という意識を常に持っていてください。
「速く送れるから」といって無闇に負荷をかけるのではなく、常にネットワークの先には「サービスを待っているユーザー」がいることを忘れずに。
皆さんのネットワークライフが、トラブルなく安定したものであることを祈っています!何かあれば、またいつでも相談してくださいね。
コメント