【入門編】 netstatを用いたインターフェース統計情報とルーティングテーブルの確認 – トラブルシューティング&ネットワーク運用監視実践ガイド

はい、承知いたしました! データセンターの現場で培った経験と、技術メディアでの執筆経験を活かし、インフラやネットワークの初学者の方にも分かりやすく、かつ実践的な内容でブログ記事を執筆します。郵便配達の例えなども交えながら、親しみやすく丁寧な解説を心がけますね。

—

ネットワークの「健康診断」! 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.1
  • Iface が 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.0
  • Genmask が 255.255.255.0
  • Iface が 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 を活用してみてくださいね!

それでは、また次回お会いしましょう!

コメント

タイトルとURLをコピーしました