はい、承知いたしました! データセンターの現場で培った経験と、技術メディアでの執筆経験を活かし、インフラやネットワークの初学者の方にも分かりやすく、かつ実践的な内容でブログ記事を執筆します。郵便配達の例えなども交えながら、親しみやすく丁寧な解説を心がけますね。
—
ネットワークの「健康診断」! netstat でインターフェースとルーティングテーブルを覗いてみよう
こんにちは! NOC(ネットワークオペレーションセンター)で長年、データセンターの心臓部とも言えるネットワークと格闘してきたベテランエンジニアであり、技術ブログの執筆もしている者です。
「ネットワークって、なんだか難しそう…」と感じているあなた! 大丈夫です。このブログでは、難しい専門用語や複雑なパケット構造の話は最小限にして、まるで身近な「郵便配達」に例えながら、ネットワークが「元気かどうか」を診断するコマンドについて、一緒に学んでいきましょう。
今回は、ネットワーク運用に欠かせない強力なツール netstat を使って、ネットワークインターフェース(ネットワークカードのことですね)の「健康状態」と、データがどこへ向かうべきかを決める「道しるべ」であるルーティングテーブルをチェックする方法に焦点を当てます。
ネットワークも「健康診断」が必要!
私たちの体調が悪くなると、熱が出たり、咳が出たり、色々なサインが出てきますよね。それと同じように、ネットワーク機器も調子が悪くなると、パケット(データの小さな塊)がうまく送れなくなったり、遅延が発生したり、といった「不調のサイン」を出します。
これらのサインを見逃さずに、早期に原因を特定し、対処するのが私たちNOCエンジニアの仕事です。そのために、普段からネットワーク機器の状態を「健康診断」のようにチェックしているんです。
netstat って、どんなコマンド?
netstat というコマンドは、ネットワークの状態を「覗き見」するのにとても役立つツールです。
「net」はネットワーク、「stat」は統計情報、つまり「ネットワークの統計情報を見る」コマンドだと思ってください。
このコマンドを使うと、
- 今、どんな通信が活発に行われているか?
- ネットワークインターフェースで、エラーやパケットのロスは発生していないか?
- データは、どこへ向かっていくべきか、きちんと道筋が設定されているか?
といった、ネットワークの「健康状態」や「交通整理」の状況を確認できるんです。
今回は、特に以下の2つの重要な情報を netstat で確認する方法を見ていきましょう。
1. ネットワークインターフェースの統計情報: パケットの送受信で、エラーやドロップ(落としてしまったパケット)がないか?
2. ルーティングテーブル: データが目的地まで、迷わずたどり着けるように、正しい「道順」が設定されているか?
1. ネットワークインターフェースの「健康状態」をチェック!
皆さんの家やオフィスにインターネットを繋ぐための「LANケーブル」や「Wi-Fi」がありますよね? それらが、コンピューターやサーバーでは「ネットワークインターフェース」と呼ばれます。
このインターフェースは、常にたくさんのパケットを受け取ったり、送り出したりしています。でも、時には電波の干渉やケーブルの不具合、あるいはネットワーク機器自体の問題で、パケットがうまく送れなかったり、途中で「落とされて」しまったりすることがあるんです。
netstat コマンドに -i オプションを付けると、これらのインターフェースごとの統計情報を見ることができます。
郵便配達で例えると…
これは、郵便局の「集配担当者」が、担当エリアで「配達した手紙の数」「配達中に破損してしまった手紙の数」「配達できなかった手紙の数」などを記録しているようなイメージです。
もし、「破損してしまった手紙」や「配達できなかった手紙」の数が異常に多いとしたら、それは担当エリアの道路に問題があるか、配達員さんに何か問題があるかもしれませんよね。ネットワークも同じで、エラーやドロップが多い場合は、そのインターフェースに何らかの問題が発生している可能性が高いんです。
実際に見てみよう!
ターミナル(コマンドを入力する画面)で、以下のコマンドを実行してみてください。
# netstat -i
実行すると、以下のような情報が表示されるはずです。(環境によって表示は多少異なります)
Kernel Interface table file=/proc/net/dev
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 12345678 0 0 0 11234567 0 0 0 BMRU
lo 65536 9876543 0 0 0 9876543 0 0 0 LU
eth1 1500 100 5 2 0 200 0 0 0 BMRU
この表の見方ですが、特に注目してほしいのは以下の列です。
Iface: インターフェースの名前です。eth0やeth1は有線LAN、loはループバックインターフェース(自分自身と通信するための特別なインターフェース)などを示します。RX-OK: 受信した正常なパケット数。RX-ERR: 受信時に発生したエラーの数。RX-DRP: 受信時にドロップ(破棄)されたパケット数。TX-OK: 送信した正常なパケット数。TX-ERR: 送信時に発生したエラーの数。TX-DRP: 送信時にドロップ(破棄)されたパケット数。
もし、RX-ERR や RX-DRP、TX-ERR や TX-DRP の値が、他のインターフェースに比べて異常に高かったり、継続的に増え続けたりしている場合は、そのインターフェースに問題がある可能性が高いと判断できます。例えば、eth1 の例では、受信エラーが5件、ドロップが2件発生していますね。これは、もしかしたら eth1 に接続されているケーブルに問題があるか、あるいはネットワーク機器側で少し混雑しているサインかもしれません。
IF-MIB に基づく統計情報?
「IF-MIB」という言葉が出てきましたが、これはネットワーク機器が情報を管理するための「決まりごと」のようなものです。 netstat -i の結果は、このIF-MIBで定義されている情報の一部を表示していると考えてください。IF-MIB には、パケットの送受信だけでなく、インターフェースのステータス(アップしているか、ダウンしているか)など、もっと詳細な情報も含まれています。
さらに詳しく! -e オプションで詳細情報も
もし、もっと詳しい情報を見たい場合は、-e オプションを付けてみましょう。
# netstat -ie
これにより、MACアドレスやMTU(Maximum Transmission Unit:一度に送信できる最大のデータサイズ)などの情報も表示されます。
Kernel Interface table file=/proc/net/dev
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 12345678 0 0 0 11234567 0 0 0 BMRU
eth0 Link encap:Ethernet HWaddr 00:1A:2B:3C:4D:5E
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::21a:2bff:fe3c:4d5e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12345678 errors:0 dropped:0 overruns:0 frame:0
TX packets:11234567 errors:0 dropped:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12345678 (11.7 GiB) TX bytes:11234567 (10.7 GiB)
lo 65536 9876543 0 0 0 9876543 0 0 0 LU
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:9876543 errors:0 dropped:0 overruns:0 frame:0
TX packets:9876543 errors:0 dropped:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9876543 (9.4 MiB) TX bytes:9876543 (9.4 MiB)
eth0 の部分を見ると、MACアドレス (HWaddr) やIPアドレス (inet addr)、IPv6アドレス (inet6 addr)、そして「UP BROADCAST RUNNING」といったインターフェースの状態 (UP は起動中、RUNNING は通信可能であることを示します) など、より詳細な情報が確認できますね。
2. ネットワークの「道しるべ」! ルーティングテーブルをチェック!
さて、次に重要なのが ルーティングテーブル です。
これは、ネットワーク機器が「この宛先には、この道(インターフェース)を通ってデータを送ればいいんだな」という、まるで地図や案内図のような情報を持っているテーブルです。
皆さんが、どこかへ出かけるときに、ナビアプリや地図を見て「この道を行けば目的地に着く」と判断しますよね? ネットワークのパケットも、このルーティングテーブルを見て、宛先までたどり着くための正しい「道順」を決めるんです。
郵便配達で例えると…
これは、郵便局の「仕分け担当者」が、配達先の住所を見て、どの配達員さんに、どのルートで手紙を届けてもらうかを決める「仕分けリスト」のようなものです。
もし、この「仕分けリスト」に間違いがあったら、手紙は意図しない場所へ送られてしまったり、いつまで経っても届かなくなってしまったりします。ネットワークも同じで、ルーティングテーブルに誤りがあると、通信ができなくなってしまうことがあるんです。
実際に見てみよう!
netstat コマンドに -r オプションを付けると、このルーティングテーブルを確認できます。
# netstat -r
実行すると、以下のような情報が表示されます。(ここでも、環境によって表示は異なります)
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
この表の見方ですが、特に重要なのは以下の列です。
Destination: 宛先のネットワークアドレスです。Gateway: 次にパケットを送るべきゲートウェイ(他のネットワークへの出入り口となる機器)のIPアドレスです。0.0.0.0は、この機器自身が直接宛先に到達できることを意味します。Genmask: 宛先ネットワークアドレスのサブネットマスクです。これで、Destinationがどの範囲のIPアドレスを指しているかが分かります。Flags: ルーティングエントリの状態を示します。U: ルートが有効 (Up)G: ゲートウェイを使用 (Gateway)H: ホスト宛て (Host)D: 動的にインストールされたルート (Dynamic)M: 変更されたルート (Modified)Iface: このルートで使用されるネットワークインターフェースです。
ルーティングテーブルの例を読み解く
例えば、上記の例で default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 という行を見てみましょう。
Destinationがdefault(つまり、どこにも当てはまらない場合)Gatewayが192.168.1.1Ifaceがeth0
これは、「どの宛先にも一致しない場合は、192.168.1.1 というゲートウェイを経由して、eth0 インターフェースからパケットを送り出してくださいね」という意味になります。
192.168.1.1 は、通常、ルーターのIPアドレスであることが多いですね。つまり、「インターネットに出たいときは、このルーターに聞いてね」という指示です。
次に 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 という行です。
Destinationが192.168.1.0Genmaskが255.255.255.0Ifaceがeth0
これは、「192.168.1.0 から 192.168.1.255 までのIPアドレス宛てのパケットは、直接 eth0 インターフェースから送ってくださいね」という意味になります。
これは、この機器と同じネットワークセグメント(この場合は 192.168.1.0/24)にある宛先への通信で、ゲートウェイは必要ないことを示しています。
IPv4/IPv6 のルーティングテーブル
netstat -r は、デフォルトではIPv4のルーティングテーブルを表示しますが、IPv6も利用している環境であれば、IPv6のルーティングテーブルも確認できます。
IPv6のルーティングテーブルを確認するには、-6 オプションを付けます。
# netstat -r -6
実行すると、IPv6アドレスに基づいたルーティング情報が表示されます。
Kernel IPv6 routing table
Destination Next Hop Flag Metric Ref Use Iface
::1/128 fe80::1%lo U 256 0 0 lo
default fe80::1%eth0 UG 100 0 0 eth0
fe80::/10 :: U 256 0 0 eth0
fe80::/10 :: U 256 0 0 eth1
default の行を見ると、IPv6のデフォルトルートも設定されていることが分かりますね。
このように、netstat -r (IPv4) と netstat -r -6 (IPv6) を両方確認することで、ネットワークの通信経路が、IPv4とIPv6の両方で正しく設定されているかを監査することができます。
まとめ: netstat でネットワークの「健康状態」を把握しよう!
いかがでしたでしょうか?
今回は、netstat コマンドを使って、ネットワークインターフェースの統計情報とルーティングテーブルを確認する方法を見てきました。
netstat -iで、パケットのエラーやドロップがないか、インターフェースの「健康状態」をチェック!netstat -rで、データが迷子にならないための「道しるべ」であるルーティングテーブルが正しく設定されているかを確認!
これらの情報を普段からチェックしておくことで、ネットワークに問題が発生した際に、原因究明の糸口を素早く見つけることができるようになります。
最初は少し戸惑うかもしれませんが、実際にコマンドを打ち込んで、表示される情報を見ていくうちに、きっと「なるほど!」と思える瞬間がやってくるはずです。
「難しそう」と感じることも、一歩ずつ理解していけば、必ず自分の力になります。ぜひ、今日からあなたのネットワーク運用に netstat を活用してみてくださいね!
それでは、また次回お会いしましょう!
コメント