Solaris のシステム管理 (第 3 巻)

netstat コマンド

netstat コマンドは、ネットワーク状態とプロトコル統計を表示します。TCP と UDP のエンドポイントの状態 (テーブル形式)、ルーティングテーブルの情報、インタフェースの情報を表示できます。

netstat は、選択したコマンド行オプションに応じて、さまざまな種類のデータを表示します。この表示は、特にシステム管理に役立ちます。このコマンドの構文は次のとおりです。


netstat [-m] [-n] [-s] [-i | -r] [-f address_family]

ネットワーク状態の判別のために最もよく使用されるオプションは、 sri です。オプションの説明については、netstat(1M) のマニュアルページを参照してください。

netstat コマンドで行う作業マップ

表 6-8 netstat コマンドで行う作業マップ

作業 

説明 

参照先 

プロトコル別に統計情報を表示する 

netstat コマンドの -s オプションを使用する

「プロトコル別の統計情報の表示方法」

ネットワークインタフェースの状態を表示する 

netstat コマンドの -i オプションを使用する

「ネットワークインタフェースの状態の表示方法」

ルーティングテーブルの状態を表示する 

netstat コマンドの -r オプションを使用する

「ルーティングテーブルの状態の表示方法」

プロトコル別の統計情報の表示方法

netstat-s オプションは、UDP、TCP、ICMP、および IP のプロトコルについて、プロトコル別の統計情報を表示します。

    コマンド行で次のコマンドを入力します。


    % netstat -s
    

結果は、下に示す出力例のように表示されます (出力の一部は省略してあります)。この情報には、プロトコルに問題のある箇所が示されることがあります。たとえば ICMP からの統計情報は、このプロトコルがどこにエラーを検出したかを示します。


UDP

      udpInDatagrams      =  39228     udpOutDatagrams     =  2455  
      udpInErrors         =     0

TCP

      tcpRtoAlgorithm     =     4      tcpMaxConn          =    -1
      tcpRtoMax           = 60000      tcpPassiveOpens     =     2
      tcpActiveOpens      =     4      tcpEstabResets      =     1
      tcpAttemptFails     =     3      tcpOutSegs          =   315
			.
			.
IP

      ipForwarding        =     2      ipDefaultTTL        =   255
      ipInReceives        =  4518      ipInHdrErrors       =     0
			.
			. 
ICMP

      icmpInMsgs          =     0      icmpInErrors        =     0
      icmpInCksumErrs     =     0      icmpInUnknowns      =     0
			.
			. 

IGMP:

0 messages received
0 messages received with too few bytes
0 messages received with bad checksum
0 membership queries received
0 membership queries received with invalid field(s)
0 membership reports received
0 membership reports received with invalid field(s)
0 membership reports received for groups to which we belong
0 membership reports sent

ネットワークインタフェースの状態の表示方法

netstat-i オプションは、このコマンドを実行したマシンで構成されているネットワークインタフェースの状態を表示します。

    コマンド行で次のコマンドを入力します。


    % netstat -i
    

次に示すのは、netstat -i による出力結果の例です。


 
Name Mtu  Net/Dest     Address   Ipkts    Ierrs Opkts    Oerrs  Collis  Queue
le0  1500 b5-spd-2f-cm tatra     14093893 8492  10174659 1119   2314178   0
lo0  8232 loopback     localhost 92997622 5442  12451748 0      775125    0

この表示から、各ネットワークについてマシンが送信し受信したとみなしているパケットの数が分かります。たとえば、サーバーについて表示される入力パケットカウント (Ipkts) はクライアントがブートを試みるたびに増加しているのに、出力パケットカウント (Opkts) が変化しないことがあります。これは、サーバーがクライアントからのブート要求パケットを見ているが、それを応答すべきものとして認識していないことを示しています。この原因としては、hosts データベース、ipnodes データベース、または ethers データベース内に誤ったアドレスがあることが考えられます。

逆に、入力パケットカウントが長時間にわたり変化しないとすれば、それは、マシンがパケットをまったく見ていないことを意味します。この原因としては、上記の場合と違って、ハードウェアの問題の可能性が高くなります。

ルーティングテーブルの状態の表示方法

netstat-r オプションは、IP ルーティングテーブルを表示します。

    コマンド行で次のコマンドを入力します。


    % netstat -r
    

次に示すのは、マシン tenere で実行した netstat -r の出力結果の例です。


Routing tables
Destination   Gateway Flags Refcnt Use   Interface
temp8milptp   elvis   UGH   0      0	
irmcpeb1-ptp0 elvis   UGH   0      0	
route93-ptp0  speed   UGH   0      0	
mtvb9-ptp0    speed   UGH   0      0	
	              .
mtnside       speed   UG    1      567	
ray-net       speed   UG    0      0	
mtnside-eng   speed   UG    0      36	
mtnside-eng   speed   UG    0      558	
mtnside-eng   tenere  U     33     190248  le0

最初の列は宛先ネットワーク、2 番目の列はパケットを転送するルーターを示しています。U フラグはルートが up 状態であること、G フラグはルートがゲートウェイへのものであることを示します。H フラグは、宛先がネットワークではなく、完全指定のホストアドレスであることを示します。

Refcnt 列は 1 ルート当たりの有効ユーザーの数、Use 列は 1 ルート当たりの送信パケット数を示します。最後の Interface 列は、ルートで使用されているネットワークインタフェースを示します。