ping・tracerouteでネットワーク障害を切り分ける方法を実践解説

  • URLをコピーしました!

ここまでのネットワーク中級講座では、 L2 Switch、VLAN、Routing、NAT、ACL、Firewall、冗長化など、 Network通信を構成するさまざまな仕組みを学習してきました。

しかし実際の運用では、 知識を覚えるだけではなく、 「通信できないときに、どこに問題があるのかを調べる」 力が必要になります。

CLIENT 💻 PC 192.168.10.10
GATEWAY 📡 R1 192.168.10.1
ROUTER 📡 R2 10.0.0.2
SERVER 🖥 Server 192.168.20.10
「Serverへ接続できない」だけでは、
PC・LAN・Gateway・Routing・Firewall・Serverの どこに問題があるのか分かりません。

そこで障害箇所を絞り込むために利用される代表的なコマンドが、 pingtraceroute / tracertです。

🌐 NETWORK INTERMEDIATE

この記事はネットワーク中級講座の最終レッスンです。 学習順を確認したい場合は講座一覧から確認できます。

ネットワーク中級講座を見る →
LESSON GOAL この記事のゴール

pingとtracerouteのコマンドを覚えるだけではなく、 「どこまで通信できているかを順番に確認し、 障害範囲を狭めていく」 基本的なトラブルシューティングの考え方を身につけることを目指します。

目次

ネットワーク障害は「切り分け」が重要

「Webサイトへ接続できない」 という現象だけを見ても、 原因は1つとは限りません。

01 PC側

IP AddressやGateway設定が誤っている

02 LAN側

Switch・VLAN・Cableなどに問題がある

03 Routing

宛先NetworkへのRouteが存在しない

04 Security

ACLやFirewallで通信がBlockされている

05 Server側

ServerやApplicationが停止している

最初から原因を当てにいかない

トラブルシューティングでは、 確認結果から「正常な範囲」と「異常な範囲」を分ける ことが重要です。

pingとは?

pingは、 指定した宛先までIP通信できるかを確認する代表的なコマンド です。

一般的にはICMP Echo Requestを送信し、 相手からICMP Echo Replyが返ってくるか確認します。

PC-A
ICMP Echo Request
Server
ICMP Echo Reply

pingを実行してみよう

Windowsでは次のように実行できます。

Windows Command Prompt
C:\> ping 192.168.20.10

192.168.20.10 に ping を送信しています 32 バイトのデータ:
192.168.20.10 からの応答: バイト数=32 時間=3ms TTL=126
192.168.20.10 からの応答: バイト数=32 時間=2ms TTL=126

Linuxでは同じように、

Linux
$ ping 192.168.20.10

64 bytes from 192.168.20.10: icmp_seq=1 ttl=62 time=2.4 ms
64 bytes from 192.168.20.10: icmp_seq=2 ttl=62 time=2.1 ms

と確認できます。

pingはどこから確認すればよい?

いきなり遠くのServerだけにpingするのではなく、 近い場所から順番に確認する と障害範囲を絞りやすくなります。

STEP 1 自分自身 127.0.0.1
STEP 2 自分のIP 192.168.10.10
STEP 3 Default Gateway 192.168.10.1
STEP 4 Remote IP 192.168.20.10
STEP 5 Hostname server.example.com
「どこから失敗するか」を探す

Gatewayまでは成功するのにRemote Serverだけ失敗するなら、 PC自身やLocal LANより Gatewayより先のRouting・Firewall・Remote側 を疑いやすくなります。

例:Default GatewayまではpingできるがServerへ届かない

C:\> ping 192.168.10.1

Reply from 192.168.10.1: bytes=32 time<1ms TTL=255

C:\> ping 192.168.20.10

Request timed out.
Request timed out.

この場合、 少なくともPCからDefault Gatewayまでは通信できています。

OK PC → Gateway
CHECK Gatewayより先
Server

次に、 Gatewayより先のどこまで通信が進んでいるか を確認したくなります。

そこで利用するのが tracerouteです。

tracerouteとは?

tracerouteは、 宛先までに経由するRouterを確認するための代表的なコマンド です。

Windowsでは tracert、 Linuxなどでは traceroute を利用するのが一般的です。

HOP 0 PC
HOP 1 R1
HOP 2 R2
HOP 3 Server

tracertの結果を見てみよう

Windows
C:\> tracert 192.168.20.10

  1    <1 ms    <1 ms    <1 ms   192.168.10.1
  2     2 ms      2 ms      2 ms   10.0.0.2
  3     3 ms      3 ms      3 ms   192.168.20.10

Trace complete.

この結果なら、

HOP 1 192.168.10.1 Default Gateway
HOP 2 10.0.0.2 途中Router
HOP 3 192.168.20.10 Destination

という経路を通っていることが分かります。

tracerouteはどうやって経由Routerを調べる?

tracerouteでは、 IP Headerにある TTL(Time To Live) を利用します。

TTL = 1 R1で0 → R1を確認
TTL = 2 R2で0 → R2を確認
TTL = 3 Server到達 → 宛先確認

TTLを少しずつ増やしながらPacketを送ることで、 途中のRouterを順番に確認できます。

tracerouteの「* * *」は何を意味する?

障害調査でよく見るのが、 次のような結果です。

C:\> tracert 192.168.20.10

  1    <1 ms    <1 ms    <1 ms   192.168.10.1
  2     2 ms      2 ms      2 ms   10.0.0.2
  3     *         *         *      Request timed out.
  4     4 ms      4 ms      4 ms   192.168.20.10
「*」が出たHop=必ず障害箇所、ではありません

RouterやFirewallがtraceroute用の応答を返さない、 ICMPを制限している、といった理由でも *になる場合があります。

上の例ではHop 3が応答していませんが、 Hop 4のDestinationまで到達しています。

そのため、 Hop 3で通信が止まっているわけではありません。

本当に途中で通信が止まっている例

C:\> tracert 192.168.20.10

  1    <1 ms    <1 ms    <1 ms   192.168.10.1
  2     2 ms      2 ms      2 ms   10.0.0.2
  3     *         *         *      Request timed out.
  4     *         *         *      Request timed out.
  5     *         *         *      Request timed out.

Hop 2までは応答していますが、 その先から継続して応答がありません。

OK ~ R2
INVESTIGATE R2より先

この場合は、 R2より先のRoute、Link、Firewall、宛先側Networkなどを 調べるきっかけになります。

pingが通らない=通信不能とは限らない

これは障害切り分けで非常に重要です。

pingはICMPを利用しますが、 Network機器やServer側で ICMP Echoを拒否している 場合があります。

ICMP ping ✕
TCP / 443 HTTPS ✓

この場合、 pingは失敗してもWeb通信自体は正常です。

pingは「Network全体が正常か」を完全に証明するコマンドではない

pingの結果は重要な材料ですが、 Application通信やFirewall Policyなど 他の情報と合わせて判断します。

IP Addressなら通るのにHostnameでは失敗する場合

次のケースを考えてみましょう。

C:\> ping 192.168.20.10

Reply from 192.168.20.10

C:\> ping server.example.com

Ping request could not find host server.example.com.

IP Address宛てでは通信できています。

そのためNetwork経路そのものより、 DNS名前解決 に問題がある可能性が高くなります。

IP ADDRESS ✓ 通信可能
HOSTNAME ✕ 失敗
SUSPECT DNS

通信できないときの基本的な切り分けフロー

01 自分のNetwork設定を確認 IP / Mask / Gateway / DNS
02 Default Gatewayへping Local Networkを確認
03 宛先IPへping End-to-End到達性を確認
04 traceroute / tracert どこまで届くか確認
05 DNS / Port / Firewallを確認 Layerをさらに絞る

ここで実際に試してみよう:障害切り分けシミュレーター

Scenarioを選び、 疑似Terminalでpingやtracerouteを実行して 障害箇所を推測してみましょう。

INTERACTIVE LAB

Network Troubleshooting Terminal

TROUBLESHOOTING
Troubleshooting Console
C:\> 調査コマンドを選択してください。
YOUR DIAGNOSIS

どこに問題がありそうですか?

コマンドを実行してから判断してみましょう

1つの結果だけではなく、複数の確認結果を組み合わせることが重要です。

理解度チェック:この結果からどこを調べる?

C:\> ping 192.168.10.1

Reply from 192.168.10.1

C:\> ping 192.168.20.10

Request timed out.

C:\> tracert 192.168.20.10

1  192.168.10.1
2  10.0.0.2
3  * * *
4  * * *

最初に詳しく調査する範囲として適切なのはどれでしょうか?

回答を選択してください

「どこまでは正常と判断できるか」を考えましょう。

WindowsとLinuxでよく使う確認コマンド

目的 Windows Linux
IP設定確認 ipconfig ip addr
Routing確認 route print ip route
到達性確認 ping ping
経路確認 tracert traceroute
DNS確認 nslookup dig / nslookup

実務では「OSI参照モデルを逆引き」すると考えやすい

障害切り分けでは、 これまで学習してきたNetwork知識がつながります。

L7 Application / DNS
L4 TCP / UDP / Port
L3 IP / Routing / ping
L2 VLAN / MAC / Switch
L1 Cable / Link

たとえば、

Gatewayへpingできない → Local LAN / VLAN / IP設定などを確認
IPへpingできるがHostnameで失敗 → DNSを確認
pingは成功するがHTTPSだけ失敗 → TCP/443・Firewall・Applicationを確認

障害切り分けで覚えておきたい3つの考え方

01 近いところから確認する

PC → Gateway → Remote Networkという順番で、 正常範囲を少しずつ広げます。

02 1つの結果だけで断定しない

pingやtracerouteはFirewall設定などの影響も受けます。

03 正常な範囲を確定する

「ここまでは正常」と確定させることで、 調査範囲を狭めます。

確認問題:障害切り分けの基本を理解できたか確認しよう

QUESTION 01

PCからRemote Serverへ通信できない場合、 最初の切り分けとして適切なのはどれですか?

正解:B

近いNetworkから順番に確認することで、 どこまでは正常なのかを切り分けられます。

QUESTION 02

tracerouteで途中のHopに「* * *」が出た場合、 正しい考え方はどれですか?

正解:C

ICMP等への応答を返さない機器もあります。 その後のHopへ到達しているなら、 そのHop自体で通信が止まっているとは限りません。

QUESTION 03

IP Address宛てには通信できるのにHostnameでは失敗する場合、 最初に疑いやすいものはどれですか?

正解:A

IP通信が成立しているため、 Network経路より名前解決に問題がある可能性を疑います。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

pingは 宛先とのIP到達性を確認する代表的なコマンド

02

traceroute / tracertは 宛先までに経由するRouterを確認する ために利用できる

03

Network障害では 近い場所から順番に確認し、正常範囲を確定する ことが重要

04

ping失敗やtracerouteの *だけで 障害箇所を断定しない

05

IP / Routing / DNS / Port / Firewallなど、 複数Layerの結果を組み合わせて原因を絞る

NETWORK INTERMEDIATE COMPLETE

ネットワーク中級講座はここまでです

ここまで、 L2 Switch・VLAN・Routing・NAT・ACL・Firewall・冗長化・ 障害切り分けまで学習してきました。

基本用語を知る段階から、 「Packetがどう流れるか」 「なぜ通信できないのか」 を考えられるところまで Networkの理解を広げてきました。

NEXT STEP

さらに実践的なネットワークスキルへ

ここから先は、 より高度なRouting Protocol、 Network設計、 Security、 実機・仮想Labを使った構築など、 実践的なNetwork学習へ進む段階です。

上級学習コンテンツについては、 現在より実践的に学習できる形を準備しています。

ネットワーク上級 準備中
※ 上級コンテンツは現在準備中です。
NETWORK INTERMEDIATE

ネットワーク中級講座を振り返る

復習したい場合は、 ネットワーク中級講座の一覧ページへ戻れます。

← ネットワーク中級講座へ戻る
目次