Mac で Traceroute を実行する方法:コマンド、出力、その意味
Mac で traceroute を実行し、すべてのホップを読み取り、遅延とファイアウォールを特定し、Terminal を使わない GUI 方法まで。macOS Sequoia 以降対応。
インターネットが遅いが、接続は技術的には機能している。ページはいずれ読み込まれる。ビデオ通話が途切れる。Mac とサーバーの間のどこかに問題がある。Traceroute はそれがどこなのかを正確に示します。
macOS の traceroute は、宛先までの経路でデータが通過するすべてのルーターを、各ルーターの応答時間とともに表示します。輻輳、設定ミスのルート、切断されたリンクがあれば出力に表示されます。このガイドでは traceroute コマンド、返される内容の読み方、一般的なパターンの意味、そして視覚的なインターフェイスを好む場合に Terminal なしで Mac で traceroute を実行する方法を説明します。
Traceroute が何をするか
データは Mac からサーバーに直接届くわけではありません。ルーターのチェーンを経由してホップします:ホームルーター、ISP の機器、地域のバックボーンネットワーク、最終的に宛先のネットワーク。各ステップをホップと呼びます。
Traceroute は各ネットワークパケットにある TTL(time to live)フィールドを利用してそのチェーンをマッピングします。TTL はカウンターです。パケットを転送するすべてのルーターが 1 ずつ減らします。TTL がゼロになると、ルーターはパケットをドロップして自身を特定するエラーメッセージを返します。
Traceroute は TTL=1 のパケットを送ります。最初のルーターがドロップして返信します。Traceroute はそのルーターのアドレスと応答時間を記録し、TTL=2 のパケットを送ります。2 番目のルーターが返信します。これがパケットが宛先に届くまでホップバイホップで続きます。
結果は経路の完全なマップで、各ステップのレイテンシ測定値が含まれます。
macOS で traceroute を実行する
Terminal を開いて(アプリケーション > ユーティリティ > Terminal)実行します:
traceroute google.com
結果は各ホップが応答するにつれて行ごとに表示されます。早い段階のホップを読むために全体の実行が終わるのを待つ必要はありません。
出力がどのように見えるか
traceroute to google.com (142.250.80.46), 64 hops max, 52 byte packets
1 192.168.1.1 (192.168.1.1) 2.849 ms 2.103 ms 1.987 ms
2 96.120.68.69 (96.120.68.69) 12.445 ms 11.203 ms 10.987 ms
3 68.87.167.117 (68.87.167.117) 14.221 ms 13.008 ms 12.445 ms
4 * * *
5 72.14.215.171 (72.14.215.171) 18.334 ms 17.112 ms 16.889 ms
6 108.170.246.33 (108.170.246.33) 19.441 ms 18.902 ms 18.776 ms
7 lga34s32-in-f14.1e100.net (142.250.80.46) 20.112 ms 19.887 ms 19.654 ms
列は以下のとおりです:
- ホップ番号(一番左):チェーン内の位置。ホップ 1 がホームルーター。
- ホスト名と IP:ルーターの識別情報。利用可能な場合は逆引き DNS でホスト名が表示され、そうでなければ IP だけが表示されます。
- 3 つの時間計測(ミリ秒):traceroute は各ホップに 3 つのプローブを送ります。これらは各プローブの往復時間です。3 つの計測値で不一致を見つけられます:2 つが 12ms で 1 つが 80ms なら、そのホップには時折スパイクがあります。
便利なフラグ
| フラグ | 効果 |
|---|---|
-n |
DNS ルックアップをスキップ。IP アドレスのみ表示、より速い。 |
-m 30 |
最大ホップ数を設定(デフォルトは 64)。宛先が近いことが分かっている場合に便利。 |
-q 1 |
3 つではなく 1 つのプローブのみ送信。より速く、データが少ない。 |
-w 2 |
5 秒ではなく各ホップで 2 秒のみ待機。応答しないホップへの実行を速める。 |
より速い結果のための一般的な組み合わせ:
traceroute -n -q 1 -w 2 google.com
Traceroute の結果を読む方法
レイテンシの推移
レイテンシは一般的にホップがあなたから離れるほど増加します。ホームルーターは 1〜5ms で応答します。ISP の機器は 10〜20ms かもしれません。国際的な宛先は 100〜200ms 以上になることがあります。この増加は正常です。
探すべきは突然のジャンプです:似たような範囲の複数の連続したホップがあり、その後 1 つのホップでレイテンシが急激に上昇し、以降のすべてのホップでも高いままになる。そのスパイクが遅延が発生している箇所を指しています。
1 つのホップでレイテンシが急上昇するが次のホップで元に戻る場合、そのルーターが診断パケットへの応答を優先しない方法で処理していますが、実際のデータはそこを問題なく通過しています。一部のルーター、特に企業やキャリアネットワークのものは、通常のトラフィックを正常に通過させながら traceroute プローブへの応答を後回しにするよう設定されています。
アスタリスク:* * *
アスタリスクの行は、そのホップのルーターがタイムアウト内に返信を送らなかったことを意味します。3 つの原因:
- ICMP をブロックするファイアウォール:多くのルーター、特に企業やキャリアネットワークのものは、traceroute プローブを黙ってドロップするよう設定されています。これが最も一般的な理由です。
- レート制限:ルーターは一部のプローブには応答したが全部ではない。
* 14ms *のように部分的な応答が見えることがあります。 - 実際のパケットロス:ホップ間のリンクに本当の問題がある。
重要なテストはアスタリスクの後に何が起こるかです。ルートが続いて宛先に到達する場合、アスタリスクはほぼ確実にファイアウォールの設定であり、本当の問題ではありません。ルートがアスタリスクで止まって宛先に到達しない場合、その地点に本当の問題があります。
完全な例を読む
1 192.168.1.1 2 ms 2 ms 1 ms ← ホームルーター、正常
2 10.20.30.1 11 ms 10 ms 10 ms ← ISP の最初のホップ、正常
3 * * * ← 応答しないホップ、おそらくファイアウォール
4 68.86.90.34 14 ms 13 ms 13 ms ← ルートは続く、ホップ 3 はファイアウォールだった
5 96.110.40.1 15 ms 15 ms 15 ms
6 96.110.40.2 180 ms 178 ms 179 ms ← ここでレイテンシが急上昇、このリンクにボトルネック
7 162.151.77.10 182 ms 181 ms 180 ms ← 以降ずっと高い
8 destination 184 ms 183 ms 182 ms
このトレースでは:ホップ 1〜5 は正常、応答しないホップ 3 はファイアウォール(ルートは問題なく続く)、ホップ 6 で何かが遅くなっています。問題はホップ 6 またはその前にあります。
一般的なパターンとその意味
ホップ 1 から一貫して高いレイテンシ:ホームルーターがボトルネックです。過負荷の古いルーター、同時接続クライアントが多すぎるルーター、ハードウェアに問題があるルーターで発生します。再起動で改善することもありますが、古いハードウェアの交換がより長持ちする修正です。
ホップ 2〜4 でのレイテンシスパイク:ISP のローカルインフラが輻輳しています。住宅地でのピーク時間帯(夕方)によく見られます。ISP に報告するために電話することはできますが、待つしかないことが多いです。
1 つのホップで高いレイテンシ、次のホップでは正常:そのルーターが ICMP 応答を優先していません。その実際のデータ経路はおそらく問題ありません。宛先でもレイテンシが高くない限り、対応する必要はありません。
レイテンシが急激に上昇してずっと高いまま:これが本当のシグナルです。ジャンプするホップを見つければそこがボトルネックです。ホップ 1〜2 ならローカルネットワークです。ホップ 3〜5 なら ISP です。ホップ 8 以降なら手の届かない場所にあります。
ルートが予期しない地域を通過する:近くのサーバーへの接続が別の地域や大陸を経由してルーティングされることがあります。これにより大幅なレイテンシが加わる可能性があります。インターネットルーティングはコストとピアリング協定を最適化するルーティングテーブルによって制御されており、物理的な近さが必ずしも最適とは限りません。50 マイル先のデータセンターへの接続がヨーロッジを経由している場合、それはどこかのルーティングテーブルの設定ミスです。
パケットが宛先に到達しない:ルートが完全に止まります。宛先がダウンしているか、あなたと宛先の間のリンクに障害があるか、ファイアウォールがプローブが通過するのをブロックしています。同じ宛先に ping を試みて ICMP が少なくとも返信を受け取るか確認してください。
Terminal なしで Mac で Traceroute を実行する
Terminal で作業したくない場合、NetUtil にはテーブルベースのインターフェイスを持つ traceroute ツールが含まれています。ホスト名を入力してトレースをクリックします。結果はホップごとに構造化されたテーブルで表示され、ホップ番号、ホスト名、IP アドレス、3 つのタイミング値の列があります。
Apple はかつてこれを Network Utility に含めていました。グラフィカルな traceroute タブを持つ組み込みアプリです。Network Utility は macOS Monterey で削除されました。NetUtil はその traceroute とともに ping、DNS ルックアップ、ポートスキャン、その他の診断をカバーする無料の代替品です。
GUI が Terminal 出力より実用的な利点があるのは単に見た目だけではありません。数分間隔で実行した 2 つのトレースを比較するとき、同じ列レイアウトで別々のウィンドウに表示されることで違いが見つけやすくなります。高レイテンシのホップは生のテキストをスキャンしなくても目立ちます。
すべては Mac 上でローカルに実行されます。Traceroute プローブはサードパーティサーバーを経由せずに Mac から直接ターゲットに送られます。
見つけたことで何をするか
Traceroute は診断しますが修正はしません。学んだことが次に何をすべきかを決めます。
ホップ 1〜2 の問題(ローカルネットワーク):ルーターを再起動します。ネットワーク上の他のデバイスで問題が発生するか確認します。1 つのデバイスだけなら、そのデバイスのネットワーク設定を確認します。すべてのデバイスなら、ルーターが問題です。
ホップ 3〜5 の問題(ISP):traceroute の出力を持ってサポートに電話します。どのホップが遅いかを知ることで、サポートチームが具体的に見るものができます。その IP アドレスでの輻輳や問題について具体的に尋ねてください。
ISP を超えた問題:遅いホップがチェーンのずっと先にある場合、バックボーンネットワークや宛先のインフラにある可能性が高いです。通常はあなた側でできることはありません。後で再確認するか、VPN を経由して別の経路がボトルネックを回避するか試してみてください。
宛先にまったく到達できない:downdetector.com のようなサービスを使って、サイトが全員にとってダウンしているか確認します。一般的な障害でない場合は、別のネットワーク(スマートフォンの LTE など)から試して、問題があなたの接続に特有なのかより広範なのかを確認します。
何かが遅く感じたら、最悪のことを想定する前に traceroute を実行してください。約 30 秒かかり、問題が自分で修正できるものなのか待つしかないものなのかをすぐに教えてくれます。