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

第 8 章 TCP/IP ネットワークの管理 (手順)

この章では、TCP/IP ネットワークを管理するための作業について説明します。次の項目について説明します。

これらのタスクでは、サイトで TCP/IP ネットワークが IPv4 専用またはデュアルスタック IPv4/IPv6 で動作していると仮定します。IPv6 をサイトに実装する予定でいるが、まだ実装していない場合は、次の章を参照してください。

主な TCP/IP 管理作業 (作業マップ)

次の表に、ネットワーク情報の表示など、初期構成後に行うその他のネットワーク管理作業の一覧を示します。表では、各作業で実行する内容について説明し、作業の具体的な実行手順が詳しく説明されている現在のマニュアル内の節を示しています。

作業 

説明 

参照先 

インタフェースについての構成情報を表示します。 

システム上にある各インタフェースの現在の構成を判断します。 

「特定のインタフェースに関する情報を入手する方法」

インタフェースアドレス割り当てを表示します。 

ローカルシステム上にあるすべてのインタフェースのアドレス割り当てを判断します。 

「インタフェースアドレスの割り当てを表示する方法」

プロトコル別の統計を表示します。 

特定のシステム上におけるネットワークプロトコルの性能を監視します。 

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

ネットワークの状態を表示します。 

すべてのソケットおよび経路制御テーブルのエントリを表示して、システムを管理します。IPv4 の inet アドレスファミリと IPv6 の inet6 アドレスファミリも表示されます。  

「ソケットの状態を表示する方法」

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

ネットワークインタフェースの性能を監視します。転送の問題を解決するときに役立ちます。 

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

パケット転送の状態を表示します。 

ネットワークで送信されるパケットの状態を監視します。 

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

IPv6 関連コマンドの出力表示を制御します。 

ping コマンド、netstat コマンド、 ifconfig コマンド、traceroute コマンドの出力を制御します。inet_type という名前のファイルを作成します。そのファイル内の DEFAULT_IP 変数を設定します。

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

ネットワークトラフィックを監視します。 

snoop コマンドを使用して、すべての IP パケットを表示します。

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

ネットワークのルーターが知っているすべてのルートをトレースします。 

traceroute コマンドを使用して、すべてのルートを表示します。

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

ifconfig コマンドによるインタフェース構成の監視

ifconfig コマンドを使用して、IP アドレスを手動でインタフェースに割り当て、インタフェースのパラメータを手動で構成します。さらに、Oracle Solaris 起動スクリプトは ifconfig コマンドを実行して、6to4 トンネルエンドポイントなどの疑似インタフェースを構成します。

このマニュアルでは、ifconfig コマンドのさまざまなオプションを使用する作業が数多く含まれています。ifconfig コマンド、そのオプション、およびその変数の詳細については、ifconfig(1m) のマニュアルページを参照してください。ifconfig の基本構文は次のとおりです。

ifconfig interface [protocol-family]

Procedure特定のインタフェースに関する情報を入手する方法

ifconfig コマンドを使用して、特定のシステムのインタフェースについての基本情報を判断します。たとえば、ifconfig コマンドを実行すると、次のような情報が表示されます。

次の手順に、ifconfig コマンドを使用して、システムのインタフェースについての基本構成情報を取得する方法を示します。

  1. ローカルホスト上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. 特定のインタフェースについての情報を取得します。


    # ifconfig interface
    

    ifconfig コマンドからの出力の書式は次のとおりです。

    • 状態行

      ifconfig コマンド出力の 1 行目には、そのインタフェースに現在関連付けられているインタフェース名と状態フラグが表示されます。状態行には、特定のインタフェースとインデックス番号に構成されている最大転送単位 (MTU) も表示されます。状態行を使用すると、インタフェースの現在の状態を判断できます。

    • IP アドレス情報行

      ifconfig 出力の 2 行目には、インタフェースに構成されている IPv4 アドレスまたは IPv6 アドレスが表示されます。IPv4 アドレスの場合、構成されているネットマスクとブロードキャストアドレスも表示されます。

    • MAC アドレス行

      ifconfig コマンドをスーパーユーザーまたはそれと同等な役割で実行した場合、ifconfig 出力には 3 行目が表示されます。IPv4 アドレスの場合、3 行目には、インタフェースに割り当てられている MAC アドレス (Ethernet 層アドレス) が表示されます。IPv6 アドレスの場合、3 行目には、IPv6 の in.ndpd デーモンが MAC アドレスから生成したリンクローカルアドレスが表示されます。


例 8–1 ifconfig コマンドからのインタフェース基本情報

次の例に、ifconfig コマンドを使用して、特定のホスト上にある eri インタフェースについての情報を取得する方法を示します。


# ifconfig eri
eri0: flags=863<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 1
      inet 10.0.0.112 netmask ffffff80 broadcast 10.8.48.127
      ether 8:0:20:b9:4c:54 
	

次の表では、ifconfig による照会での変数情報、画面上での変数の表示形式、および、提供される情報の種類について説明しています。前述の出力を例として使用します。

変数 

画面出力 

説明 

インタフェース名 

eri0

ifconfig コマンドで状態が要求されたインタフェースのデバイス名を示します。

インタフェースの状態 

flags=863<UP

インタフェースの状態を表示します。そのインタフェースに現在関連するフラグがすべて表示されます。ここで、インタフェースが現在起動されているか (UP) または起動されていないか (DOWN) を判断できます。

ブロードキャストの状態 

BROADCAST

インタフェースが IPv4 ブロードキャストをサポートすることを示します。 

転送の状態 

RUNNING

システムがパケットをインタフェース経由で転送していることを示します。 

マルチキャストの状態 

MULTICAST, IPv4

インタフェースがマルチキャスト転送をサポートすることを示します。この例のインタフェースは IPv4 マルチキャスト転送をサポートします。 

最大転送単位 

mtu 1500

当該インタフェースの最大転送サイズが 1500 オクテットであることを示します。 

IP アドレス 

inet 10.0.0.112

インタフェースに割り当てられている IPv4 アドレスまたは IPv6 アドレスを表示します。この例のインタフェース eri0 は IPv4 アドレス 10.0.0.112 を持っています。

ネットマスク 

netmask ffffff80

特定のインタフェースの IPv4 ネットマスクを表示します。IPv6 アドレスはネットマスクを使用しません。 

MAC アドレス 

ether 8:0:20:b9:4c:54

インタフェースの Ethernet 層アドレスを表示します。 


Procedureインタフェースアドレスの割り当てを表示する方法

ルーターとマルチホームホストは複数のインタフェースを持っており、多くの場合、各インタフェースには複数の IP アドレスが割り当てられています。ifconfig コマンドを使用すると、システムの特定のインタフェースに割り当てられているすべてのアドレスを表示できます。また、ifconfig コマンドを使用すると、IPv4 アドレスまたは IPv6 アドレスのどちらか一方の割り当てだけを表示できます。さらに、インタフェースの MAC アドレスを表示するには、まず、スーパーユーザーでログインするか、適切な役割になる必要があります。

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

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

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

  2. すべてのインタフェースについての情報を取得します。

    ifconfig -a コマンドのバリエーションを使用すると、次のことができます。

    • システム上にあるすべてのインタフェースのすべてのアドレスを表示します。


      # ifconfig -a
      
    • システム上にあるすべてのインタフェースに割り当てられているすべての IPv4 アドレスを表示します。


      # ifconfig -a4
      
    • ローカルシステムが、IPv6 が有効である場合、システム上にあるすべてのインタフェースに割り当てられているすべての IPv6 アドレスを表示します。


      ifconfig -a6
      

例 8–2 すべてのインタフェースについてのアドレス指定情報の表示

次の例に、一次ネットワークインタフェース qfe0 だけを持つホスト用のエントリを示します。それにもかかわらず、ifconfig 出力を見ると、インタフェース qfe0 には現在、次の 3 つの書式のアドレスが割り当てられています。 つまり、ループバック ( lo0)、IPv4 (inet)、および IPv6 (inet6) です。この出力では、IPv6 セクションのインタフェース qfe0 の行に IPv6 リンクローカルアドレスが表示されています。qfe0 の 2 番目のアドレスは qfe0:1 行に表示されます。


% ifconfig -a
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
qfe0: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 
        inet 10.0.0.112 netmask ffffff80 broadcast 10.0.0.127
        ether 8:0:20:b9:4c:54 
lo0: flags=2000849 <UP,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
        inet6 ::1/128 
qfe0: flags=2000841 <UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
        ether 8:0:20:b9:4c:54 
        inet6 fe80::a00:20ff:feb9:4c54/10 
qfe0:1: flags=2080841 <UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
        inet6 2001:db8:3c4d:48:a00:20ff:feb9:4c54/64 


例 8–3 すべての IPv4 インタフェースについてのアドレス指定情報の表示

次の例に、マルチホームホストに構成されている IPv4 アドレスを示します。この書式の ifconfig コマンドを実行するために、スーパーユーザーとしてログインする必要はありません。


% ifconfig -a4
lo0: flags=1000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
qfe0: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.0.0.112 netmask ffffff80 broadcast 10.0.0.127
        ether 8:0:20:b9:4c:54 
qfe1: flags=1004843 <UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 10.0.0.118 netmask ffffff80 broadcast 10.0.0.127
        ether 8:0:20:6f:5e:17


例 8–4 すべての IPv6 インタフェースについてのアドレス指定情報の表示

次の例に、特定のホストに構成されている IPv6 アドレスだけを示します。この書式の ifconfig コマンドを実行するために、スーパーユーザーとしてログインする必要はありません。


% ifconfig -a6
lo0: flags=2000849 <UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
        inet6 ::1/128 
qfe0: flags=2000841 <UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
        ether 8:0:20:b9:4c:54 
        inet6 fe80::a00:20ff:feb9:4c54/10
qfe0:1: flags=2080841 <UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
        inet6 2001:db8:3c4d:48:a00:20ff:feb9:4c54/64 

この ifconfig コマンドの出力を見ると、ホスト上にある単一のインタフェースには、次の 3 つの書式の IPv6 アドレスが割り当てられていることがわかります。

lo0

IPv6 ループバックアドレス。

inet6 fe80::a00:20ff:feb9:4c54/10

一次ネットワークインタフェースに割り当てられているリンクローカルアドレス。

inet6 2001:db8:3c4d:48:a00:20ff:feb9:4c54/64

IPv6 アドレス (サブネット接頭辞を含む)。出力にある ADDRCONF というキーワードは、このアドレスがホストによって自動構成されたことを示します。


netstat コマンドによるネットワークの状態の監視

netstat コマンドは、ネットワークの状態とプロトコル統計を表示します。TCP、SCTP、および UDP の各エンドポイントの状態は表形式で表示できます。経路制御テーブル情報やインタフェース情報も表示できます。

netstat コマンドは、さまざまな種類のネットワークデータを表示します。表示するデータはコマンド行オプションで選択できます。この表示は、特にシステム管理に役立ちます。次に、netstat コマンドの基本構文を示します。

netstat [-m] [-n] [-s] [-i | -r] [-f address-family]

この節では、netstat コマンドで最も一般的に使用されるオプションについて説明します。netstat のすべてのオプションの詳細については、netstat(1M) のマニュアルページを参照してください。

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

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


注 –

netstat コマンドからの出力は、Oracle Solaris ユーザーアカウントで取得できます。


  1. プロトコルの状態を表示します。


    $ netstat -s
    

例 8–5 ネットワークプロトコルの統計

次の例に、netstat -s コマンドの出力を示します。出力の一部は省略されています。この出力は、プロトコルが問題を持っている場所を示すことがあります。たとえば、ICMPv4 と ICMPv6 からの統計情報は、このプロトコルがどこにエラーを検出したかを示します。


RAWIP
        rawipInDatagrams    =  4701     rawipInErrors       =     0
        rawipInCksumErrs    =     0     rawipOutDatagrams   =     4
        rawipOutErrors      =     0

UDP
        udpInDatagrams      = 10091     udpInErrors         =     0
        udpOutDatagrams     = 15772     udpOutErrors        =     0

TCP     tcpRtoAlgorithm     =     4     tcpRtoMin           =   400
        tcpRtoMax           = 60000     tcpMaxConn          =    -1
        .
        .
        tcpListenDrop       =     0     tcpListenDropQ0     =     0
        tcpHalfOpenDrop     =     0     tcpOutSackRetrans   =     0

IPv4    ipForwarding        =     2     ipDefaultTTL        =   255
        ipInReceives        =300182     ipInHdrErrors       =     0
        ipInAddrErrors      =     0     ipInCksumErrs       =     0
        .
        .
        ipsecInFailed       =     0     ipInIPv6            =     0
        ipOutIPv6           =     3     ipOutSwitchIPv6     =     0

IPv6    ipv6Forwarding      =     2     ipv6DefaultHopLimit =   255
        ipv6InReceives      = 13986     ipv6InHdrErrors     =     0
        ipv6InTooBigErrors  =     0     ipv6InNoRoutes      =     0
        .
        .
        rawipInOverflows    =     0     ipv6InIPv4          =     0
 
       ipv6OutIPv4         =     0     ipv6OutSwitchIPv4   =     0

ICMPv4  icmpInMsgs          = 43593     icmpInErrors        =     0
        icmpInCksumErrs     =     0     icmpInUnknowns      =     0
        .
        .
        icmpInOverflows     =     0

ICMPv6  icmp6InMsgs         = 13612     icmp6InErrors       =     0
        icmp6InDestUnreachs =     0     icmp6InAdminProhibs =     0
        .
        .
        icmp6OutGroupQueries=     0     icmp6OutGroupResps  =     2
        icmp6OutGroupReds   =     0

IGMP:
      12287 messages received
          0 messages received with too few bytes
          0 messages received with bad checksum
      12287 membership queries received
SCTP  sctpRtoAlgorithm     =  vanj    
      sctpRtoMin           =  1000 
      sctpRtoMax           = 60000
      sctpRtoInitial       =  3000
      sctpTimHearBeatProbe =     2
      sctpTimHearBeatDrop  =     0
      sctpListenDrop       =     0
      sctpInClosed         =     0 

Procedure転送プロトコルの状態を表示する方法

netstat コマンドを使用すると、転送プロトコルの状態を表示できます。詳細については、netstat(1M) のマニュアルページを参照してください。

  1. システム上の TCP 転送プロトコルと SCTP 転送プロトコルの状態を表示します。


    $ netstat
    
  2. システム上の特定の転送プロトコルの状態を表示します。


    $ netstat -P transport-protocol
    

    transport-protocol 変数の値は、 tcpsctp、または udp です。


例 8–6 TCP 転送プロトコルと SCTP 転送プロトコルの状態の表示

次の例に、基本的な netstat コマンドの出力を示します。IPv4 専用の情報が表示されています。


$ netstat

TCP: IPv4
   Local Address     Remote Address    Swind Send-Q  Rwind Recv-Q      State
----------------- -------------------- ----- ------  ----- ------     -------
lhost-1.login      abc.def.local.Sun.COM.980 49640      0     49640    0 ESTABLISHED
lhost-1.login      ghi.jkl.local.Sun.COM.1020 49640     1     49640    0 ESTABLISHED
remhost-1.1014     mno.pqr.remote.Sun.COM.nfsd 49640    0     49640    0 TIME_WAIT
SCTP:                  
Local Address    Remote Address  Swind  Send-Q  Rwind  Recv-Q StrsI/O  State 
---------------- --------------  -----  ------ ------ ------  ------   -------
 *.echo            0.0.0.0            0       0 102400      0   128/1   LISTEN
 *.discard         0.0.0.0            0       0 102400      0   128/1   LISTEN
 *.9001            0.0.0.0            0       0 102400      0   128/1   LISTEN


例 8–7 特定の転送プロトコルの状態の表示

次の例に、netstat コマンドに -P オプションを指定したときの結果を示します。


$ netstat -P tcp
   
TCP: IPv4
   Local Address     Remote Address    Swind Send-Q  Rwind Recv-Q      State
----------------- -------------------- ----- ------  ----- ------     -------
lhost-1.login      abc.def.local.Sun.COM.980 49640      0     49640    0 ESTABLISHED
lhost.login        ghi.jkl.local.Sun.COM.1020 49640     1     49640    0 ESTABLISHED
remhost.1014       mno.pqr.remote.Sun.COM.nfsd 49640    0     49640    0 TIME_WAIT

TCP: IPv6
 Local Address    Remote Address        Swind Send-Q Rwind Recv-Q   State If 
---------------- ---------------------- ------ ----- ------ ----------- -----
localhost.38983   localhost.32777       49152      0 49152      0 ESTABLISHED      
localhost.32777   localhost.38983       49152      0 49152      0 ESTABLISHED      
localhost.38986   localhost.38980       49152      0 49152      0 ESTABLISHED      

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

netstat コマンドの i オプションは、ローカルシステムに構成されているネットワークインタフェースの状態を表示します。このオプションを使用すると、各ネットワーク上で送受信しているパケット数がわかります。

  1. ネットワーク上にあるインタフェースの状態を表示します。


    $ netstat -i
    

例 8–8 ネットワークインタフェースの状態の表示

次の例に、ホストのインタフェースを通る IPv4 と IPv6 のパケットフローの状態を示します。

たとえば、サーバーについて表示される入力パケットカウント (Ipkts) はクライアントがブートを試みるたびに増加しているのに、出力パケットカウント (Opkts) が変化しないことがあります。これは、サーバーがクライアントからのブート要求パケットを見ていることを意味します。しかし、サーバーはそれらのパケットに応答する方法を知りません。この混乱は、hosts データベース、ipnodes データベース、または ethers データベース内に誤ったアドレスがあることが原因であると考えられます。

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


Name  Mtu  Net/Dest      Address        Ipkts  Ierrs Opkts  Oerrs Collis Queue 
lo0   8232 loopback      localhost      142    0     142    0     0      0     
hme0  1500 host58        host58        1106302 0     52419  0     0      0     

Name  Mtu  Net/Dest      Address                    Ipkts  Ierrs Opkts  Oerrs Collis
lo0   8252 localhost     localhost                   142    0     142    0     0     
hme0  1500 fe80::a00:20ff:feb9:4c54/10 fe80::a00:20ff:feb9:4c54 1106305 0 52422 0  0

Procedureソケットの状態を表示する方法

netstat コマンドの -a オプションを使用すると、ローカルホスト上にあるソケットの状態を表示できます。

  1. 次のコマンドを入力すると、ソケットの状態と経路制御テーブルエントリの状態を表示できます。

    この netstat コマンドのオプションは、ユーザーアカウントで使用できます。


    % netstat -a  
    

例 8–9 すべてのソケットと経路制御テーブルエントリの表示

netstat -a コマンドの出力には、膨大な統計が含まれます。次の例に、典型的な netstat -a コマンドの出力の一部を示します。


UDP: IPv4
   Local Address         Remote Address     State
-------------------- -------------------- -------
      *.bootpc                              Idle
host85.bootpc                               Idle
      *.*                                   Unbound
      *.*                                   Unbound
      *.sunrpc                              Idle
      *.*                                   Unbound
      *.32771                               Idle
      *.sunrpc                              Idle
      *.*                                   Unbound
      *.32775                               Idle
      *.time                                Idle
       .
       .
      *.daytime                             Idle
      *.echo                                Idle
      *.discard                             Idle
      
UDP: IPv6
   Local Address                     Remote Address                   State      If  
--------------------------------- --------------------------------- ---------- -----
      *.*                                                           Unbound   
      *.*                                                           Unbound   
      *.sunrpc                                                      Idle      
      *.*                                                           Unbound   
      *.32771                                                       Idle      
      *.32778                                                       Idle      
      *.syslog                                                      Idle      
      .
      .
TCP: IPv4
   Local Address        Remote Address    Swind Send-Q Rwind Recv-Q  State
-------------------- -------------------- ----- ------ ----- ------ -------
      *.*                  *.*                0      0 49152      0 IDLE
localhost.4999             *.*                0      0 49152      0 LISTEN
      *.sunrpc             *.*                0      0 49152      0 LISTEN
      *.*                  *.*                0      0 49152      0 IDLE
      *.sunrpc             *.*                0      0 49152      0 LISTEN
      .
      .
      *.printer            *.*                0      0 49152      0 LISTEN
      *.time               *.*                0      0 49152      0 LISTEN
      *.daytime            *.*                0      0 49152      0 LISTEN
      *.echo               *.*                0      0 49152      0 LISTEN
      *.discard            *.*                0      0 49152      0 LISTEN
      *.chargen            *.*                0      0 49152      0 LISTEN
      *.shell              *.*                0      0 49152      0 LISTEN
      *.shell              *.*                0      0 49152      0 LISTEN
      *.kshell             *.*                0      0 49152      0 LISTEN
      *.login  
       .
       .
            *.*                0      0 49152      0 LISTEN
   *TCP: IPv6
 Local Address            Remote Address        Swind Send-Q Rwind Recv-Q   State If
----------------------- ----------------------- ----- ------ ----- ------    ----
   *.*                         *.*                0      0 49152      0      IDLE
   *.sunrpc                    *.*                0      0 49152      0      LISTEN
   *.*                         *.*                0      0 49152      0      IDLE
   *.32774                     *.*                0      0 49152

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

netstat コマンドの -f オプションを使用すると、特定のアドレスファミリのパケット転送に関する統計を表示できます。

  1. IPv4 パケットまたは IPv6 パケットの転送に関する統計を表示します。


    $ netstat -f inet  |  inet6
    

    IPv4 パケット転送に関する情報を表示するには、netstat -f の引数として inet を指定します。IPv6 パケット転送に関する情報を表示するには、netstat -f の引数として inet6 を指定します。


例 8–10 IPv4 パケット転送の状態

次に、netstat - f inet コマンドの出力例を示します。


TCP: IPv4
   Local Address        Remote Address    Swind Send-Q Rwind Recv-Q  State
-------------------- -------------------- ----- ------ ----- ------ -------
host58.734         host19.nfsd       49640      0 49640      0 ESTABLISHED
host58.38063       host19.32782      49640      0 49640      0 CLOSE_WAIT
host58.38146       host41.43601      49640      0 49640      0 ESTABLISHED
host58.996         remote-host.login 49640      0 49206      0 ESTABLISHED


例 8–11 IPv6 パケット転送の状態

次に、netstat - f inet6 コマンドの出力例を示します。


TCP: IPv6
 Local Address          Remote Address        Swind Send-Q Rwind Recv-Q   State    If
------------------ ------------------------- ----- ------ ----- ------ --------- -----
localhost.38065         localhost.32792       49152   0 49152      0    ESTABLISHED  
localhost.32792         localhost.38065       49152   0 49152      0    ESTABLISHED 
localhost.38089         localhost.38057       49152   0 49152      0    ESTABLISHED 

Procedure既知のルートの状態を表示する方法

netstat コマンドの -r オプションは、ローカルホストの経路制御テーブルを表示します。このテーブルには、ホストが知っているすべてのルートの状態が表示されます。netstat の r オプションは、ユーザーアカウントで実行できます。

  1. IP 経路制御テーブルを表示します。


    $ netstat -r
    

例 8–12 netstat コマンドによる経路制御テーブルの出力

次に、netstat - r コマンドの出力例を示します。


Routing Table: IPv4
  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
host15               myhost               U         1  31059  hme0
10.0.0.14            myhost               U         1      0  hme0
default              distantrouter        UG        1      2  hme0
localhost            localhost            UH        42019361  lo0

Routing Table: IPv6
  Destination/Mask            Gateway                   Flags Ref   Use   If  
--------------------------- --------------------------- ----- --- ------ -----
2002:0a00:3010:2::/64    2002:0a00:3010:2:1b2b:3c4c:5e6e:abcd U  1      0 hme0:1
fe80::/10                fe80::1a2b:3c4d:5e6f:12a2    U       1     23 hme0 
ff00::/8                 fe80::1a2b:3c4d:5e6f:12a2    U       1      0 hme0 
default                  fe80::1a2b:3c4d:5e6f:12a2    UG      1      0 hme0 
localhost                localhost                   UH      9  21832 lo0 

次の表では、netstat —r コマンドの画面出力の各種パラメータの意味について説明します。

パラメータ 

説明 

送信先

Destination/Mask

ルートの宛先エンドポイントであるホストを指定します。IPv6 経路制御テーブルには、6to4 トンネルのエンドポイントの接頭辞 (2002:0a00:3010:2::/64 ) がルートの宛先エンドポイントとして示されていることに注目してください。

Gateway

パケットの転送に使用するゲートウェイを指定します。 

Flags

ルートの現在の状態を示します。U フラグはルートが up 状態であること、G フラグはルートがゲートウェイへのものであることを示します。

Use

送信したパケットの数を示します。 

Interface

転送元のエンドポイントである、ローカルホスト上の特定のインタフェースを示します。 


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

ping コマンドを使用すると、リモートホストの状態を判断できます。ping を実行すると、ICMP プロトコルは、指定されたホストにデータグラムを送って、応答を求めます。ICMP は、TCP/IP ネットワーク上のエラー処理を担当するプロトコルです。ping を使用すると、指定したリモートホストに IP 接続が存在するかどうかを判断できます。

次に、ping の基本構文を示します。

/usr/sbin/ping host [timeout]

この構文において、host はリモートホストの名前です。省略可能な timeout 引数は、ping コマンドがリモートホストに到達しようと試行する秒数を示します。デフォルトは 20 秒です。構文とオプションの詳細については、ping(1M) のマニュアルページを参照してください。

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

  1. 次の書式の ping コマンドを使用します。


    $ ping hostname
    

    ホスト hostname が ICMP 転送を受け入れる場合、次のメッセージが表示されます。


    hostname is alive

    このメッセージは、hostname が ICMP の要求に応答したことを示します。hostname がダウン状態にあるかまたは ICMP パケットを受け取れなかった場合は、ping コマンドから次の応答が返されます。


    no answer from hostname
    

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

-ping コマンドの s オプションを使用すると、リモートホストは動作しているが、パケットが失われているかどうかを判断できます。

  1. 次の書式の ping コマンドを使用します。


    $ ping -s hostname
    

例 8–13 パケットの消失を検出するための ping 出力

ping -s hostname コマンドは、割り込み文字が送信されるまで、あるいは、タイムアウトが発生するまで、指定されたホストにパケットを送信し続けます。 画面上には次のように出力されます。


& ping -s host1.domain8
PING host1.domain8 : 56 data bytes
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=0. time=1.67 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=1. time=1.02 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=2. time=0.986 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=3. time=0.921 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=4. time=1.16 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=5. time=1.00 ms
64 bytes from host1.domain8.COM (172.16.83.64): icmp_seq=5. time=1.980 ms

^C

----host1.domain8  PING Statistics----
7 packets transmitted, 7 packets received, 0% packet loss
round-trip (ms)  min/avg/max/stddev = 0.921/1.11/1.67/0.26

パケットの消失という統計は、ホストがパケットを失っているかどうかを示します。ping が失敗する場合、ifconfig コマンドと netstat コマンドからの報告を使用して、ネットワークの状態をチェックします。詳細については、ifconfig コマンドによるインタフェース構成の監視」netstat コマンドによるネットワークの状態の監視」を参照してください。


ネットワーク状態表示の管理と記録

次の作業に、一般的なネットワークコマンドを使用して、ネットワークの状態をチェックする方法を示します。

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

netstat コマンドと ifconfig コマンドの出力を制御すると、IPv4 情報だけを表示したり、IPv4 と IPv6 の両方の情報を表示したりできます。

  1. /etc/default/inet_type ファイルを作成します。

  2. ネットワークの要求に基づいて、次のエントリのうちの 1 つを/etc/default/inet_type ファイルに追加します。

    • IPv4 情報だけを表示するには、次のように入力します。


      DEFAULT_IP=IP_VERSION4
    • IPv4 情報と IPv6 情報を表示するには、次のいずれかを入力します。


      DEFAULT_IP=BOTH

      または


      DEFAULT_IP=IP_VERSION6

      inet_type ファイルの詳細については、inet_type(4) のマニュアルページを参照してください。


    注 –

    ifconfig コマンドの -4 フラグと -6 フラグの設定は、inet_type ファイルに設定された値より優先します。また、netstat コマンドの -f フラグの設定も、inet_type ファイルに設定された値より優先します。



例 8–14 IPv4 情報と IPv6 情報を選択する出力の制御


ProcedureIPv4 経路制御デーモンの活動を記録する方法

IPv4 経路制御デーモン routed の動作が疑わしい場合、このデーモンの活動をトレースするログを開始できます。routed デーモンを起動すると、このログにはすべてのパケット転送が記録されます。

  1. ローカルホスト上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. 経路制御デーモンの活動のログファイルを作成します。


    # /usr/sbin/in.routed /var/log-file-name
    

    注意 – 注意 –

    ビジー状態のネットワークでは、このコマンドによりほとんど絶え間なく出力が生じることがあります。



例 8–15 in.routed デーモンのネットワークログ

次の例に、「IPv4 経路制御デーモンの活動を記録する方法」の手順で作成したログの開始部分を示します。


-- 2003/11/18 16:47:00.000000 --
Tracing actions started
RCVBUF=61440
Add interface lo0  #1   127.0.0.1      -->127.0.0.1/32   
   <UP|LOOPBACK|RUNNING|MULTICAST|IPv4> <PASSIVE> 
Add interface hme0 #2   10.10.48.112    -->10.10.48.0/25   
    <UP|BROADCAST|RUNNING|MULTICAST|IPv4> 
turn on RIP
Add    10.0.0.0        -->10.10.48.112      metric=0  hme0  <NET_SYN>
Add    10.10.48.85/25  -->10.10.48.112      metric=0  hme0  <IF|NOPROP>

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

IPv6 の in.ndpd デーモンの動作が疑わしい場合、このデーモンの活動をトレースするログを開始できます。中断されるまで、トレースの結果は標準出力に表示されます。in.ndpd デーモンを起動すると、このトレースにはすべてのパケット転送が記録されます。

  1. IPv6 のローカルノード上で、Primary Administrator の役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. in.ndpd デーモンのトレースを起動します。


    # /usr/lib/inet/in.ndpd -t
    
  3. トレースを終了するには、Ctrl-C を押します。


例 8–16 in.ndpd デーモンのトレース

次の例に、in.ndpd のトレースの開始部分を示します。


# /usr/lib/inet/in.ndpd -t
Nov 18 17:27:28 Sending solicitation to  ff02::2 (16 bytes) on hme0
Nov 18 17:27:28         Source LLA: len 6 <08:00:20:b9:4c:54>
Nov 18 17:27:28 Received valid advert from fe80::a00:20ff:fee9:2d27 (88 bytes) on hme0
Nov 18 17:27:28         Max hop limit: 0
Nov 18 17:27:28         Managed address configuration: Not set
Nov 18 17:27:28         Other configuration flag: Not set
Nov 18 17:27:28         Router lifetime: 1800
Nov 18 17:27:28         Reachable timer: 0
Nov 18 17:27:28         Reachable retrans timer: 0
Nov 18 17:27:28         Source LLA: len 6 <08:00:20:e9:2d:27>
Nov 18 17:27:28         Prefix: 2001:08db:3c4d:1::/64
Nov 18 17:27:28                 On link flag:Set
Nov 18 17:27:28                 Auto addrconf flag:Set
Nov 18 17:27:28                 Valid time: 2592000
Nov 18 17:27:28                 Preferred time: 604800
Nov 18 17:27:28         Prefix: 2002:0a00:3010:2::/64
Nov 18 17:27:28                 On link flag:Set
Nov 18 17:27:28                 Auto addrconf flag:Set
Nov 18 17:27:28                 Valid time: 2592000
Nov 18 17:27:28                 Preferred time: 604800

traceroute コマンドによる経路制御情報の表示

traceroute コマンドは、IP パケットが通るリモートシステムまでのルートをトレースします。traceroute の技術的な詳細については、traceroute(1M) のマニュアルページを参照してください。

traceroute コマンドを使用すると、経路制御の誤構成や経路制御パスの異常を発見できます。特定のホストが到達不可能な場合には、traceroute を使用して、パケットがどの経路をたどってリモートホストに到達し、どこで障害が起きている可能性があるかを調べることができます。

また、traceroute コマンドは、経路に沿った各ゲートウェイのターゲットホストとの間の往復時間も表示します。この情報は、2 つのホスト間のどこでトラフィックが遅くなっているかを分析する際に利用できます。

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

  1. 次のコマンドを入力すると、リモートホストまでのルートを発見できます。


    % traceroute destination-hostname
    

    この書式の traceroute コマンドは、ユーザーアカウントで使用できます。


例 8–17 traceroute コマンドによるリモートホストまでのルートの表示

次の traceroute コマンドからの出力に、パケットがローカルシステム nearhost からリモートシステム farhost まで通る 7 ホップパスを示します。また、パケットが各ホップを通過する時間も示します。


istanbul% traceroute farhost.faraway.com
	traceroute to farhost.faraway.com (172.16.64.39), 30 hops max, 40 byte packets
	 1  frbldg7c-86 (172.16.86.1)  1.516 ms  1.283 ms  1.362 ms
	 2  bldg1a-001 (172.16.1.211)  2.277 ms  1.773 ms  2.186 ms
	 3  bldg4-bldg1 (172.16.4.42)  1.978 ms  1.986 ms  13.996 ms
	 4  bldg6-bldg4 (172.16.4.49)  2.655 ms  3.042 ms  2.344 ms
	 5  ferbldg11a-001 (172.16.1.236)  2.636 ms  3.432 ms  3.830 ms
	 6  frbldg12b-153 (172.16.153.72)  3.452 ms  3.146 ms  2.962 ms
	 7  sanfrancisco (172.16.64.39)  3.430 ms  3.312 ms  3.451 ms

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

この手順では、traceroute コマンドの -a オプションを使用して、すべてのルートをトレースします。

  1. ローカルシステムで次のコマンドを入力します。


    % traceroute -ahost-name
    

    この書式の traceroute コマンドは、ユーザーアカウントで使用できます。


例 8–18 デュアルスタックホストまでのすべてのルートのトレース

次の例に、デュアルスタックホストまでの考えられるルートをすべて示します。


% traceroute -a v6host.remote.com
traceroute: Warning: Multiple interfaces found; using 2::56:a0:a8 @ eri0:2
traceroute to v6host (2001:db8:4a3b::102:a00:fe79:19b0),30 hops max, 60 byte packets
 1  v6-rout86 (2001:db8:4a3b:56:a00:fe1f:59a1)  35.534 ms  56.998 ms * 
 2  2001:db8::255:0:c0a8:717  32.659 ms  39.444 ms *
 3  farhost.faraway.COM (2001:db8:4a3b::103:a00:fe9a:ce7b)  401.518 ms  7.143 ms *
 4  distant.remote.com (2001:db8:4a3b::100:a00:fe7c:cf35)  113.034 ms  7.949 ms *
 5  v6host (2001:db8:4a3b::102:a00:fe79:19b0)  66.111 ms *  36.965 ms

traceroute to v6host.remote.com  (192.168.10.75),30 hops max,40 byte packets
 1  v6-rout86 (172.16.86.1)  4.360 ms  3.452 ms  3.479 ms
 2  flrmpj17u.here.COM (172.16.17.131)  4.062 ms  3.848 ms  3.505 ms
 3  farhost.farway.com (10.0.0.23)  4.773 ms *  4.294 ms
 4  distant.remote.com (192.168.10.104)  5.128 ms  5.362 ms *
 5  v6host  (192.168.15.85)  7.298 ms  5.444 ms *
 

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

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

Oracle Solaris では、単一のインタフェースに複数の IP アドレスを付与することができます。たとえば、ネットワーク多重パス (IPMP) のような技術を使用すると、複数のネットワークインタフェースカード (NIC) が同じ IP リンク層に接続できます。このようなリンクは 1 つまたは複数の IP アドレスを持つことができます。さらに、IPv6 が有効なシステム上のインタフェースは、1 つの IPv6 リンクローカルアドレス、少なくとも 1 つの IPv6 経路制御アドレス、および (少なくとも 1 つのインタフェースに) 1 つの IPv4 アドレスを持ちます。

システムがトランザクションを起動すると、アプリケーションは getaddrinfo ソケットへの呼び出しを作成します。getaddrinfo は、宛先システム上で使用されている可能なアドレスを発見します。そのあと、カーネルはこのリストに優先度を付けて、パケットに使用するのに最適な宛先を見つけます。このプロセスのことを「宛先アドレス順番付け」と呼びます。そのあと、Oracle Solaris カーネルは、パケットに最適な宛先アドレスに対して、適切なソースアドレスの書式を選択します。このプロセスのことを「アドレス選択」と呼びます。宛先アドレス順番付けの詳細については、getaddrinfo(3SOCKET) のマニュアルページを参照してください。

IPv4 専用システムとデュアルスタック IPv4/IPv6 システムは両方とも、デフォルトアドレス選択を実行する必要があります。ほとんどの状況では、デフォルトアドレス選択機構を変更する必要はありません。しかし、IPMP をサポートしたり、6to4 アドレス書式を選択したりする場合は、アドレス書式の優先度を変更する必要があります。

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

次の手順では、アドレス選択ポリシーテーブルを変更する方法について説明します。IPv6 デフォルトアドレス選択の概念については、ipaddrsel コマンド」を参照してください。


注意 – 注意 –

次の手順に示す理由がない場合は、IPv6 アドレス選択ポリシーテーブルを変更しないでください。このポリシーテーブルを間違って変更すると、ネットワーク上で問題が発生する可能性があります。次の手順に示すように、このポリシーテーブルは必ずバックアップを保存してください。


  1. Primary Administrator 役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. 現在の IPv6 アドレス選択ポリシーテーブルを調査します。


    # ipaddrsel
    # Prefix                  Precedence Label
    ::1/128                           50 Loopback
    ::/0                              40 Default
    2002::/16                         30 6to4
    ::/96                             20 IPv4_Compatible
    ::ffff:0.0.0.0/96                 10 IPv4
  3. デフォルトアドレス選択ポリシーテーブルのバックアップを作成します。


    # cp /etc/inet/ipaddrsel.conf /etc/inet/ipaddrsel.conf.orig
    
  4. テキストエディタを使用して、/etc/inet/ipaddrsel.conf を自分用にカスタマイズします。

    /etc/inet/ipaddrsel のエントリには、次の構文を使用します。


    prefix/prefix-length precedence label [# comment ] 
    

    次に、デフォルトアドレス選択ポリシーテーブルに一般的に行われる変更の例を示します。

    • 6to4 アドレスに最高の優先度を付ける場合。


      2002::/16                         50 6to4
      ::1/128                           45 Loopback

      6to4 アドレス書式の優先度は現在、最高の50 です。Loopback の優先度は、以前は 50 でしたが、現在は 45 です。ほかのアドレス書式の優先度は変わりません。

    • 特定の宛先アドレスとの通信において、特定のソースアドレスを使用するように指示する場合。


      ::1/128                           50 Loopback
      2001:1111:1111::1/128             40 ClientNet
      2001:2222:2222::/48               40 ClientNet
      ::/0                              40 Default

      このエントリは、物理インタフェースが 1 つしかないホストの場合に役立ちます。ここで、2001:1111:1111::1/128 は、ネットワーク 2001:2222:2222::/48 内にある宛先に向けられたすべてのパケットのソースアドレスとして優先されます。優先度 40 は、このインタフェースに構成されたほかのアドレス書式よりも、ソースアドレス 2001:1111:1111::1/128 を優先することを指示します。

    • IPv6 アドレスよりも IPv4 アドレスを優先する場合。


      ::ffff:0.0.0.0/96                 60 IPv4
      ::1/128                           50 Loopback
      .
      .

      このテーブルでは、IPv4 書式 ::ffff:0.0.0.0/96 の優先度をデフォルトの 10 からテーブル内で最高の 60 に変更しています。

  5. 変更したポリシーテーブルをカーネルにロードします。


    ipaddrsel -f /etc/inet/ipaddrsel.conf
    
  6. 変更したポリシーテーブルに問題がある場合は、IPv6 デフォルトアドレス選択ポリシーテーブルを復元します。


    # ipaddrsel -d
    

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

/etc/inet/ipaddrsel.conf ファイルを編集すると、その変更はリブート後も適用されます。変更したポリシーテーブルを現在のセッションだけに適用したい場合、次の手順に従います。

  1. Primary Administrator 役割を引き受けるか、スーパーユーザーになります。

    Primary Administrator 役割には、Primary Administrator プロファイルが含まれます。役割を作成してユーザーに役割を割り当てるには、『Solaris のシステム管理 (基本編)』の第 2 章「Solaris 管理コンソールの操作 (手順)」を参照してください。

  2. /etc/inet/ipaddrsel の内容を filename にコピーします (filename は自分が選択した名前)。


    # cp /etc/inet/ipaddrsel filename
    
  3. 必要に応じて、filename 内のポリシーテーブルを編集します。

  4. 変更したポリシーテーブルをカーネルにロードします。


    # ipaddrsel -f filename
    

    システムをリブートするまで、カーネルは新しいポリシーテーブルを使用します。