ネットワーク管理の段階では、ネットワークを設定します。ここで行う作業は、ネットワークの物理部分を形成するハードウェアの組み立てと、TCP/IP の構成です。この章では TCP/IP の構成方法と、ネットワークを構成した後で TCP/IP の障害追跡を行う方法について説明します。
TCP/IP ソフトウェアの構成を行う前に、表 6-1 に示す作業を完了しておく必要があります。
表 6-1 TCP/IP を構成する前に行う作業マップ
説明 |
参照先 |
---|---|
ネットワーク設計者の場合は、ネットワークトポロジを設計する | |
インターネットのアドレス指定機関からネットワーク番号を入手する | |
設計したトポロジに従ってネットワークハードウェアを組み立て、ハードウェアが動作することを確認する |
ハードウェアのマニュアルと 「ネットワークトポロジ」 |
ネットワークインタフェースとルーターが必要とする構成ソフトウェアがあれば、それを実行する | |
ネットワークに対する IP アドレス指定スキーマの計画を立てる。これには、必要に応じてサブネットアドレス指定も含まれる | |
ネットワークに含まれるすべてのマシンに、IP 番号とホスト名を割り当てる | |
ネットワークでどのネームサービス、つまり NIS、NIS+、DNS、またはローカルファイルのどれを使用するかを決定する | |
必要なら、ネットワークで使用するドメイン名を選択する | |
予定しているネットワーク上の少なくとも 1 台のマシンにオペレーティングシステムをインストールする |
ネットワーク管理者が行う主要な作業の 1 つに、ホストとルーター (必要な場合) で実行できるように TCP/IP を構成する作業があります。これらのマシンは、2 つの情報源から構成情報を入手するように設定できます。それは、ローカルマシン上のファイルと、ネットワーク内の他のマシンにあるファイルです。構成情報には次のものがあります。
マシンのホスト名
マシンの IP アドレス
マシンが所属するドメイン名
デフォルトルーター
マシンのネットワークで使用しているネットマスク (適用可能な場合)
TCP/IP 構成情報をローカルファイルから入手するマシンの状態を、ローカルファイルモードで稼動していると言います。TCP/IP 構成情報をリモートマシンから入手するマシンの状態を、ネットワーククライアントモードで稼動していると言います。
ローカルファイルモードで実行するマシンは、TCP/IP 構成ファイルをローカルに持っている必要があります。これらのファイルについては、「TCP/IP 構成ファイル」で説明します。このマシンが専用のディスクを持っていることが望ましいですが、不可欠というわけではありません。
ほとんどのサーバーはローカルファイルモードで実行します。主な必要条件は次のとおりです。
ネットワーク構成サーバー
NFS サーバー
NIS、NIS+、または DNS のサービスを提供するネームサーバー
メールサーバー
また、ルーターはローカルファイルモードで実行する必要があります。
印刷サービス専用として機能するマシンは、ローカルファイルモードで実行する必要はありません。個々のホストをローカルファイルモードで実行する方がよいかどうかは、ネットワークの規模によって異なります。
ネットワークがきわめて小さい場合は、個々のホストのファイルを管理する作業は比較的簡単です。しかし、数百のホストから成るネットワークの場合は、そのネットワークがいくつかの管理サブドメインに分割されていたとしても、この作業は困難なものとなります。したがって、規模の大きいネットワークの場合は、ローカルファイルモードを使用しても一般に効率は上がりません。ただし、ルーターとサーバーはそれぞれ自身で構成されるものなので、ローカルファイルモードで構成する必要があります。
ネットワーク構成サーバーは、ネットワーククライアントモードで構成されているホストに、TCP/IP 構成情報を提供するマシンです。この種のサーバーは、次の 3 つのブートプロトコルをサポートしています。
RARP - 逆アドレス解決プロトコル (RARP) は、既知の Ethernet アドレス (48 ビット) を IPv4 アドレス (32 ビット) にマッピングします。つまり、ARP と逆のことを行ないます。ネットワーク構成サーバーで RARP を実行すると、ネットワーククライアントモードで実行されているホストが、各自の IP アドレスと TCP/IP 構成ファイルをサーバーから入手できるようになります。RARP サービスは、in.rarpd デーモンを使用して使用可能にできます。詳細については、in.rarpd(1M) のマニュアルページを参照してください。
TFTP - 簡易ファイル転送プロトコル (TFTP) は、リモートマシン間でファイルを転送するアプリケーションです。in.tftpd デーモンが TFTP サービスを実施し、その結果、ネットワーク構成サーバーとそれぞれのネットワーククライアントとの間のファイル転送が可能になります。
bootparams - bootparams プロトコルは、ネットワークブートを行うクライアントが必要とする、ブート用パラメータを供給します。このサービスを実行するのは rpc.bootparamd デーモンです。
ネットワーク構成サーバーは、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-2 に示す作業を行ないます。
表 6-2 ネットワークにサブネットを追加するための作業マップ
説明 |
参照先 |
---|---|
1. 新しいサブネットトポロジについて決定する。これには、ルーターに関する考慮事項や、サブネット上でのホストの位置などが含まれる | |
2. すべてのサブネットアドレスとホストアドレスを割り当てる | |
3. 手動で TCP/IP を構成している場合は、/etc/inet/netmasks ファイルを修正する。そうでない場合は Solaris インストールプログラムを使用してネットマスクを修正する | |
4. 新しいホストアドレスを反映させるために、すべてのホスト上で /etc/inet/hosts ファイルおよび /etc/inet/ipnodes ファイルを変更する | |
5. すべてのマシンを再起動する |
オペレーティングシステムのソフトウェアをインストールするときに、同時にネットワークのソフトウェアもインストールされます。そのときに、いくつかの IP 構成パラメータを対応するファイルに格納して、ブート時に読み取れるようにしておく必要があります。
ここで必要な手順は、ネットワーク構成ファイルを作成または編集するということです。構成情報がどのようにマシンのカーネルに対して使用可能にされるかは、構成ファイルがローカルに格納されているか (ローカルファイルモード)、それともネットワーク構成サーバーから構成ファイルを入手するか (ネットワーククライアントモード) によって異なります。
ネットワーク構成時に指定するパラメータには、次のものがあります。
すべてのマシンの各ネットワークインタフェースの IP アドレス
ネットワーク上の各マシンのホスト名。ホスト名は、ローカルファイルまたはネームサービスデータベースに入力できる
マシンが設置されている、NIS、NIS+、または DNS のドメイン名 (該当する場合)
デフォルトのルーターアドレス。これを指定するのは、各ネットワークにルーターが 1 つしか接続していないような単純なネットワークトポロジの場合か、またはルーターが RDISC (Router Discovery Protocol) や RIP (Routing Information Protocol) などのルーティングプロトコルを実行しない場合だけである。(これらのプロトコルについての詳細は、「ルーティングプロトコル」を参照してください)
サブネットマスク (サブネットを持つネットワークの場合に限り必要)
ここでは、ローカル構成ファイルを作成および編集する手順を説明しています。ネームサービスデータベースの処理については、『Solaris ネーミングの管理』を参照してください。
作業 |
説明 |
参照先 |
---|---|---|
ホストをローカルファイルモード用に構成する |
nodename、hostname、hosts、 defaultdomain、 defaultrouter、および netmasks ファイルを編集する | |
ネットワーク構成サーバーをセットアップする |
in.tftp daemon をオンにし、intetd.conf、hosts、 ethers、および bootparams ファイルを編集する | |
ホストをネットワーククライアントモード用に構成する |
hostname ファイルを作成し、hosts ファイルを編集する。また、nodename ファイルと defaultdomain ファイルがある場合はこれらを削除する | |
ネットワーククライアントに対してルーターを指定する |
defaultrouter ファイルと hosts ファイルを編集する |
ローカルファイルモードで動作するマシン上の TCP/IP を構成するための手順は、次のとおりです
スーパーユーザーになり、/etc ディレクトリに移動します。
マシンのホスト名を /etc/nodename ファイルに入力します。
たとえば、ホストの名前が tenere であるとすれば、このファイルに tenere と入力します。
各ネットワークインタフェースについて、/etc/hostname.interface という名前のファイルを作成します
(一次ネットワークインタフェースについては、Solaris インストールプログラムが自動的にこのファイルを作成します)。「/etc/hostname.interface ファイル」を参照してください。IPv6 を使用している場合は、「IPv6 ネットワークインタフェース構成ファイル」を参照してください。
/etc/hostname.interface ファイルに、インタフェース IP アドレスかインタフェース名を入力します。
たとえば、hostname.ie1 という名前のファイルを作成し、ホストのインタフェースの IP アドレスかまたはホスト名を入力します。
/etc/inet/hosts ファイルを編集して、以下の内容を追加します。
ローカルマシンに増設したネットワークインタフェースに割り当てた IP アドレスと、各インタフェースのホスト名
一次ネットワークインタフェースとループバックアドレスについてのエントリは、すでに Solaris インストールプログラムにより作成されています。
/usr ファイルシステムを NFS マウントする場合は、ファイルサーバーの IP アドレス
Solaris インストールプログラムは、ローカルマシン用のデフォルトの /etc/inet/host を作成します。このファイルが存在していない場合は、「hosts データベース」の説明に従って作成してください。また、IPv6 を使用している場合は、「/etc/inet/ipnodes ファイル」を参照してください。
完全指定のドメイン名を /etc/defaultdomain ファイルに入力します。
たとえば、ホスト tenere がドメイン deserts.worldwide.com に所属しているとします。その場合は、/etc/defaultdomain に deserts.worldwide.com を入力します。詳細は、 「/etc/defaultdomain ファイル」を参照してください。
ルーターの名前を /etc/defaultrouter に入力します。
詳細は、「/etc/defaultrouter ファイル」を参照してください。
デフォルトのルーターの名前とその IP アドレスを /etc/inet/hosts に入力します。
上記以外にも、使用できるルーティングオプションがいくつかあります。 「ネットワーククライアントモードの場合のホストの構成方法」中の、ルーティングオプションについての説明を参照してください。これらのオプションは、ローカルファイルモード構成にも適用できます。
ネットワークをサブネット化する場合は、ネットワーク番号とネットマスクを /etc/inet/netmasks ファイルに入力します。
NIS または NIS+ サーバーを設定してある場合は、サーバーとクライアントが同じネットワーク上にあれば、サーバー上の該当のデータベースにネットマスク情報を入力できます。
ディレクトリ /tftpboot を作成することにより、in.tftpd デーモンが動作するようにします。
# mkdir /tftpboot |
これで、マシンは、TFTP、bootparams、RARP のサーバーに構成されます。
手順 2 で作成したディレクトリに対するシンボリックリンクを作成します。
# ln -s /tftpboot/. /tftpboot/tftpboot |
inetd.conf ファイルにある tftp の行を有効にします。
/etc/inetd.conf のエントリが次のようになっていることを確認してください。
tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot |
これによって、/tftpboot に格納されたファイル以外のファイルを inettftpd() で検索できなくなります。
hosts データベースを編集して、ネットワーク上のすべてのクライアントのホスト名と IP アドレスを追加します。
ethers データベースを編集して、ネットワーククライアントモードで実行するネットワーク上のすべてのホストについてエントリを作成します。
bootparams データベースを編集します。
「bootparams データベース」を参照してください。ワイルドカードエントリを作成するか、または、ネットワーククライアントモードで実行するすべてのホストについてエントリを作成します。
サーバーをリブートします。
インストールサーバー、ブートサーバーを設定する方法については、『Solaris 8 のインストール (上級編)』を参照してください。
ネットワーククライアントは、各自の構成情報をネットワーク構成サーバーから入手します。したがって、あるホストをネットワーククライアントとして構成するときは、このネットワーク用として、ネットワーク構成サーバーが少なくとも 1 つは設定されていることを確認してください。
ネットワーククライアントモードで構成する必要のある各ホストについて、次のことを行います。
スーパーユーザーになります。
ディレクトリを調べて、/etc/nodename ファイルがあるかどうかを確認します。ある場合は、このファイルを削除してください。
/etc/nodename を削除すると、システムは hostconfig プログラムを使用して、ネットワーク構成サーバーから、ホスト名、ドメイン名、ルーターアドレスを入手するようになります。「ネットワーク構成手順」を参照してください。
/etc/hostname.interface ファイルが存在していない場合は、それを作成します。
そのファイルが空であることを確認してください。/etc/hostname.interface ファイルが空であれば、システムはネットワーク構成サーバーから IP アドレスを入手します。IPv6 を使用している場合は、「IPv6 ネットワークインタフェース構成ファイル」を参照してください。
/etc/inet/hosts ファイルに、ループバックネットワークインタフェースのホスト名と IP アドレス以外の内容が入っていないことを確認します。
(「ループバックアドレス」を参照してください)。このファイルには、ローカルマシン (一次ネットワークインタフェース) の IP アドレスとホスト名が入っていてはいけません。また、IPv6 を使用している場合は、「/etc/inet/ipnodes ファイル」を参照してください。
/etc/defaultdomain ファイルがあるかどうかを調べます。ある場合は、このファイルを削除します。
hostconfig プログラムは、自動的にドメイン名を設定します。hostconfig プログラムが設定したドメイン名を上書きしたいときは、/etc/defaultdomain に代わりのドメイン名を入力します。
クライアントの /etc/nsswitch.conf の中の検索パスが、ネットワークのネームサービスの要件を満たしていることを確認します。
ネットワーク上にルーターが 1 つしかなく、ネットワーク構成サーバーが自動的にそのルーターの名前を指定するようにしたい場合は、ネットワーククライアントが /etc/defaultrouter ファイルを持っていないことを確認します。
次の手順に従って、ネットワーク構成サーバーが設定したデフォルトのルーターの名前を上書きします。
ネットワークに複数のルーターがある場合は、ネットワーククライアント上に /etc/defaultrouter を作成し、空のままにしておきます。
/etc/defaultrouter を作成し、それを空のままにしておくと、2 つの動的ルーティングプロトコル、つまり、ICMP RDISC (Router Discovery Protocol) か RIP (Routing Information Protocol) のどちらか一方が実行されます。システムは、まず in.rdisc プログラムを実行します。このプログラムは、ルーター検出プロトコルを実行しているルーターを捜します。該当するルーターが見つかった場合は、in.rdisc はそのまま実行を続け、RDISC プロトコルを実行するルーターを追跡し続けます。
RDISC プロトコルに応答しているルーターがないと判断した場合は、システムは RIP を使用し、in.routed デーモンを実行してルーターを追跡します。
telnet、ftp、rlogin などのサービスは、inetd デーモンによって開始されます。このデーモンは、ブート時に自動的に実行されます。ネームサービスの順序を nsswitch.conf の中で指定したように、TCP/IP のサービスは、/etc/inetd.conf ファイルの中で inetd -t フラグを使用して構成できます。
たとえば、inetd を使用して、着信したすべての TCP 接続 (リモートログインと telnet) の IP アドレスをログに記録できます。ログ記録を作成するには、次の手順を実行します。
スーパーユーザーになります。
inetd デーモンを強制終了します。
次のコマンドを入力して、ログ記録をオンにします。
# /usr/sbin/inetd -t -s |
スイッチ -t を指定することで、inetd は TCP 接続トレースを開始します。
inetd(1M) と inetd.conf(4) のマニュアルページを参照してください。
ネームサービスについての詳細は、『Solaris ネーミングの管理』と『Solaris ネーミングの設定と構成』を参照してください。
TCP/IP がルーターに求める第 1 の必要条件は、「ネットワークインタフェース」 で説明したように、マシンが少なくとも 2 つのネットワークインタフェースを持っていなければならないということです。ネットワークインタフェースのどれか 1 つが使用可能な状態にあれば、ルーターは自動的に RDISC プロトコルと RIP プロトコルで「情報交換」します。これらのプロトコルは、絶えずネットワーク上でのルーターの状態を追跡し、ネットワーク上のホストにルーターを通知します。
ルーターを物理的にネットワークにインストール後、「ローカルファイルモードの場合のホストの構成方法」 の説明に従って、ルーターをローカルファイルモードで動作ように構成します。これで、ネットワーク構成サーバーがダウンしても、ルーターが確実にブートされるようになります。ホストと違って、ルーターには構成を要するインタフェースが 2 つあるということを忘れないでください。
作業 |
説明 |
参照先 |
---|---|---|
マシンをルーターとして構成する |
hostname および hosts ファイルを作成し、アドレスを追加する | |
ネットワーククライアントであるホスト上で静的ルーティングを選択する |
defaultrouter ファイルにエントリを追加する | |
ネットワーククライアントであるホスト上で動的ルーティングを選択する |
defaultrouter ファイルのエントリを編集する | |
マシンを強制的にルーターにする |
gateways ファイルを作成する |
ルーターは、複数のネットワーク間のインタフェースを提供するものなので、ルーターの各ネットワークインタフェースカードに、それぞれ一意な名前と IP アドレスを割り当てる必要があります。これで、各ルーターは、その一次ネットワークインタフェースのホスト名と IP アドレスに加えて、増設した各ネットワークインタフェースについて少なくとも 1 つずつ、一意な名前と IP アドレスを持つことになります。
ルーターとして構成するマシン上でスーパーユーザーになります。
インストールされているネットワークインタフェースごとに、/etc/hostname.interface ファイルを作成します。
例えば、hostname.ie0 と hostname.ie1 を作成します。詳細については、「/etc/hostname.interface ファイル」を参照してください。IPv6 を使用している場合は、「IPv6 ネットワークインタフェース構成ファイル」を参照してください。
各ファイルに、そのインタフェースに対して選択したホスト名を入力します。
たとえば、hostname.ie0 ファイルに timbuktu という名前を入力し、hostname.ie1 ファイルに timbuktu-201という名前を入力します。どちらのインタフェースも同じマシンに置かれることになります。
各インタフェースのホスト名と 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 ファイル」を参照してください。
サブネット化したネットワークにルーターを接続する場合は、/etc/inet/netmasks を編集して、ローカルネットワーク番号 (たとえば 129.9.0.0) と、関連のネットマスク番号 (たとえば 255.255.255.0) を入力します。
起動スクリプトは、マシン上でルーティングプロトコル (RIP または RDISC) を起動するか、静的ルーティングを使用するかを決定します。
「/etc/defaultrouter ファイル」を参照してください。唯一の静的なデフォルトルートがルーティングテーブルに組み込まれます。この条件下では、ホストは動的ルーティングプロトコル (RIP や RDISC など) を実行しません。
ホスト上でスーパーユーザーになります。
/etc/defaultrouter ファイルが空であることを確認します。
このファイルを空にしておくと、これによりネットワーククライアントに強制的に動的ルーティングプロトコルを選択させることができます。
使用される動的ルーティングのタイプは以下の判定条件に従って選択されます。
/usr/sbin/in.rdisc プログラムが存在する場合は、起動スクリプトは in.rdisc を起動する。すると、ネットワーク上で RDISC を実行しているすべてのルーターが、ホストからのすべての RDISC 照会に応答するようになる。少なくとも 1 つのルーターが応答すれば、ホストはルーティングプロトコルとして RDISC を選択する。
ネットワークルーターが RDISC を実行していない場合、または RDISC 照会に対する応答が失敗した場合は、ホストでの in.rdisc は終了する。ホストは in.routed を起動し、その結果 RIP が実行される。
/etc/hostname.interface ファイルを 1 つだけ持つマシン (デフォルトではホスト) を、強制的にルーターにすることができます。
これは、PPP リンクを構成することに決めた場合は特に重要です。詳細は、「ルーティングに関する考慮事項」を参照してください。
デフォルトでは、TCP/IP は、複数のネットワークインタフェースを持つマシンをすべてルーターとみなします。しかし、ルーターをマルチホームホストに変更することもできます。マルチホームホストとは、複数のネットワークインタフェースを持っているけれども、ルーティングプロトコルの実行も IP パケットの転送もしないマシンのことです。一般に、次のような種類のマシンはマルチホームホストとして構成します。
NFS サーバー、特に大規模なデータセンターは、複数のネットワークに接続することによって、多数のユーザー間でファイルを共有できるようになります。この種のサーバーはルーティングテーブルを備えている必要はありません。
データベースサーバーは、NFS サーバーの場合と同じ目的で複数のネットワークインタフェースを持つことにより、多数のユーザーに資源を提供できます。
ファイアウォールゲートウェイは、企業のネットワークとインターネットなどの公共ネットワークとの間の接続を提供するマシンです。管理者は、セキュリティの手段としてファイアウォールを設定します。ファイアウォールとして構成されたホストは、自己に接続されているネットワーク相互間でのパケットの受け渡しを行いません。その一方で、許可されたユーザーに対しては、通常どおり ftp や rlogin などの標準 TCP/IP サービスを提供します。
TCP/IP は、複数のネットワークインタフェースを持つマシンのすべてをルーターとみなすので、それをマルチホームホストに変えるには、いくつかの操作が必要になります。
マルチホームホストにしたいマシン上でスーパーユーザーになります。
マシンにインストールされている追加の各ネットワークについて、/etc/hostname.interface ファイルを 1 つずつ作成します。
次のように入力します。
% touch /etc/notrouter |
これで、/etc/notrouter という名前の、空のファイルが作成されます。
マシンをリブートします。
マシンをリブートすると、起動スクリプトは /etc/notrouter ファイルの有無を確認します。このファイルが存在する場合は、起動スクリプトは、in.routed -s も in.rdisc -r も実行せず、また、ifconfig により "up" として構成されているインタフェースでは、いっさい IP の転送を行いません。これは、/etc/gateway ファイルが存在しているかどうかに関係なく行われます。これで、マシンはマルチホームホストになります。
省スペースモードでは、デフォルトのルートだけを含むテーブルがホストに提供されます。デフォルトでは、省スペースモードをオフにした状態で、ホストで in.routed が実行されます。
フルルーティングテーブル (これは、構成に誤りのあるルーターを排除するための保護を強化します) をホストに提供する必要がない場合は、省スペースモードをオンにします。
ホスト上でスーパーユーザーになります。
/etc/jc2.d/S69inet 起動スクリプトを編集します。
/usr/sbin/in.routed -q |
上記の行を次のように変更します。
/usr/sbin/in.routed -q -S |
ルーターの信頼性の都合により、ホストに RDISC を使用させたくない場合があります。ホストにおいて、RDISC ではなく RIP の自動選択が確実に動作する場合は、ネットワーク内のルーター (特に RDISC を実行するもの) でも確実に動作しなければなりません。
RDISC を実行するルーターが他にないときに、Solaris ルーターを 1 つインストールすると、デフォルトの状態で、そのルーターに接続されるすべてのホストがそのルーターだけに依存することになります。そのネットワーク上のホストが他のルーターも使用できるようにするには、新しいルーターで RDISC をオフにします。
作業 |
説明 |
参照先 |
---|---|---|
ホスト上で ICMP ルーター発見をオフにする |
ホストの in.rdisc ファイルの名前を変更する | |
ルーター上で ICMP ルーター発見をオフにする |
ルーターの in.rdisc ファイルの名前を変更する |
ネットワーク上での問題を示す最初の徴候は、1 つまたはいくつかのホストでの通信の消滅です。あるホストを初めてネットワークに追加したときに、そのホストがまったく動作しない場合は、構成ファイルのどれか、またはネットワークインタフェースに問題があることが考えられます。1 つのホストに突然問題が生じた場合は、ネットワークインタフェースに原因があると考えられます。ネットワーク上のホスト相互間の通信はできるが、他のネットワークとの通信ができないという場合は、ルーターに問題があるか、または他のネットワークに問題があることが考えられます。
ifconfig プログラムを使用すればネットワークインタフェースに関する情報を入手でき、netstat を使用すればルーティングテーブルとプロトコル統計を表示できます。サードパーティのネットワーク診断プログラムから、さまざまな障害追跡ユーティリティが提供されています。詳細は、サードパーティのマニュアルを参照してください。
比較的明らかになりにくいのは、ネットワーク上での性能低下の原因です。たとえば、ping のようなツールを使用することで、ホストでのパケットの消失など、問題の原因を突き止めることができます。
ネットワークに障害が生じた場合は、以下のような処置によって、ソフトウェア関連の問題を診断し修正することができます。
hosts データベース (IPv6 を使用している場合は ipnodes データベースも) を検査して、個々のエントリが適正で最新であるかどうかを確認します。
RARP を実行している場合は、 ethers データベース内の Ethernet アドレスを検査して、個々のエントリが適正で最新であるかどうかを確認します。
telnet によりローカルホストに接続してみます。
ネットワークデーモン 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 コマンドは、特定のホストとの IP 接続が存在しているかどうかを確認するために使用します。基本構文は次のとおりです。
/usr/sbin/ping host [timeout] |
host は問題のマシンのホスト名を示します。オプションの timeout 引数は、ping がそのマシンに到達しようと試みる秒数を示し、デフォルトは 20 秒です。詳しい構文とオプションについては、ping(1M) のマニュアルページを参照してください。
ping を実行すると、ICMP プロトコルは、指定されたホストにデータグラムを送って、応答を求めます (ICMP は、TCP/IP ネットワーク上のエラー処理を担当するプロトコルです。詳細は、「ICMP プロトコル」を参照してください)。
作業 |
説明 |
参照先 |
---|---|---|
ホストが動作しているか確認する |
ホスト名に対して ping を実行する | |
ホストでパケットが失われていないか確認する |
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(1M) のマニュアルページを参照してください。ifconfig の構文は次のとおりです。
ifconfig interface-name [protocol_family] |
作業 |
説明 |
参照先 |
---|---|---|
特定のインタフェースに関する情報を入手する |
ifconfig コマンドを使用する | |
ネットワーク上のすべてのインタフェースに関する情報を入手する |
ifconfig コマンドの -a オプションを使用する |
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 オプションがあります。これを使用すると、ネットワーク上のすべてのインタフェースに関する情報が提供されます。
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 コマンドは、ネットワーク状態とプロトコル統計を表示します。TCP と UDP のエンドポイントの状態 (テーブル形式)、ルーティングテーブルの情報、インタフェースの情報を表示できます。
netstat は、選択したコマンド行オプションに応じて、さまざまな種類のデータを表示します。この表示は、特にシステム管理に役立ちます。このコマンドの構文は次のとおりです。
netstat [-m] [-n] [-s] [-i | -r] [-f address_family] |
ネットワーク状態の判別のために最もよく使用されるオプションは、 s、r、i です。オプションの説明については、netstat(1M) のマニュアルページを参照してください。
作業 |
説明 |
参照先 |
---|---|---|
プロトコル別に統計情報を表示する |
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 デーモンを起動するときのすべてのパケット転送も含む、ルーティングデーモンの動作をログに記録することができます。
スーパーユーザーになります。
コマンド行で次のコマンドを入力することにより、ルーティングデーモンの動作を記録するログファイルを作成します。
# /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 に対するフィルタをかけます。
作業 |
説明 |
参照先 |
---|---|---|
システムからすべてのパケットをチェックする |
netstat コマンドと snoop コマンドを使用し、その結果を解析する | |
snoop の結果をファイルに取り込む |
snoop コマンドの -o オプションを使用する | |
サーバーとクライアントの間のパケットをチェックする |
snoop コマンドの結果をファイルに保存し、その結果を解析する |
スーパーユーザーになります。
コマンド行で次のコマンドを入力し、システムに接続されているインタフェースを見つけます。
# netstat -i |
通常、snoop では最初の非ループバックデバイス (le0) が使用されます。
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 ? |
結果を解釈します。
上記の例では、クライアント 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 -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 を実行してください (次の節を参照)。
コマンド行で次のコマンドを入力し、ファイルを検査します。
# 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 を検索することをお奨めします。
snoop を実行するシステムから、クライアントまたはサーバーに接続されたハブのいずれかを外します。
この第 3 のシステム (snoop システム) はすべてのトラフィックを監視するので、snoop のトレースには実際のネットワーク上の状態が反映されます。
スーパーユーザーになります。
コマンド行で snoop にオプションを指定して実行し、結果をファイルに保存します。
結果の検査と解釈を行います。
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 destination-hostname |
traceroute ユーティリティの詳細については、traceroute(1M) のマニュアルページを参照してください。
以下の 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 |