Linuxインフラ実践

pingとtracerouteで通信状況を診断する【ネットワーク障害の特定方法】

Linuxインフラ実践
記事内に広告が含まれています。

「サーバーに繋がらない!」そんなとき最初に使うのがpingとtracerouteです。この2つのコマンドで通信障害の原因を素早く特定できます。

ping:疎通確認の基本

pingはICMPエコーリクエストを送って応答を確認するコマンドです。「相手が生きているか」「遅延はどれくらいか」を確認できます。

# 基本的な疎通確認
$ ping 8.8.8.8
$ ping google.com

# 回数を指定(-c)
$ ping -c 4 8.8.8.8
PING 8.8.8.8: 56 bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=5.23 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=5.11 ms

# 結果の読み方
# time= : 往復の遅延時間(RTT)。国内サーバーなら1〜10ms程度が正常
# ttl=  : 残りホップ数。0になるとパケットが破棄される

# インターバルを指定(デフォルト1秒)
$ ping -c 10 -i 0.5 8.8.8.8   # 0.5秒間隔で10回

# パケットサイズを指定
$ ping -s 1400 8.8.8.8    # 大きいパケットでMTU問題を確認

pingで確認できること・できないこと

状態意味
応答あり・遅延小正常
応答あり・遅延大ネットワーク混雑 or 経路問題
応答なし(タイムアウト)宛先がダウン、または経路上でICMPがブロックされている
Destination Host Unreachableルーティング問題(経路が見つからない)

traceroute:経路を追跡する

traceroute(Linuxではtracepathも使える)は宛先までのルーターを一つずつ表示します。どこで遅延・障害が起きているかを特定できます。

# traceroute のインストール
$ sudo apt install traceroute     # Ubuntu/Debian
$ sudo dnf install traceroute     # RHEL/CentOS

# 基本的な使い方
$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max
 1  192.168.1.1 (192.168.1.1)   1.234 ms   ← デフォルトゲートウェイ
 2  10.0.0.1 (10.0.0.1)         5.678 ms   ← プロバイダのルーター
 3  * * *                                   ← ICMPをブロックしているルーター
 4  8.8.8.8 (8.8.8.8)          12.345 ms   ← 目的地

# * * * はICMPをブロックしているルーター(障害ではない場合も多い)

# UDPの代わりにICMPを使う(ファイアウォールを回避しやすい)
$ traceroute -I 8.8.8.8

# tracepath(インストール不要)
$ tracepath 8.8.8.8

# mtr:pingとtracerouteを組み合わせたリアルタイム表示
$ sudo apt install mtr
$ mtr 8.8.8.8

まとめ

  • pingで疎通確認。応答時間(RTT)と応答の有無でネットワーク状態を判断
  • pingが通らなくてもICMPがブロックされているだけの場合もある
  • tracerouteでパケットの経路を追跡。遅延や障害の発生箇所を特定できる
  • mtrはpingとtracerouteを組み合わせた強力なツール。障害調査に最適

📋 Phase 3 ネットワーク基礎チートシートで全コマンドをまとめて確認できます。

コメント

タイトルとURLをコピーしました