JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris 11.1 ネットワークの構成と管理     Oracle Solaris 11.1 Information Library (日本語)
このドキュメントの評価
search filter icon
search icon

ドキュメントの情報

はじめに

1.  ネットワーク配備の計画

2.  IPv6 アドレス使用時の考慮点

3.  IPv4 ネットワークの構成

4.  ネットワークでの IPv6 の有効化

5.  TCP/IP ネットワークの管理

主な TCP/IP 管理タスク (タスクマップ)

netstat コマンドによるネットワークのステータスの監視

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

転送プロトコルのステータスを表示する方法

ネットワークインタフェースのステータスを表示する方法

ソケットのステータスを表示する方法

特定のアドレスタイプのパケット転送に関するステータスを表示する方法

既知のルートのステータスを表示する方法

ping コマンドによるリモートホストの検証

リモートホストが動作しているかを確認する方法

ホストでパケットが失われていないかを確認する方法

ネットワークステータス表示の管理と記録

IP 関連コマンドの表示出力を制御する方法

IPv4 ルーティングデーモンの活動を記録する方法

IPv6 近傍検索デーモンの活動をトレースする方法

traceroute コマンドによるルーティング情報の表示

リモートホストまでのルートを発見する方法

すべてのルートをトレースする方法

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

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

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

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

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

IP 層デバイスを使用したパケット監視

IP 層でパケットをチェックする方法

パケットのチェック例

デフォルトアドレス選択の管理

IPv6 アドレス選択ポリシーテーブルを管理する方法

現在のセッションだけの IP6 アドレス選択テーブルを変更する方法

6.  IP トンネルの構成

7.  IPv4 リファレンス

8.  IPv6 リファレンス

索引

ドキュメントの品質向上のためのご意見をください
簡潔すぎた
読みづらかった、または難し過ぎた
重要な情報が欠けていた
内容が間違っていた
翻訳版が必要
その他
Your rating has been updated
貴重なご意見を有り難うございました!

あなたの貴重なご意見はより良いドキュメント作成の手助けとなります 内容の品質向上と追加コメントのためのアンケートに参加されますか?

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

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

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

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

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

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

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

  2. Example 5–15 に示すように、例 5-15 コマンドを引数なしで入力して、パケットの取り込みを開始します。
  3. Ctrl-C キーを押してプロセスを停止します。

例 5-15 snoop コマンドの出力

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

% snoop
Using device /dev/net (promiscuous mode)
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)
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.
.
.
.
fe80::a00:20ff:febb:e09 -> ff02::9 RIPng R (5 destinations)

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

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

  1. 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 を実行します。

  2. snoop 出力取り込みファイルを検査します。
    # snoop -i filename

例 5-16 snoop 出力取り込みファイルの内容

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

# snoop -i /tmp/cap
1   0.00000 fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 
    ICMPv6 Neighbor advertisement
...
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  

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

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

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

  2. snoop をオプションなしで入力して、その出力をファイルに保存します。
  3. 出力を検査および解釈します。

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

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

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

例 5-17 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

IP 層デバイスを使用したパケット監視

IP の監視機能を強化するため、IP 層デバイスが Oracle Solaris に導入されています。これらのデバイスは、システムのネットワークインタフェースに関連付けられたアドレスを含むすべてのパケットにアクセスできます。アドレスには、ローカルアドレスのほか、非ループバックインタフェースまたは論理インタフェースにホストされたアドレスも含まれます。監視可能なトラフィックには、IPv4、IPv6 のどちらのアドレスが含まれていてもかまいません。したがって、システムに向かうすべてのトラフィックを監視できます。トラフィックには、ループバック IP トラフィック、リモートマシンからのパケット、システムから送信されるパケット、またはすべての転送トラフィックが含まれる場合があります。

大域ゾーンの管理者は IP 層デバイスを使用することで、ゾーン間のトラフィックやゾーン内のトラフィックを監視できます。非大域ゾーンの管理者も、そのゾーンによって送受信されるトラフィックを監視できます。

IP 層でトラフィックを監視するために、snoop コマンドに新しいオプション -I が追加されています。このオプションは、コマンドが、ベースとなるリンク層デバイスではなく新しい IP 層デバイスを使用してトラフィックデータを表示することを指定します。

IP 層でパケットをチェックする方法

  1. 必要であれば、システムに接続されているインタフェースについての情報を出力します。
    # ipadm show-if
  2. 特定のインタフェースの IP トラフィックを取得します。
    # snoop -I interface [-V | -v]

パケットのチェック例

すべての例は次のシステム構成に基づいています。

# ipadm show-addr
ADDROBJ      TYPE       STATE   ADDR
lo0/v4       static     ok      127.0.0.1/8
net0/v4      static     ok      192.68.25.5/24
lo0/?        static     ok      127.0.0.1/8
net0/?       static     ok      172.0.0.3/24
net0/?       static     ok      172.0.0.1/24
lo0/?        static     ok      127.0.0.1/8
 

2 つのゾーン sandboxtoybox が次の IP アドレスを使用しているとします。

snoop -I コマンドは、システム上のさまざまなインタフェースに対して発行できます。表示されるパケット情報は、ユーザーが大域ゾーン、非大域ゾーンのいずれの管理者であるかに依存します。

例 5-18 ループバックインタフェース上のトラフィック

# snoop -I lo0
Using device ipnet/lo0 (promiscuous mode)
   localhost -> localhost    ICMP Echo request (ID: 5550 Sequence number: 0)
   localhost -> localhost    ICMP Echo reply (ID: 5550 Sequence number: 0)

冗長出力を生成するには、-v オプションを使用します。

# snoop -v -I lo0
Using device ipnet/lo0 (promiscuous mode)
IPNET:  ----- IPNET Header -----
IPNET:  
IPNET:  Packet 1 arrived at 10:40:33.68506
IPNET:  Packet size = 108 bytes
IPNET:  dli_version = 1
IPNET:  dli_type = 4
IPNET:  dli_srczone = 0
IPNET:  dli_dstzone = 0
IPNET:  
IP:   ----- IP Header -----
IP:   
IP:   Version = 4
IP:   Header length = 20 bytes
...

IP 層でのパケット監視のサポートのために、監視対象となるパケットの前に新しい ipnet ヘッダーが導入されています。発信元 ID と着信先 ID の両方が示されます。「0」の ID は、トラフィックが大域ゾーンから生成されていることを示します。

例 5-19 ローカルゾーンの net0 デバイスでのパケットフロー

# snoop -I net0
Using device ipnet/net0 (promiscuous mode)
toybox -> sandbox TCP D=22 S=62117 Syn Seq=195630514 Len=0 Win=49152 Options=<mss
sandbox -> toybox TCP D=62117 S=22 Syn Ack=195630515 Seq=195794440 Len=0 Win=49152
toybox -> sandbox TCP D=22 S=62117 Ack=195794441 Seq=195630515 Len=0 Win=49152
sandbox -> toybox TCP D=62117 S=22 Push Ack=195630515 Seq=195794441 Len=20 Win=491

この出力には、システム内のさまざまなゾーンで発生したトラフィックが表示されています。ローカルでほかのゾーンに配信されるパケットも含め、net0 の IP アドレスに関連するすべてのパケットを表示できます。冗長出力を生成すれば、パケットのフローに関連するゾーンを確認できます。

# snoop -I net0 -v port 22
IPNET:  ----- IPNET Header ----- 
IPNET: 
IPNET:  Packet 5 arrived at 15:16:50.85262 
IPNET:  Packet size = 64 bytes 
IPNET:  dli_version = 1 
IPNET:  dli_type = 0 
IPNET:  dli_srczone = 0 
IPNET:  dli_dstzone = 1 
IPNET: 
IP:   ----- IP Header ----- 
IP: 
IP:   Version = 4 
IP:   Header length = 20 bytes 
IP:   Type of service = 0x00 
IP:         xxx. .... = 0 (precedence) 
IP:         ...0 .... = normal delay 
IP:         .... 0... = normal throughput 
IP:         .... .0.. = normal reliability 
IP:         .... ..0. = not ECN capable transport 
IP:         .... ...0 = no ECN congestion experienced 
IP:   Total length = 40 bytes 
IP:   Identification = 22629 
IP:   Flags = 0x4 
IP:         .1.. .... = do not fragment 
IP:         ..0. .... = last fragment 
IP:   Fragment offset = 0 bytes 
IP:   Time to live = 64 seconds/hops 
IP:   Protocol = 6 (TCP) 
IP:   Header checksum = 0000 
IP:   Source address = 172.0.0.1, 172.0.0.1 
IP:   Destination address = 172.0.0.3, 172.0.0.3 
IP:   No options 
IP: 
TCP:  ----- TCP Header ----- 
TCP: 
TCP:  Source port = 46919 
TCP:  Destination port = 22 
TCP:  Sequence number = 3295338550 
TCP:  Acknowledgement number = 3295417957 
TCP:  Data offset = 20 bytes 
TCP:  Flags = 0x10 
TCP:        0... .... = No ECN congestion window reduced 
TCP:        .0.. .... = No ECN echo 
TCP:        ..0. .... = No urgent pointer 
TCP:        ...1 .... = Acknowledgement 
TCP         .... 0... = No push 
TCP         .... .0.. = No reset 
TCP:        .... ..0. = No Syn 
TCP:        .... ...0 = No Fin 
TCP:  Window = 49152 
TCP:  Checksum = 0x0014 
TCP:  Urgent pointer = 0 
TCP:  No options 
TCP:

この ipnet ヘッダーは、パケットが大域ゾーン (ID 0) から Sandbox (ID 1) に向かっていることを示しています。

例 5-20 ゾーンを特定してトラフィックを監視する

# snoop -I hme0 sandboxsnoop -I net0 sandbox
Using device ipnet/hme0 (promiscuous mode)
toybox -> sandbox TCP D=22 S=61658 Syn Seq=374055417 Len=0 Win=49152 Options=<mss
sandbox -> toybox TCP D=61658 S=22 Syn Ack=374055418 Seq=374124525 Len=0 Win=49152
toybox -> sandbox TCP D=22 S=61658 Ack=374124526 Seq=374055418 Len=0 Win=49152
#

ゾーンを特定してパケットを監視する機能は、複数のゾーンを含むシステムで役立ちます。現在のところ、ゾーンを特定するときに使用できるのは、ゾーン ID だけです。ゾーン名による snoop の使用はサポートされていません。