Linux用のTCP/IP 統計情報

ネットワーク・ソフトウェアは様々なコンポーネントに関連し、発生する可能性のある問題が増加しています。ここでは、ネットワークに関する統計情報に役立つLinux 下で使用するユーティリティを紹介します。

ネットワーク・インタフェースの表示

最初に、Linux がネットワーク・カードを認識するかどうかを確認する必要があります。ifconfig コマンドを使用して、現在設定されているネットワーク・インタフェースを表示します。

コンソール・プロンプトで、次のように入力します。
ifconfig

次のような出力が表示されます。

eth0 Link encap:Ethernet HWaddr 00:A0:24:58:34:FF
inet addr:172.31.141.161 Bcast:172.31.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:121222 errors:0 dropped:0 overruns:0 frame:0
TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0xf8e0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0

上記の出力を見ると、このシステムで 2 つのインタフェースがアクティブであることがわかります。1 つはループバック・インタフェース (lo)、もう 1 つは Ethernet カード (eth0) です。インタフェースごとに、IP アドレスと、配信および送信されたパケットに関する統計情報が表示されます。IP アドレスがわかったら、そのマシンを別のマシンが認識できることを確認する必要があります。これを行うには、ルーティング・テーブルをチェックします。

IP ルーティング・テーブルのチェック

別のホストへの接続をチェックするときに問題が発生した場合は、IP ルーティング・テーブルをチェックして、デフォルト・ゲートウェイが指定されているかどうか確認してください。また、ゲートウェイのルーティング・テーブルをチェックして、そのルーティング・テーブルに外部ネットワークへのパスがあることを確認してください。

コンソール・プロンプトで、次のように入力します。
route

次のような出力が表示されます。

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.31.0.0 pockb-linux.syb 255.255.0.0 UG 0 0 0 eth0
172.31.0.0 * 255.255.0.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default waterloo.sybase UG 0 0 0 eth0

ゲートウェイは、宛先に到達するために使用されるゲートウェイ・ホスト (通常はルータ) です。ゲートウェイが設定されていない場合は、文字 * が表示されます。ルートの特性は、フラグによって表されます。デフォルト・ルートの場合と同様に、複数の特性を持つことができます。使用可能なフラグは、次のとおりです。

U – ルートは稼働しています。
H – ルートはホストです。
G – ルートはゲートウェイを通過しています。

この例が示すように、ローカル・ネットワークでは eth0 Ethernet インタフェースが使用され、デフォルト・ゲートウェイもその Ethernet インタフェース上にあります。また、デフォルト・ゲートウェイのステータス・フラグ UG が設定されているので、ルートがアクティブであることがわかります。次に、ネットワークの別のマシンからこのマシンに実際に到達できるかどうかをチェックします。

ホストへの接続性のチェック

特定のホストへのネットワーク・パスをチェックするには、ping コマンドを使用します。ping では、他のシステムが稼働中かどうかを確認し、そのシステムとの通信における往復遅延を計算できます。

コンソール・プロンプトで、次のように入力します。
ping sybase.com
次のような出力が表示されます。

PING sybase.com (192.138.151.66) from 172.31.143.127 : 56(84) bytes of data.
64 bytes from 192.138.151.66: icmp_seq=0 ttl=251 time=95.0 ms
64 bytes from 192.138.151.66: icmp_seq=1 ttl=251 time=108.6 ms
64 bytes from 192.138.151.66: icmp_seq=2 ttl=251 time=92.1 ms
64 bytes from 192.138.151.66: icmp_seq=3 ttl=251 time=102.1 ms
64 bytes from 192.138.151.66: icmp_seq=4 ttl=251 time=95.5 ms
(ここで [Ctrl-C] を押します)
— sybase.com ping statistics —
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 92.1/98.6/108.6 ms

一部のシステムでは、リモート・システムが稼働中であることだけが ping によって通知されます。Linux では、ping の実行は [Ctrl + C] を押して停止するまで継続します。

ネットワーク・ステータスのチェック

ネットワークのステータスをチェックするには、netstat コマンドを使用します。このコマンドを実行すると、さまざまなタイプのネットワーク接続 (TCP 接続や UDP 接続など) のステータスが表示されます。次のように netstat ?i オプションを使用すると、インタフェースのステータスをすぐに表示できます。

コンソール・プロンプトで、次のように入力します。
netstat -i

次のような出力が表示されます。

Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 0 0 0 84 0 0 0 BRU
lo 3924 0 0 0 0 0 0 0 0 0 LRU

次に、各種カラムについて説明します。

MTU – このインタフェースによって 1 回の転送で送信できる最大バイト数
Met – このインタフェースのメトリック値
RX-OK – エラーなしで受信したパケットの数
RX-ERR – エラー付きで受信したパケットの数
RX-DRP – 削除されたパケットの数
RX-OVR – 超過したパケットの数
TX-OK – エラーなしで転送されたパケットの数
TX-ERR – エラー付きで転送されたパケットの数
TX-DRP – 転送時に削除されたパケットの数
TX-OVR – 超過エラーによって削除されたパケットの数

フラグ
このフィールドには、次のようなフラグが表示されます。

A – インタフェースは、マルチキャスト・アドレスに対するパケットを受信します。
B – インタフェースは、ブロードキャスト・パケットを受信します。
D – インタフェース・デバッグ機能が有効です。
L – これはループバック・インタフェースです。
M – インタフェースは、プロミスキャス・モードです。
N – インタフェースはパケット上のトレーラを処理しません。
O – このインタフェースでは、アドレス解決プロトコルがオフになっています。
P – このインタフェースは、Point-to-Point 接続として使用中です。
R – インタフェースが実行中です。
U – インタフェースがアクティブ化されています。

このケースでは、ループバックおよび Ethernet インタフェースの現在ステータスが出力に表示されます。eth0 インタフェースは、ブロードキャスト・パケットを受信するように設定されています。この eth0 インタフェースはアクティブであり、実行中です。

もう 1 つの便利な netstat オプションは ?t です。このオプションを指定すると、アクティブな TCP 接続がすべて表示されます。netstat ?t の典型的な結果を次に示します。

コンソール・プロンプトで、次のように入力します。

netstat -t

次のような出力が表示されます。

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
Tcp 0 0 pockb-linux.sybase:2638 pockb-pc.sybase.co:1949 ESTABLISHED