はじめに
ネットワーク接続性は、あらゆる最新のコンピューティングシステムにとって基本的な側面です。問題が発生した場合、それらを診断する方法を知ることは、開発者やシステム管理者にとって不可欠なスキルとなります。この実験(Lab)では、ネットワーク接続を体系的にテストおよびトラブルシューティングするための、不可欠な Linux コマンド群を順を追って説明します。
基本的な到達可能性を確認するための ping、データがネットワークを介して辿る経路をマッピングするための traceroute、DNS 解決を検証するための nslookup、およびシステムのルーティングテーブルを検査するための ip route の使用方法を学習します。この実験(Lab)の終わりまでに、一般的なネットワーク問題の診断に関する強固な基盤を築くことができるでしょう。
ping 127.0.0.1 コマンドでローカルホストを ping する
このステップでは、ping コマンドを使用して、ローカルマシンのネットワークスタックをテストします。これは、あらゆるネットワークトラブルシューティングプロセスにおける最も基本的かつ不可欠な最初のステップです。
ping コマンドは、ICMP (Internet Control Message Protocol) ECHO_REQUEST パケットをターゲットホストに送信し、ECHO_RESPONSE を待ちます。アドレス 127.0.0.1 は標準の「localhost」または「ループバック」アドレスであり、常に現在使用しているマシンを指します。ローカルホストへの Ping が成功すると、システムのネットワーキングソフトウェアが正しく動作していることが確認できます。
コマンドが無限に実行されるのを防ぐため、-c 4 オプションを使用して 4 つのパケットのみを送信します。
ターミナルで次のコマンドを実行してください。
ping -c 4 127.0.0.1
以下のような出力が表示され、パケットが正常に送信および受信されたことを示すはずです。
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.049 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.048 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.047 ms
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3074ms
rtt min/avg/max/mdev = 0.045/0.047/0.049/0.001 ms
0% packet loss の行は、ローカルネットワークインターフェースが正しく機能していることを確認します。
ping 172.60.0.1 コマンドでゲートウェイを ping する
このステップでは、ローカルネットワークのゲートウェイへの接続性をテストするために ping コマンドを使用します。ゲートウェイは、ローカルネットワークをインターネットを含む他のネットワークに接続するルーターです。ゲートウェイへの Ping が成功すると、お使いのマシンがローカルネットワークと通信できることが確認できます。
まず、デフォルトゲートウェイの IP アドレスを見つける必要があります。これは、ip route コマンドを使用して、「default」ルートをフィルタリングすることで実行できます。
ゲートウェイを見つけるために、次のコマンドを実行します。
ip route | grep default
出力にはデフォルトルートが表示されます。via の直後に続く IP アドレスがゲートウェイのアドレスです。この実験(Lab)環境では、通常 172.60.0.1 です。
default via 172.60.0.1 dev eth1
次に、ping コマンドを使用して、このゲートウェイアドレスへの接続性をテストします。-c 4 オプションを使用することを忘れないでください。
ping -c 4 172.60.0.1
成功した場合の出力は次のようになります。
PING 172.60.0.1 (172.60.0.1) 56(84) bytes of data.
64 bytes from 172.60.0.1: icmp_seq=1 ttl=64 time=0.075 ms
64 bytes from 172.60.0.1: icmp_seq=2 ttl=64 time=0.051 ms
64 bytes from 172.60.0.1: icmp_seq=3 ttl=64 time=0.052 ms
64 bytes from 172.60.0.1: icmp_seq=4 ttl=64 time=0.053 ms
--- 172.60.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3060ms
rtt min/avg/max/mdev = 0.051/0.057/0.075/0.010 ms
この結果は、お使いのマシンがローカルネットワークゲートウェイと通信できることを確認します。
traceroute google.com コマンドでトレースルートを実行
このステップでは、traceroute を使用して、お使いのマシンから google.com のような外部宛先までのネットワークパスをトレースします。このコマンドは、接続がその経路のどこで失敗しているかを特定するのに役立ちます。
traceroute はデフォルトではインストールされていない場合があります。まず、パッケージリストを更新してからインストールします。新しいパッケージをインストールする前に sudo apt-get update を実行することは良い習慣です。
sudo apt-get update
次に、traceroute ユーティリティをインストールします。-y フラグは、プロンプトに対して自動的に「yes」と応答します。
sudo apt-get install -y traceroute
インストールが完了したら、traceroute を google.com に対して実行できます。これにより、パケットが宛先に到達するために通過するルーター(ホップ)のシーケンスが表示されます。
traceroute google.com
出力には、各ホップ、その IP アドレス、およびパケットが到達するまでの往復時間(round-trip time)が一覧表示されます。出力は異なりますが、大まかには次のようになります(簡潔にするために一部を省略しています)。
traceroute to google.com (142.250.191.46), 30 hops max, 60 byte packets
1 uswest5 (172.60.0.1) 0.031 ms 0.010 ms 0.010 ms
2 10.220.8.54 (10.220.8.54) 0.289 ms 10.220.8.38 (10.220.8.38) 0.275 ms 10.220.8.54 (10.220.8.54) 0.263 ms
3 11.73.4.217 (11.73.4.217) 2.134 ms 11.73.4.241 (11.73.4.241) 2.141 ms 11.73.4.185 (11.73.4.185) 1.409 ms
...
8 142.251.65.127 (142.251.65.127) 4.316 ms 2.849 ms 4.335 ms
9 nuq04s42-in-f14.1e100.net (142.250.191.46) 4.296 ms 1.556 ms 2.964 ms
各行はパス上のルーターを表します。アスタリスク * * * は、ルーターがプローブに応答しなかったことを示します。
nslookup google.com コマンドで DNS 解決を確認
このステップでは、ドメインネームシステム(DNS)の解決を確認します。DNS はインターネットの電話帳のようなものであり、人間が読めるドメイン名(例:google.com)を機械が読める IP アドレス(例:142.250.199.14)に変換します。DNS が機能していない場合、ネットワーク接続が正常であっても、名前でウェブサイトにアクセスできなくなります。
nslookup コマンドは、この情報を取得するために DNS サーバーに問い合わせるために使用されるツールです。
google.com の IP アドレスを検索するために、次のコマンドを実行します。
nslookup google.com
出力には、どの DNS サーバーがリクエストに応答したか、およびドメイン名に関連付けられている IP アドレスが表示されます。
Server: 127.0.0.11
Address: 127.0.0.11#53
Non-authoritative answer:
Name: google.com
Address: 142.250.191.46
Name: google.com
Address: 2607:f8b0:4005:80f::200e
Server と Address の行は、システムが使用している DNS リゾルバを示しています。Non-authoritative answer セクションには、google.com の IPv4(Address: 142.250.191.46)および IPv6(Address: 2607:...)アドレスが提供されます。このような成功した応答は、DNS 解決が正しく機能していることを確認します。
ip route show で接続性の問題を解決
このステップでは、カーネルの IP ルーティングテーブルを調べます。ルーティングテーブルは、システムがネットワークトラフィックをどこに送信するかを決定するために使用するルールのセットです。不正確または欠落しているルートは、接続問題の一般的な原因となります。
ip route show コマンド(またはその短縮エイリアスである ip r)は、メインのルーティングテーブルを表示します。これは、低レベルでネットワークの問題を診断するための最も重要なコマンドの 1 つです。
ルーティングテーブルを表示するために、次のコマンドを実行します。
ip route show
出力には、システムが認識しているすべてのルートが一覧表示されます。
default via 172.60.0.1 dev eth1
172.60.0.0/16 dev eth1 proto kernel scope link src 172.60.1.160
最も重要な行は default ルートです。
default via 172.60.0.1 dev eth1: この行は、テーブルに明示的にリストされていないすべての宛先について、トラフィックがネットワークインターフェースeth1を介してゲートウェイ172.60.0.1(ステップ 2 で ping した宛先)に送信されることを意味します。
このデフォルトルートが存在しない場合、システムはインターネットにトラフィックを送信する方法を知らず、ping google.com のようなコマンドは「Network is unreachable」(ネットワーク到達不能)エラーで失敗します。このテーブルを理解することは、sudo ip route add default via <gateway_ip> のようなコマンドを使用して正しいデフォルトルートを追加することにより、このような問題を解決するための鍵となります。
まとめ
この実験(Lab)の完了、おめでとうございます!Linux システムにおけるネットワーク接続の問題をテストし、診断するための体系的なアプローチを学習しました。
以下の必須コマンドの使用を実践しました。
ping: ローカルマシンおよびネットワークゲートウェイへの到達可能性をテストするため。ip route: デフォルトゲートウェイを見つけ、システムのルーティングテーブルを検査するため。traceroute: パケットがリモートホストに到達するまでの経路をトレースし、潜在的な障害点を特定するため。nslookup: ドメインネームシステム(DNS)がホスト名を IP アドレスに正しく解決しているかを確認するため。
自己(ローカル)、ローカルネットワーク、インターネット、そして最後に名前解決の確認へと進むこの論理的な順序は、遭遇する可能性のあるほぼすべてのネットワーク問題をトラブルシューティングするための強力なフレームワークを提供します。



