Solaris のシステム管理 (IP サービス)

snoop コマンドによるパケット転送の監視

snoop コマンドを使用すると、データ転送の状態を監視できます。snoop コマンドは、ネットワークパケットを取り込んで、その内容を指定された書式で表示します。取得したパケットについては、そのまま表示することも、ファイルに保存することも可能です。snoop が中間ファイルに書き込む場合、トレースのビジー状態でパケットロスはほとんど発生しません。そのあと、snoop 自体はファイルの解釈に使用されます。

デフォルトのインタフェースにおいて、パケットをプロミスキュアスモードで取り込むには、ネットワーク管理者役割になるか、スーパーユーザーになる必要があります。要約形式では、snoop は最高レベルのプロトコルに関連するデータだけを表示します。たとえば NFS パケットでは、NFS 情報のみが表示されます。RPC、UDP、IP、および Ethernet のフレーム情報は抑止されますが、verbose (詳細表示) オプションのいずれかを選択してあれば表示できます。

頻繁かつ定期的に snoop を使用して、システムが正常に動作している場合の状態を把握してください。最近の白書や RFC を参照したり、NFS や NIS といった特定分野の専門家からアドバイスを受けたりするのも、パケットの分析に役立ちます。snoop とそのオプションの使用法については、snoop(1m) のマニュアルページを参照してください。

Procedureすべてのインタフェースからのパケットをチェックする方法

  1. ローカルホスト上で、ネットワーク管理者役割になるか、スーパーユーザーになります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. システムに接続されているインタフェースについての情報を出力します。


    # ifconfig -a
    

    snoop コマンドは通常、最初の非ループバックデバイス (通常は一次ネットワークインタフェース) を使用します。

  3. 例 8–19 に示すように、snoop コマンドを引数なしで入力して、パケットの取り込みを開始します。

  4. Ctrl-C キーを押してプロセスを停止します。


例 8–19 snoop コマンドの出力

基本の snoop コマンドは、デュアルスタックホストに対して、次のような出力を返します。


% snoop
Using device /dev/hme (promiscuous mode)
farhost.remote.com -> myhost       RLOGIN C port=993 
    myhost -> farhost.remote.com   RLOGIN R port=993 Using device /dev/hme
router5.local.com -> router5.local.com ARP R 10.0.0.13, router5.local.com is
    0:10:7b:31:37:80
router5.local.com -> BROADCAST     TFTP Read "network-confg" (octet)
farhost.remote.com -> myhost       RLOGIN C port=993 
    myhost ->   nisserve2          NIS C MATCH 10.0.0.64 in ipnodes.byaddr
nisserve2 ->    myhost             NIS R MATCH No such key
    blue-112 -> slave-253-2        NIS C MATCH 10.0.0.112 in ipnodes.byaddr
myhost -> DNSserver.local.com      DNS C 192.168.10.10.in-addr.arpa. Internet PTR ?
DNSserver.local.com  myhost        DNS R 192.168.10.10.in-addr.arpa. Internet PTR 
   niserve2.
.
.
farhost.remote.com-> myhost        RLOGIN C port=993 
    myhost -> farhost.remote.com   RLOGIN R port=993 fe80::a00:20ff:febb:
.
fe80::a00:20ff:febb:e09 -> ff02::9 RIPng R (5 destinations)

この出力に取り込まれたパケットはリモートログインの様子を示しています。この中には、アドレス解決のための NIS サーバーと DNS サーバーへの問い合わせが含まれます。また、ローカルルーターからの定期的な ARP パケットや、IPv6 リンクローカルアドレスから in.ripngd への通知も含まれます。


Proceduresnoop の出力をファイルに取り込む方法

  1. ローカルホスト上で、ネットワーク管理者役割になるか、スーパーユーザーになります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. snoop セッションをファイルに取り込みます。


    # snoop -o filename
    

    次に例を示します。


    # snoop -o /tmp/cap
    Using device /dev/eri (promiscuous mode)
    30 snoop: 30 packets captured

    この例では、30 個のパケットが /tmp/cap というファイルに取り込まれています。ディスク容量が十分にあれば、ファイルはどのディレクトリにでも格納できます。取り込んだパケットの数はコマンド行に表示され、Ctrl-C を押せばいつでも終了できます。

    snoop 自体によってホストマシン上にネットワーク負荷がかかるので、結果に誤差が生じる場合があります。実際の結果を表示するには、第 3 のシステムから snoop を実行します。

  3. snoop 出力取り込みファイルを検査します。


    # snoop -i filename
    

例 8–20 snoop 出力取り込みファイルの内容

次に、snoop -i コマンドから返される出力など、さまざまな取り込みの例を示します。


# snoop -i /tmp/cap
1   0.00000 fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 
    ICMPv6 Neighbor advertisement
2   0.16198 farhost.com   -> myhost     RLOGIN C port=985 
3   0.00008 myhost -> farhost.com       RLOGIN R port=985 
10  0.91493    10.0.0.40 -> (broadcast)  ARP C Who is 10.0.0.40, 10.0.0.40 ?
34  0.43690 nearserver.here.com  -> 224.0.1.1  IP  D=224.0.1.1 S=10.0.0.40 LEN=28, 
      ID=47453, TO =0x0, TTL=1
35  0.00034  10.0.0.40 -> 224.0.1.1    IP  D=224.0.1.1 S=10.0.0.40 LEN=28, ID=57376, 
     TOS=0x0, TTL=47  

ProcedureIPv4 サーバー/クライアント間のパケットを確認する方法

  1. snoop を実行するシステムから、クライアントまたはサーバーのいずれかに接続されたハブを外します。

    この第 3 のシステム (snoop システム) はサーバーとクライアント間のすべてのトラフィックを監視するので、snoop のトレースには実際のネットワーク上の状態が反映されます。

  2. snoop システム上で、ネットワーク管理者役割になるか、スーパーユーザーになります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  3. snoop をオプションなしで入力して、その出力をファイルに保存します。

  4. 出力を検査および解釈します。

    snoop 取り込みファイルの詳細については、「RFC 1761, Snoop Version 2 Packet Capture File Format」を参照してください。

ProcedureIPv6 ネットワークトラフィックを監視する方法

snoop コマンドを使用すると、IPv6 パケットだけを表示できます。

  1. ローカルノード上で、ネットワーク管理者役割になるか、スーパーユーザーになります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. IPv6 パケットを取り込みます。


    # snoop ip6
    

    snoop コマンドの詳細については、snoop(1m) のマニュアルページを参照してください。


例 8–21 IPv6 ネットワークトラフィックだけの表示

次に、あるノード上で snoop ip6 コマンドを実行したときに返される典型的な出力の例を示します。


# snoop ip6
fe80::a00:20ff:fecd:4374 -> ff02::1:ffe9:2d27 ICMPv6 Neighbor solicitation
fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 ICMPv6 Neighbor 
      solicitation
fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 ICMPv6 Neighbor 
      solicitation
fe80::a00:20ff:febb:e09 -> ff02::9      RIPng R (11 destinations)
fe80::a00:20ff:fee9:2d27 -> ff02::1:ffcd:4375 ICMPv6 Neighbor solicitation