tracepathを使ったネットワークのトラブルシューティング
このステップでは、「tracepath」コマンドを使ってネットワークの問題をトラブルシューティングする方法を学びます。
まず、iptables
ファイアウォールを使ってリモートホストへの接続をブロックすることで、ネットワークの問題をシミュレートしましょう。
$ sudo iptables -A OUTPUT -d 8.8.8.8 -j DROP
このコマンドは、Googleの公開DNSサーバーの1つであるIPアドレス8.8.8.8
へのすべての出力トラフィックをブロックします。
次に、「tracepath」コマンドを使って8.8.8.8
までの経路を追跡してみましょう。
$ sudo tracepath 8.8.8.8
1?: [LOCALHOST] pmtu 1500
1: 192.168.1.1 0.161ms
1: 192.168.1.1 0.158ms
2: 10.0.0.1 1.694ms
3: no reply
4: no reply
5: no reply
Resume: pmtu 1500 hops 5 back 2
出力例:
出力は、「tracepath」コマンドが3つ目のホップまで経路を追跡できたことを示していますが、その後、接続がブロックされているか、またはリモートホストが応答していないことを示す「no reply」メッセージに遭遇しました。
この問題をトラブルシューティングするには、次のことを試してみることができます。
-
ファイアウォールのルールを確認して、接続が予想通りにブロックされていることを確認します。
$ sudo iptables -L
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere 8.8.8.8
-
リモートホストにpingを送信して、接続が実際にブロックされているかどうかを確認します。
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2023ms
出力は、100%のパケットロスによって接続がブロックされていることを示しています。
-
ファイアウォールのルールを削除して接続を復元します。
$ sudo iptables -D OUTPUT -d 8.8.8.8 -j DROP
接続がブロックされているポイントを特定するために「tracepath」コマンドを使うことで、迅速にネットワークの問題をトラブルシューティングし、根本原因を特定することができます。