TTL(Time To Live)はIPv4 パケットが通過できるホップ数を制限する8ビットのフィールドです。ルーターを1台通過するたびに1減り、0になったルーターはパケットを破棄して通常ICMP Time Exceededを返します。tracerouteはこの動作を使い、TTLを1ずつ増やして応答したホップを表示します。
この記事はネットワークエンジニア転職完全ガイドの関連テーマです。工程の全体像から確認したい場合はそちらへ。
⭕️ネットワークエンジニアが
障害切り分けで理解しておきたいこと
traceroute の仕組み何故tracerouteは経路がわかるのか
その仕組を理解していると切り分けが
すごく理解できる通信できないとき、
まず ping を打つ人は多い。
でも ping だけだと、
届くか
届かないかは分かっても、… pic.twitter.com/50k70AfZHW
— けんと@設計構築チャンネル (@yeiquer12) 2026年5月31日
TTLがルーターごとに減り、0でICMP Time Exceededが返るためtracerouteが経路を追えると説明したポスト。
TTLとは?
TTL(Time To Live)はIPv4ヘッダーにある8ビットの値で、パケットがネットワーク内を無限に回り続けるのを防ぎます。中継ルーターは転送時にTTLを少なくとも1減らし、0以下になるパケットを破棄します。宛先へ届く前に0になった場合、通常はICMP Time Exceeded(Type 11、Code 0)が送信元へ返ります。
名前に「Time」とありますが、通常の経路確認では経過秒数ではなく通過できるルーターの残り回数として扱います。IPv6では同じ目的のフィールド名がHop Limitです。TTLの初期値だけでOSや距離を断定しないでください。
根拠:RFC 1812(IPv4ルーターのTTL処理)、RFC 792(ICMP Time Exceeded)、RFC 8200(IPv6 Hop Limit)
TTLはルーターを通るとどう変わる?
PC → R1 → R2 → サーバーという経路を考えます。以下は各ルーターで1ずつ減算される構成例です。値が0になった位置を変えると、応答する装置も変わります。
| 送信時TTL | R1 | R2 | 結果 |
|---|---|---|---|
| 1 | 1→0、破棄 | 通らない | R1からTime Exceeded |
| 2 | 2→1、転送 | 1→0、破棄 | R2からTime Exceeded |
| 3 | 3→2、転送 | 2→1、転送 | サーバーに到達。応答はプローブ方式で異なる |
経路が表示されるのは、TTLが0になった地点からのICMP応答を送信元が受け取れる場合です。応答がフィルタリング・レート制限されると、実際には転送されていてもそのホップが「*」になることがあります。
tracerouteはなぜ経路を表示できる?
実施順は「宛先へのルーティングテーブルを先に確認」から「ループ時は繰り返すホップと経路を両端確認」です。
| STEP | 実施内容 | 確認する結果 |
|---|---|---|
| 1 | 宛先へのルーティングテーブルを先に確認 | 期待経路 |
| 2 | 名前解決なし・方式固定でtraceroute | 比較条件 |
| 3 | キャプチャでIP TTLとICMP タイプ/コードを確認 | wire上の動作 |
| 4 | ループ時は繰り返すホップと経路を両端確認 | ループ箇所 |
# Linux
traceroute -n 203.0.113.10
tcpdump -ni any 'icmp or host 203.0.113.10'
# Windows
tracert -d 203.0.113.10
# Cisco
show ip route 203.0.113.10
Internet Protocol Version 4
Time to Live: 1
Internet Control Message Protocol
Type: 11 (Time-to-live exceeded)
Code: 0 (Time to live exceeded in transit)
TTL切れと通信障害をどう分ける?
症状ごとの原因候補と、次に確認することを次の表にまとめます。正常時の出力と並べて差を見ます。
| 症状・誤り | 主な原因候補 | 次に確認すること |
|---|---|---|
| 同じホップが反復 | ルーティングループ | 各ルーターの経路/ネクストホップ |
| 途中*だが宛先到達 | ICMP応答抑制 | サービス疎通と後続ホップ |
| 宛先前で停止 | ACL/経路/戻り経路 | プローブ方式変更 |
| TTLが極端に小さい | アプリケーション/OS設定 | パケットキャプチャと送信元 |
Wiresharkでどのフィールドを見る?
TTLを『パケットの寿命秒数』とは説明しません。初期値、実際のホップ数、戻り経路はOSとネットワークで変わるため、値からOSや距離を断定せず、ルーティングテーブルとキャプチャで確認します。
- 対象機器・インターフェース・VRF/VLAN
- 取得日時・タイムゾーン・ソフトウェアバージョン
- 変更前後の同一コマンド出力
- 期待値・実測値・判定者
- 異常時の停止条件と切り戻し結果
関連する記事
まとめ:TTL減算とICMP応答をパケット単位で追う
要点は、TTL減算とICMP応答をパケット単位で追うことです。tracerouteの出力と時刻を残しておくと、TTL切れがループなのか経路長なのかを後から説明できます。
