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

第 6 章 TCP/IP の管理

ネットワーク管理の段階では、ネットワークを設定します。ここで行う作業は、ネットワークの物理部分を形成するハードウェアの組み立てと、TCP/IP の構成です。この章では TCP/IP の構成方法と、ネットワークを構成した後で TCP/IP の障害追跡を行う方法について説明します。

TCP/IP を構成する前に行う作業マップ

TCP/IP ソフトウェアの構成を行う前に、表 6-1 に示す作業を完了しておく必要があります。

表 6-1 TCP/IP を構成する前に行う作業マップ

説明 

参照先 

ネットワーク設計者の場合は、ネットワークトポロジを設計する 

「ネットワークトポロジ」

インターネットのアドレス指定機関からネットワーク番号を入手する 

「IPv4 アドレス指定スキーマの設計」

設計したトポロジに従ってネットワークハードウェアを組み立て、ハードウェアが動作することを確認する 

ハードウェアのマニュアルと 「ネットワークトポロジ」

ネットワークインタフェースとルーターが必要とする構成ソフトウェアがあれば、それを実行する 

「ルーターの追加」と 「ルーターの構成」

ネットワークに対する IP アドレス指定スキーマの計画を立てる。これには、必要に応じてサブネットアドレス指定も含まれる 

「IPv4 アドレス指定スキーマの設計」と 「IPv6 アドレス指定」

ネットワークに含まれるすべてのマシンに、IP 番号とホスト名を割り当てる 

「IPv4 アドレス指定スキーマの設計」と 「IPv6 アドレス指定」

ネットワークでどのネームサービス、つまり NIS、NIS+、DNS、またはローカルファイルのどれを使用するかを決定する 

『Solaris ネーミングの管理』

必要なら、ネットワークで使用するドメイン名を選択する 

『Solaris ネーミングの管理』

予定しているネットワーク上の少なくとも 1 台のマシンにオペレーティングシステムをインストールする 

『Solaris 8 のインストール (上級編)』

ホスト構成モードの決定

ネットワーク管理者が行う主要な作業の 1 つに、ホストとルーター (必要な場合) で実行できるように TCP/IP を構成する作業があります。これらのマシンは、2 つの情報源から構成情報を入手するように設定できます。それは、ローカルマシン上のファイルと、ネットワーク内の他のマシンにあるファイルです。構成情報には次のものがあります。

TCP/IP 構成情報をローカルファイルから入手するマシンの状態を、ローカルファイルモードで稼動していると言います。TCP/IP 構成情報をリモートマシンから入手するマシンの状態を、ネットワーククライアントモードで稼動していると言います。

ローカルファイルモードで実行するマシン

ローカルファイルモードで実行するマシンは、TCP/IP 構成ファイルをローカルに持っている必要があります。これらのファイルについては、「TCP/IP 構成ファイル」で説明します。このマシンが専用のディスクを持っていることが望ましいですが、不可欠というわけではありません。

ほとんどのサーバーはローカルファイルモードで実行します。主な必要条件は次のとおりです。

また、ルーターはローカルファイルモードで実行する必要があります。

印刷サービス専用として機能するマシンは、ローカルファイルモードで実行する必要はありません。個々のホストをローカルファイルモードで実行する方がよいかどうかは、ネットワークの規模によって異なります。

ネットワークがきわめて小さい場合は、個々のホストのファイルを管理する作業は比較的簡単です。しかし、数百のホストから成るネットワークの場合は、そのネットワークがいくつかの管理サブドメインに分割されていたとしても、この作業は困難なものとなります。したがって、規模の大きいネットワークの場合は、ローカルファイルモードを使用しても一般に効率は上がりません。ただし、ルーターとサーバーはそれぞれ自身で構成されるものなので、ローカルファイルモードで構成する必要があります。

ネットワーク構成サーバー

ネットワーク構成サーバーは、ネットワーククライアントモードで構成されているホストに、TCP/IP 構成情報を提供するマシンです。この種のサーバーは、次の 3 つのブートプロトコルをサポートしています。

ネットワーク構成サーバーは、NFS ファイルサーバーとしても使用できます。

ホストのどれかをネットワーククライアントとして構成する場合は、ネットワーク内のマシンの少なくとも 1 つをネットワーク構成サーバーとして構成する必要があります。ネットワークをサブネット化する場合は、ネットワーククライアントを持つ各サブネットについて、ネットワーク構成サーバーが少なくとも 1 つは必要です。

ネットワーククライアントであるマシン

ネットワーク構成サーバーから自己の構成情報を入手するホストの状態を、ネットワーククライアントモードで「稼動中」であると言います。ネットワーククライアントとして構成したマシンでは、TCP/IP 構成ファイルのローカルコピーは不要です。

ネットワーククライアントモードを使用すると、大規模ネットワークの管理が大幅に簡素化されます。個々のホストで行う構成作業が最小限の量で済み、ネットワーク上のすべてのマシンが確実に同じ構成標準に従ったものとなります。

完全なスタンドアロンシステムからデータレスマシンに至るまで、すべての種類のコンピュータについて、ネットワーククライアントマシンを構成できます。ルーターとサーバーもネットワーククライアントモードで構成できますが、これらのマシンではローカルファイルモードの方がよい選択です。ルーターとサーバーは、できる限り自給自足型にしておかねばなりません。

混合構成

システムは高い柔軟性を備えているため、すべてをローカルホストモードに構成したり、すべてをネットワーククライアントモードに構成するような、どちらか一方に限定する必要はありません。そのよい例がルーターとサーバーで、これらは常にローカルモードで構成するのが最適です。ホストについては、必要に応じてローカルモードとネットワーククライアントモードを任意に組み合わせて使用できます。

サンプルネットワーク

図 6-1 は、ネットワーク番号が 192.9.200 である架空のネットワークのホストを示しています。このネットワークにはネットワーク構成サーバーが 1 つあり、それは sahara というマシンです。tenere と nubian の 2 つのマシンはそれぞれ独自にディスクを持っており、ローカルファイルモードで動作します。マシン faiyum もディスクを持っていますが、これはネットワーククライアントモードで動作します。

最後に、マシン timbuktu はルーターとして構成されています。このマシンには 2 つのネットワークインタフェースが組み込まれており、それぞれの名前は、ネットワーク 192.9.200 用が timbuktu で、ネットワーク 192.9.201 用が timbuktu-201 です。どちらのネットワークも、組織ドメイン deserts.worldwide.com に含まれています。このドメインは、ローカルファイルをネームサービスとして使用します。

この章の中のほとんどの例では、図 6-1 に示すネットワークにもとづいて説明しています。

図 6-1 サンプルネットワーク内のホスト

Graphic

ネットワークにサブネットを追加するための作業マップ

サブネットを使用していないネットワークをサブネット化するためには、表 6-2 に示す作業を行ないます。

表 6-2 ネットワークにサブネットを追加するための作業マップ

説明 

参照先 

1. 新しいサブネットトポロジについて決定する。これには、ルーターに関する考慮事項や、サブネット上でのホストの位置などが含まれる 

「ルーターの追加」、「サブネット化とは」、および 「ネットワーククラス」

2. すべてのサブネットアドレスとホストアドレスを割り当てる 

「IP アドレス指定スキーマの設定」、および 「IPv4 アドレスの構成部分」

3. 手動で TCP/IP を構成している場合は、/etc/inet/netmasks ファイルを修正する。そうでない場合は Solaris インストールプログラムを使用してネットマスクを修正する

「netmasks データベース」、および 「IPv4 アドレス用のネットワークマスクの作成」

4. 新しいホストアドレスを反映させるために、すべてのホスト上で /etc/inet/hosts ファイルおよび /etc/inet/ipnodes ファイルを変更する

「hosts データベース」、および 「ipnodes データベース」

5. すべてのマシンを再起動する 

 

ネットワーク構成手順

オペレーティングシステムのソフトウェアをインストールするときに、同時にネットワークのソフトウェアもインストールされます。そのときに、いくつかの IP 構成パラメータを対応するファイルに格納して、ブート時に読み取れるようにしておく必要があります。

ここで必要な手順は、ネットワーク構成ファイルを作成または編集するということです。構成情報がどのようにマシンのカーネルに対して使用可能にされるかは、構成ファイルがローカルに格納されているか (ローカルファイルモード)、それともネットワーク構成サーバーから構成ファイルを入手するか (ネットワーククライアントモード) によって異なります。

ネットワーク構成時に指定するパラメータには、次のものがあります。

ここでは、ローカル構成ファイルを作成および編集する手順を説明しています。ネームサービスデータベースの処理については、『Solaris ネーミングの管理』を参照してください。

ネットワークを構成するための作業マップ

表 6-3 ネットワークを構成するための作業マップ

作業 

説明 

参照先 

ホストをローカルファイルモード用に構成する 

nodename、hostname、hosts、 defaultdomain、 defaultrouter、および netmasks ファイルを編集する

「ローカルファイルモードの場合のホストの構成方法」

ネットワーク構成サーバーをセットアップする 

in.tftp daemon をオンにし、intetd.conf、hosts、 ethers、および bootparams ファイルを編集する

「ネットワーク構成サーバーの設定方法」

ホストをネットワーククライアントモード用に構成する 

hostname ファイルを作成し、hosts ファイルを編集する。また、nodename ファイルと defaultdomain ファイルがある場合はこれらを削除する

「ネットワーククライアントモードの場合のホストの構成方法」

ネットワーククライアントに対してルーターを指定する 

defaultrouter ファイルと hosts ファイルを編集する

「ネットワーククライアント用のルーターの指定方法」

ローカルファイルモードの場合のホストの構成方法

ローカルファイルモードで動作するマシン上の TCP/IP を構成するための手順は、次のとおりです

  1. スーパーユーザーになり、/etc ディレクトリに移動します。

  2. マシンのホスト名を /etc/nodename ファイルに入力します。

    たとえば、ホストの名前が tenere であるとすれば、このファイルに tenere と入力します。

  3. 各ネットワークインタフェースについて、/etc/hostname.interface という名前のファイルを作成します

    (一次ネットワークインタフェースについては、Solaris インストールプログラムが自動的にこのファイルを作成します)。「/etc/hostname.interface ファイル」を参照してください。IPv6 を使用している場合は、「IPv6 ネットワークインタフェース構成ファイル」を参照してください。

  4. /etc/hostname.interface ファイルに、インタフェース IP アドレスかインタフェース名を入力します。

    たとえば、hostname.ie1 という名前のファイルを作成し、ホストのインタフェースの IP アドレスかまたはホスト名を入力します。

  5. /etc/inet/hosts ファイルを編集して、以下の内容を追加します。

    1. ローカルマシンに増設したネットワークインタフェースに割り当てた IP アドレスと、各インタフェースのホスト名

      一次ネットワークインタフェースとループバックアドレスについてのエントリは、すでに Solaris インストールプログラムにより作成されています。

    2. /usr ファイルシステムを NFS マウントする場合は、ファイルサーバーの IP アドレス


      注 -

      Solaris インストールプログラムは、ローカルマシン用のデフォルトの /etc/inet/host を作成します。このファイルが存在していない場合は、「hosts データベース」の説明に従って作成してください。また、IPv6 を使用している場合は、「/etc/inet/ipnodes ファイル」を参照してください。


  6. 完全指定のドメイン名を /etc/defaultdomain ファイルに入力します。

    たとえば、ホスト tenere がドメイン deserts.worldwide.com に所属しているとします。その場合は、/etc/defaultdomain に deserts.worldwide.com を入力します。詳細は、 「/etc/defaultdomain ファイル」を参照してください。

  7. ルーターの名前を /etc/defaultrouter に入力します。

    詳細は、「/etc/defaultrouter ファイル」を参照してください。

  8. デフォルトのルーターの名前とその IP アドレスを /etc/inet/hosts に入力します。

    上記以外にも、使用できるルーティングオプションがいくつかあります。 「ネットワーククライアントモードの場合のホストの構成方法」中の、ルーティングオプションについての説明を参照してください。これらのオプションは、ローカルファイルモード構成にも適用できます。

  9. ネットワークをサブネット化する場合は、ネットワーク番号とネットマスクを /etc/inet/netmasks ファイルに入力します。

    NIS または NIS+ サーバーを設定してある場合は、サーバーとクライアントが同じネットワーク上にあれば、サーバー上の該当のデータベースにネットマスク情報を入力できます。

  10. ネットワーク上の各マシンをリブートします。

ネットワーク構成サーバーの設定方法

  1. スーパーユーザーになり、予定しているネットワーク構成サーバーのルートディレクトリに移動します。

  2. ディレクトリ /tftpboot を作成することにより、in.tftpd デーモンが動作するようにします。


    # mkdir /tftpboot
    

    これで、マシンは、TFTP、bootparams、RARP のサーバーに構成されます。

  3. 手順 2 で作成したディレクトリに対するシンボリックリンクを作成します。


    # ln -s /tftpboot/. /tftpboot/tftpboot
    
  4. inetd.conf ファイルにある tftp の行を有効にします。

    /etc/inetd.conf のエントリが次のようになっていることを確認してください。


    tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot

    これによって、/tftpboot に格納されたファイル以外のファイルを inettftpd() で検索できなくなります。

  5. hosts データベースを編集して、ネットワーク上のすべてのクライアントのホスト名と IP アドレスを追加します。

  6. ethers データベースを編集して、ネットワーククライアントモードで実行するネットワーク上のすべてのホストについてエントリを作成します。

  7. bootparams データベースを編集します。

    「bootparams データベース」を参照してください。ワイルドカードエントリを作成するか、または、ネットワーククライアントモードで実行するすべてのホストについてエントリを作成します。

  8. サーバーをリブートします。

インストールサーバー、ブートサーバーを設定する方法については、『Solaris 8 のインストール (上級編)』を参照してください。

ネットワーククライアントの構成

ネットワーククライアントは、各自の構成情報をネットワーク構成サーバーから入手します。したがって、あるホストをネットワーククライアントとして構成するときは、このネットワーク用として、ネットワーク構成サーバーが少なくとも 1 つは設定されていることを確認してください。

ネットワーククライアントモードの場合のホストの構成方法

ネットワーククライアントモードで構成する必要のある各ホストについて、次のことを行います。

  1. スーパーユーザーになります。

  2. ディレクトリを調べて、/etc/nodename ファイルがあるかどうかを確認します。ある場合は、このファイルを削除してください。

    /etc/nodename を削除すると、システムは hostconfig プログラムを使用して、ネットワーク構成サーバーから、ホスト名、ドメイン名、ルーターアドレスを入手するようになります。「ネットワーク構成手順」を参照してください。

  3. /etc/hostname.interface ファイルが存在していない場合は、それを作成します。

    そのファイルが空であることを確認してください。/etc/hostname.interface ファイルが空であれば、システムはネットワーク構成サーバーから IP アドレスを入手します。IPv6 を使用している場合は、「IPv6 ネットワークインタフェース構成ファイル」を参照してください。

  4. /etc/inet/hosts ファイルに、ループバックネットワークインタフェースのホスト名と IP アドレス以外の内容が入っていないことを確認します。

    (「ループバックアドレス」を参照してください)。このファイルには、ローカルマシン (一次ネットワークインタフェース) の IP アドレスとホスト名が入っていてはいけません。また、IPv6 を使用している場合は、「/etc/inet/ipnodes ファイル」を参照してください。

  5. /etc/defaultdomain ファイルがあるかどうかを調べます。ある場合は、このファイルを削除します。

    hostconfig プログラムは、自動的にドメイン名を設定します。hostconfig プログラムが設定したドメイン名を上書きしたいときは、/etc/defaultdomain に代わりのドメイン名を入力します。

  6. クライアントの /etc/nsswitch.conf の中の検索パスが、ネットワークのネームサービスの要件を満たしていることを確認します。

ネットワーククライアント用のルーターの指定方法

  1. ネットワーク上にルーターが 1 つしかなく、ネットワーク構成サーバーが自動的にそのルーターの名前を指定するようにしたい場合は、ネットワーククライアントが /etc/defaultrouter ファイルを持っていないことを確認します。

  2. 次の手順に従って、ネットワーク構成サーバーが設定したデフォルトのルーターの名前を上書きします。

    1. ネットワーククライアント上に /etc/defaultrouter を作成します。

    2. デフォルトのルーターとして指定してあるマシンのホスト名と IP アドレスを入力します。

    3. 指定したデフォルトのルーターのホスト名と IP アドレスを、ネットワーククライアントの /etc/inet/hosts に追加します。

  3. ネットワークに複数のルーターがある場合は、ネットワーククライアント上に /etc/defaultrouter を作成し、空のままにしておきます。

/etc/defaultrouter を作成し、それを空のままにしておくと、2 つの動的ルーティングプロトコル、つまり、ICMP RDISC (Router Discovery Protocol) か RIP (Routing Information Protocol) のどちらか一方が実行されます。システムは、まず in.rdisc プログラムを実行します。このプログラムは、ルーター検出プロトコルを実行しているルーターを捜します。該当するルーターが見つかった場合は、in.rdisc はそのまま実行を続け、RDISC プロトコルを実行するルーターを追跡し続けます。

RDISC プロトコルに応答しているルーターがないと判断した場合は、システムは RIP を使用し、in.routed デーモンを実行してルーターを追跡します。

標準 TCP/IP サービスの構成

telnet、ftp、rlogin などのサービスは、inetd デーモンによって開始されます。このデーモンは、ブート時に自動的に実行されます。ネームサービスの順序を nsswitch.conf の中で指定したように、TCP/IP のサービスは、/etc/inetd.conf ファイルの中で inetd -t フラグを使用して構成できます。

たとえば、inetd を使用して、着信したすべての TCP 接続 (リモートログインと telnet) の IP アドレスをログに記録できます。ログ記録を作成するには、次の手順を実行します。

すべての着信 TCP 接続の IP アドレスを記録する方法

  1. スーパーユーザーになります。

  2. inetd デーモンを強制終了します。

  3. 次のコマンドを入力して、ログ記録をオンにします。


    # /usr/sbin/inetd -t -s
    

    スイッチ -t を指定することで、inetd は TCP 接続トレースを開始します。

    inetd(1M) と inetd.conf(4) のマニュアルページを参照してください。

ネームサービスについての詳細は、『Solaris ネーミングの管理』と『Solaris ネーミングの設定と構成』を参照してください。

ルーターの構成

TCP/IP がルーターに求める第 1 の必要条件は、「ネットワークインタフェース」 で説明したように、マシンが少なくとも 2 つのネットワークインタフェースを持っていなければならないということです。ネットワークインタフェースのどれか 1 つが使用可能な状態にあれば、ルーターは自動的に RDISC プロトコルと RIP プロトコルで「情報交換」します。これらのプロトコルは、絶えずネットワーク上でのルーターの状態を追跡し、ネットワーク上のホストにルーターを通知します。

ルーターを物理的にネットワークにインストール後、「ローカルファイルモードの場合のホストの構成方法」 の説明に従って、ルーターをローカルファイルモードで動作ように構成します。これで、ネットワーク構成サーバーがダウンしても、ルーターが確実にブートされるようになります。ホストと違って、ルーターには構成を要するインタフェースが 2 つあるということを忘れないでください。

ルーターを構成するための作業マップ

表 6-4 ルーターを構成するための作業マップ

作業 

説明 

参照先 

マシンをルーターとして構成する 

hostname および hosts ファイルを作成し、アドレスを追加する

「マシンをルーターとして構成する方法」

ネットワーククライアントであるホスト上で静的ルーティングを選択する 

defaultrouter ファイルにエントリを追加する

「ネットワーククライアントであるホスト上で静的ルーティングを選択する方法」

ネットワーククライアントであるホスト上で動的ルーティングを選択する 

defaultrouter ファイルのエントリを編集する

「ネットワーククライアントであるホスト上で動的ルーティングを選択する方法」

マシンを強制的にルーターにする 

gateways ファイルを作成する

「マシンを強制的にルーターにする方法」

ルーターの両方のネットワークインタフェースの構成

ルーターは、複数のネットワーク間のインタフェースを提供するものなので、ルーターの各ネットワークインタフェースカードに、それぞれ一意な名前と IP アドレスを割り当てる必要があります。これで、各ルーターは、その一次ネットワークインタフェースのホスト名と IP アドレスに加えて、増設した各ネットワークインタフェースについて少なくとも 1 つずつ、一意な名前と IP アドレスを持つことになります。

マシンをルーターとして構成する方法

  1. ルーターとして構成するマシン上でスーパーユーザーになります。

  2. インストールされているネットワークインタフェースごとに、/etc/hostname.interface ファイルを作成します。

    例えば、hostname.ie0 と hostname.ie1 を作成します。詳細については、「/etc/hostname.interface ファイル」を参照してください。IPv6 を使用している場合は、「IPv6 ネットワークインタフェース構成ファイル」を参照してください。

  3. 各ファイルに、そのインタフェースに対して選択したホスト名を入力します。

    たとえば、hostname.ie0 ファイルに timbuktu という名前を入力し、hostname.ie1 ファイルに timbuktu-201という名前を入力します。どちらのインタフェースも同じマシンに置かれることになります。

  4. 各インタフェースのホスト名と IP アドレスを /etc/inet/hosts に入力します。

    例:


    192.9.200.20     timbuktu       #interface for network 192.9.200
    192.9.201.20     timbuktu-201   #interface for network 192.9.201
    192.9.200.9      gobi
    192.9.200.10     mojave
    192.9.200.110    saltlake
    192.9.200.12     chilean

    インタフェース timbuktu と timbuktu-201 は、同じマシンにあります。timbuktu-201 のネットワークアドレスが、 timbuktu とは異なる点に注意してください。これは、ネットワーク 192.9.201 のメディアが timbuktu-201 ネットワークインタフェースに接続されるのに対し、ネットワーク 192.9.200 のメディアは timbuktu インタフェースに接続されるからです。IPv6 を使用している場合は、「/etc/inet/ipnodes ファイル」を参照してください。

  5. サブネット化したネットワークにルーターを接続する場合は、/etc/inet/netmasks を編集して、ローカルネットワーク番号 (たとえば 129.9.0.0) と、関連のネットマスク番号 (たとえば 255.255.255.0) を入力します。

起動スクリプトは、マシン上でルーティングプロトコル (RIP または RDISC) を起動するか、静的ルーティングを使用するかを決定します。

ネットワーククライアントであるホスト上で静的ルーティングを選択する方法

  1. ホスト上でスーパーユーザーになります。

  2. ネットワーク上のルーターのエントリを /etc/defaultrouter ファイルに追加します。

「/etc/defaultrouter ファイル」を参照してください。唯一の静的なデフォルトルートがルーティングテーブルに組み込まれます。この条件下では、ホストは動的ルーティングプロトコル (RIP や RDISC など) を実行しません。

ネットワーククライアントであるホスト上で動的ルーティングを選択する方法

  1. ホスト上でスーパーユーザーになります。

  2. /etc/defaultrouter ファイルが空であることを確認します。

    このファイルを空にしておくと、これによりネットワーククライアントに強制的に動的ルーティングプロトコルを選択させることができます。

使用される動的ルーティングのタイプは以下の判定条件に従って選択されます。

マシンを強制的にルーターにする方法

/etc/hostname.interface ファイルを 1 つだけ持つマシン (デフォルトではホスト) を、強制的にルーターにすることができます。

  1. ホスト上でスーパーユーザーになります。

  2. 名前が /etc/gateways というファイルを作成し、空のままにしておきます。

これは、PPP リンクを構成することに決めた場合は特に重要です。詳細は、「ルーティングに関する考慮事項」を参照してください。

マルチホームホストの作成

デフォルトでは、TCP/IP は、複数のネットワークインタフェースを持つマシンをすべてルーターとみなします。しかし、ルーターをマルチホームホストに変更することもできます。マルチホームホストとは、複数のネットワークインタフェースを持っているけれども、ルーティングプロトコルの実行も IP パケットの転送もしないマシンのことです。一般に、次のような種類のマシンはマルチホームホストとして構成します。

TCP/IP は、複数のネットワークインタフェースを持つマシンのすべてをルーターとみなすので、それをマルチホームホストに変えるには、いくつかの操作が必要になります。

マルチホームホストの作成方法

  1. マルチホームホストにしたいマシン上でスーパーユーザーになります。

  2. マシンにインストールされている追加の各ネットワークについて、/etc/hostname.interface ファイルを 1 つずつ作成します。

  3. 次のように入力します。


    % touch /etc/notrouter
    

    これで、/etc/notrouter という名前の、空のファイルが作成されます。

  4. マシンをリブートします。

マシンをリブートすると、起動スクリプトは /etc/notrouter ファイルの有無を確認します。このファイルが存在する場合は、起動スクリプトは、in.routed -s も in.rdisc -r も実行せず、また、ifconfig により "up" として構成されているインタフェースでは、いっさい IP の転送を行いません。これは、/etc/gateway ファイルが存在しているかどうかに関係なく行われます。これで、マシンはマルチホームホストになります。

省スペースモードをオンにする

省スペースモードでは、デフォルトのルートだけを含むテーブルがホストに提供されます。デフォルトでは、省スペースモードをオフにした状態で、ホストで in.routed が実行されます。

フルルーティングテーブル (これは、構成に誤りのあるルーターを排除するための保護を強化します) をホストに提供する必要がない場合は、省スペースモードをオンにします。

省スペースモードをオンにする方法

  1. ホスト上でスーパーユーザーになります。

  2. /etc/jc2.d/S69inet 起動スクリプトを編集します。


    /usr/sbin/in.routed -q

    上記の行を次のように変更します。


    /usr/sbin/in.routed -q -S

ICMP ルーター発見をオフにする

ルーターの信頼性の都合により、ホストに RDISC を使用させたくない場合があります。ホストにおいて、RDISC ではなく RIP の自動選択が確実に動作する場合は、ネットワーク内のルーター (特に RDISC を実行するもの) でも確実に動作しなければなりません。

RDISC を実行するルーターが他にないときに、Solaris ルーターを 1 つインストールすると、デフォルトの状態で、そのルーターに接続されるすべてのホストがそのルーターだけに依存することになります。そのネットワーク上のホストが他のルーターも使用できるようにするには、新しいルーターで RDISC をオフにします。

ICMP ルーター発見をオフにするための作業マップ

表 6-5 ICMP ルーター発見をオフにするための作業マップ

作業 

説明 

参照先 

ホスト上で ICMP ルーター発見をオフにする 

ホストの in.rdisc ファイルの名前を変更する

「netmasks データベース」

ルーター上で ICMP ルーター発見をオフにする 

ルーターの in.rdisc ファイルの名前を変更する

「サブネット化とは」

ホスト上で ICMP ルーター発見をオフにする方法

  1. ホスト上でスーパーユーザーになります。

  2. ホストの /usr/sbin/in.rdisc ファイルの名前を /usr/sbin/in.rdisc.saved などに変更します。

  3. ホストを再起動します。

ルーター上で ICMP ルーター発見をオフにする方法

  1. ルーター上でスーパーユーザーになります。

  2. ルーターの /usr/bin/in.rdisc ファイルの名前を他の名前に変更します。

  3. ルーターを再起動します。

一般的な障害追跡方法

ネットワーク上での問題を示す最初の徴候は、1 つまたはいくつかのホストでの通信の消滅です。あるホストを初めてネットワークに追加したときに、そのホストがまったく動作しない場合は、構成ファイルのどれか、またはネットワークインタフェースに問題があることが考えられます。1 つのホストに突然問題が生じた場合は、ネットワークインタフェースに原因があると考えられます。ネットワーク上のホスト相互間の通信はできるが、他のネットワークとの通信ができないという場合は、ルーターに問題があるか、または他のネットワークに問題があることが考えられます。

ifconfig プログラムを使用すればネットワークインタフェースに関する情報を入手でき、netstat を使用すればルーティングテーブルとプロトコル統計を表示できます。サードパーティのネットワーク診断プログラムから、さまざまな障害追跡ユーティリティが提供されています。詳細は、サードパーティのマニュアルを参照してください。

比較的明らかになりにくいのは、ネットワーク上での性能低下の原因です。たとえば、ping のようなツールを使用することで、ホストでのパケットの消失など、問題の原因を突き止めることができます。

ソフトウェア検査の実行

ネットワークに障害が生じた場合は、以下のような処置によって、ソフトウェア関連の問題を診断し修正することができます。

  1. netstat コマンドを使用してネットワーク情報を表示します。

  2. hosts データベース (IPv6 を使用している場合は ipnodes データベースも) を検査して、個々のエントリが適正で最新であるかどうかを確認します。

  3. RARP を実行している場合は、 ethers データベース内の Ethernet アドレスを検査して、個々のエントリが適正で最新であるかどうかを確認します。

  4. telnet によりローカルホストに接続してみます。

  5. ネットワークデーモン inetd が実行中であることを確認します。そのためには、スーパーユーザーとしてログインし、次のように入力します。


    # ps -ef | grep inetd
    

inetd デーモンが実行中であれば、次の例に示すような出力が表示されます。


root 57 1 0 Apr 04 ? 3:19 /usr/sbin/inetd -s
root 4218 4198 0 17:57:23 pts/3 0:00 grep inetd 

ping コマンド

ping コマンドは、特定のホストとの IP 接続が存在しているかどうかを確認するために使用します。基本構文は次のとおりです。


/usr/sbin/ping host [timeout]

host は問題のマシンのホスト名を示します。オプションの timeout 引数は、ping がそのマシンに到達しようと試みる秒数を示し、デフォルトは 20 秒です。詳しい構文とオプションについては、ping(1M) のマニュアルページを参照してください。

ping を実行すると、ICMP プロトコルは、指定されたホストにデータグラムを送って、応答を求めます (ICMP は、TCP/IP ネットワーク上のエラー処理を担当するプロトコルです。詳細は、「ICMP プロトコル」を参照してください)。

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

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

作業 

説明 

参照先 

ホストが動作しているか確認する 

ホスト名に対して ping を実行する

「ネットワークデータベースと nsswitch.conf ファイル」

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

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

「ネットワークデータベースへのネームサービスの影響」

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

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


    % ping hostname
    

    ホスト hostname が動作していれば、次のメッセージが表示されます。


    hostname is alive

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


    no answer from hostname
    

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

マシンが動作状態にあるのにパケットが失われている疑いがある場合は、ping に -s オプションを指定することにより、問題を追求できます。

    コマンド行で次のように入力します。


    % ping -s hostname
    

ping は、ユーザーが割り込み文字を送るかタイムアウトが発生するまで、hostname にパケットを送り続けます。画面上には、次のように出力されます。


PING elvis: 56 data bytes
64 bytes from 129.144.50.21: icmp_seq=0. time=80. ms
64 bytes from 129.144.50.21: icmp_seq=1. time=0. ms
64 bytes from 129.144.50.21: icmp_seq=2. time=0. ms
64 bytes from 129.144.50.21: icmp_seq=3. time=0. ms
.
.
.
----elvis PING Statistics----
4 packets transmitted, 4 packets received, 0% packet loss
round-trip (ms) min/avg/max = 0/20/80   

パケットロスの統計値は、ホストがパケットを失ったかどうかを示します。

ping が失敗した場合は、ifconfig と netstat が報告するネットワーク状態を調べます。これについては、「ifconfig コマンド」と 「netstat コマンド」を参照してくだい。

ifconfig コマンド

ifconfig コマンドは、指定したインタフェースの構成に関する情報を表示します。ifconfig(1M) のマニュアルページを参照してください。ifconfig の構文は次のとおりです。


ifconfig interface-name [protocol_family]

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

表 6-7 ifconfig コマンドで行う作業マップ

作業 

説明 

参照先 

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

ifconfig コマンドを使用する

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

ネットワーク上のすべてのインタフェースに関する情報を入手する 

ifconfig コマンドの -a オプションを使用する

「nsswitch.conf ファイル - 使用するネームサービスの指定」

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

  1. スーパーユーザーになります。

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


    # ifconfig interface
    

le0 インタフェースの場合、出力は次のようになります。


le0: flags=863<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 	inet 129.144.44.140 netmask ffffff00 broadcast 129.144.44.255
ether 8:0:20:8:el:fd

上記の flags セクションは、インタフェースが "up" として構成されていて、ブロードキャストの能力があり、"trailer" リンクレベルのカプセル化を使用していないことを示しています。mtu フィールドは、このインタフェースの最大転送サイズが 1500 オクテットであることを示しています。2 行目には、使用しているホストの IP アドレス、現在使用されているネットマスク、インタフェースの IP ブロードキャストアドレスの情報が含まれています。3 行目は、ホストのマシンアドレス (この場合は Ethernet) です。

ネットワーク上のすべてのインタフェースに関する情報を入手する方法

ifconfig の便利なオプションの 1 つに -a オプションがあります。これを使用すると、ネットワーク上のすべてのインタフェースに関する情報が提供されます。

  1. スーパーユーザーになります。

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


    # ifconfig -a interface
    

次のようなメッセージが表示されます。


le0:  flags=49<UP,LOOPBACK,RUNNING> mtu 8232
     inet 127.144.44.140 netmask ff000000 
le0:flags=863<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
     inet 129.144.44.140 netmask ffffff00 broadcast 129.144.44.255
ether 8:0:20:8:el:fd

動作していないインタフェースがあることが出力に示されている場合は、そのインタフェースに問題があると考えられます。その場合は、ifconfig(1M) のマニュアルページを参照してください。

netstat コマンド

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

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


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

ネットワーク状態の判別のために最もよく使用されるオプションは、 s、r、i です。オプションの説明については、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 列は、ルートで使用されているネットワークインタフェースを示します。

ネットワークの問題の記録

ルーティングデーモンについて誤動作の疑いがある場合は、routed デーモンを起動するときのすべてのパケット転送も含む、ルーティングデーモンの動作をログに記録することができます。

ネットワークの問題を記録する方法

  1. スーパーユーザーになります。

  2. コマンド行で次のコマンドを入力することにより、ルーティングデーモンの動作を記録するログファイルを作成します。


    # /usr/sbin/in.routed /var/logfilename
    

注意 - 注意 -

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


パケットの内容表示

snoop を使用すると、ネットワークパケットを取得して内容を表示できます。取得したパケットについては、そのまま表示することも、ファイルに保存することも可能です。snoop が中間ファイルに書き込む場合、トレースのビジー状態でパケットロスはほとんど発生しません。その後、snoop 自体はファイルの解釈に使用されます。詳細は、snoop(1M) のマニュアルページを参照してください。

snoop コマンドは必ず root(#) になって実行してください。プロミスキュアス (promiscuous) モードでデフォルトのインタフェースとやりとりするパケットを取得できます。最上位のプロトコルに関連するデータのみが一覧形式で表示されます。たとえば NFS パケットでは、NFS 情報のみが表示されます。RPC、UDP、IP、および Ethernet のフレーム情報は抑止されますが、verbose (詳細表示) オプションのいずれかを選択してあれば表示できます。

snoop が取得するファイルの形式は、RFC 1761 で説明しています。これを参照するには、Web ブラウザで http://ds.internic.net/rfc/rfc1761.txt にアクセスしてください。

snoop server client rpc rstatd は、クライアント/サーバー間のすべての RPC トラフィックを収集し、rstatd に対するフィルタをかけます。

パケットの内容を表示するための作業マップ

表 6-9 パケットの内容を表示するための作業マップ

作業 

説明 

参照先 

システムからすべてのパケットをチェックする 

netstat コマンドと snoop コマンドを使用し、その結果を解析する

「システムから全パケットを確認する方法」

snoop の結果をファイルに取り込む

snoop コマンドの -o オプションを使用する

「snoop の結果をファイルに取り込む方法」

サーバーとクライアントの間のパケットをチェックする 

snoop コマンドの結果をファイルに保存し、その結果を解析する

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

システムから全パケットを確認する方法

  1. スーパーユーザーになります。

  2. コマンド行で次のコマンドを入力し、システムに接続されているインタフェースを見つけます。


    # netstat -i
    

    通常、snoop では最初の非ループバックデバイス (le0) が使用されます。

  3. snoop と入力します。

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


    # snoop
    Using device /dev/le (promiscuous mode)
         maupiti -> atlantic-82  NFS C GETATTR FH=0343
     atlantic-82 -> maupiti      NFS R GETATTR OK
         maupiti -> atlantic-82  NFS C GETATTR FH=D360
     atlantic-82 -> maupiti      NFS R GETATTR OK
         maupiti -> atlantic-82  NFS C GETATTR FH=1A18
     atlantic-82 -> maupiti      NFS R GETATTR OK
         maupiti -> (broadcast)  ARP C Who is 120.146.82.36, npmpk17a-82 ?
  4. 結果を解釈します。

    上記の例では、クライアント maupiti からサーバー atlantic-82 への転送には NFS ファイルハンドル 0343 が使用され、atlantic-82 は OK と応答しています。who is 120.146.82.36? と問い合わせる ARP 要求が maupiti から伝送されるまで、会話は継続します。

    この例は、snoop の形式を説明しています。次の手順では、snoop にフィルタをかけてファイルにパケットを取り込みます。

    取り込んだファイルを解釈するには、RFC 1761 に記述された説明を使用します。これを参照するには、Web ブラウザで http://ds.internic.net/rfc/rfc1761.txt にアクセスします。

snoop の結果をファイルに取り込む方法

  1. スーパーユーザーになります。

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


    # snoop -o filename
    

    例:


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

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

    snoop 自体によってホストマシン上にネットワーク負荷がかかるので、結果に誤差が生じる場合があります。正確な状態を確認するには、第 3 のシステム (クライアントまたはサーバーに接続されているハブのいずれかを外したシステム) から snoop を実行してください (次の節を参照)。

  3. コマンド行で次のコマンドを入力し、ファイルを検査します。


    # snoop -i filename
    

    例:


    # snoop -i /tmp/cap
    1  0.00000 frmpk17b-082 -> 224.0.0.2    IP  D=224.0.0.2 S=129.146.82.1 LEN=32, ID=0
    2  0.56104        scout -> (broadcast)  ARP C Who is 129.146.82.63, grail ?
    3  0.16742  atlantic-82 -> (broadcast)  ARP C Who is 129.146.82.76, honeybea ?
    4  0.77247        scout -> (broadcast)  ARP C Who is 129.146.82.63, grail ?
    5  0.80532 frmpk17b-082 -> (broadcast)  ARP C Who is 129.146.82.92, holmes ?
    6  0.13462        scout -> (broadcast)  ARP C Who is 129.146.82.63, grail ?
    7  0.94003        scout -> (broadcast)  ARP C Who is 129.146.82.63, grail ?
    8  0.93992        scout -> (broadcast)  ARP C Who is 129.146.82.63, grail ?
    9  0.60887        towel -> (broadcast)  ARP C Who is 129.146.82.35, udmpk17b-82 ?
    10 0.86691  nimpk17a-82 -> 129.146.82.255 RIP R (1 destinations)

    ARP、IP、RIP その他の詳細な分析と推奨されるパラメータについては、特定のプロトコルのマニュアルを参照してください。RFC の確認には、Web を検索することをお奨めします。

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

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

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

  2. スーパーユーザーになります。

  3. コマンド行で snoop にオプションを指定して実行し、結果をファイルに保存します。

  4. 結果の検査と解釈を行います。

    snoop 取り込みファイルの詳細については、RFC 1761 を参照してください。これを参照するには、Web ブラウザで http://ds.internic.net/rfc/rfc1761.txt にアクセスします。

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

ルーティング情報の表示

traceroute ユーティリティは、IP パケットが特定のインターネットホストに至るまでのルートを追跡する際に使用します。traceroute ユーティリティは、IP プロトコルの ttl (time to live) フィールドを利用して、経路に沿った各ゲートウェイからの ICMP TIME_EXCEEDED 応答と、宛先ホストからの応答 PORT_UNREACHABLE (または、ECHO_REPLY) の受信を試みます。traceroute ユーティリティは、ttl を 1 にして探査の送信を開始し、探査が目的のホストに到達するか、最大数の中間ホストを通過するまで ttl を 1 ずつ増加します。

traceroute ユーティリティは、ルーティングの誤設定やルーティング経路の障害を判定する場合に特に役立ちます。特定のホストが到達不可能な場合には、traceroute ユーティリティ を使用して、パケットがどの経路をたどって目的のホストに到達し、どこで障害が起きる可能性があるかを調べることができます。

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

traceroute ユーティリティの実行方法

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


    % traceroute destination-hostname
    

traceroute ユーティリティの詳細については、traceroute(1M) のマニュアルページを参照してください。

例: traceroute ユーティリティ

以下の traceroute コマンドの例では、パケットがホスト istanbul から ホスト sanfrancisco までにたどる 7 つの経路と、パケットが各経路を通過する時間が表示されています。


istanbul% traceroute sanfrancisco
	traceroute: Warning: Multiple interfaces found; using 172.31.86.247 @ le0
	traceroute to sanfrancisco (172.29.64.39), 30 hops max, 40 byte packets
	 1  frbldg7c-86 (172.31.86.1)  1.516 ms  1.283 ms  1.362 ms
	 2  bldg1a-001 (172.31.1.211)  2.277 ms  1.773 ms  2.186 ms
	 3  bldg4-bldg1 (172.30.4.42)  1.978 ms  1.986 ms  13.996 ms
	 4  bldg6-bldg4 (172.30.4.49)  2.655 ms  3.042 ms  2.344 ms
	 5  ferbldg11a-001 (172.29.1.236)  2.636 ms  3.432 ms  3.830 ms
	 6  frbldg12b-153 (172.29.153.72)  3.452 ms  3.146 ms  2.962 ms
	 7  sanfrancisco (172.29.64.39)  3.430 ms  3.312 ms  3.451 ms