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

第 2 章 ネットワークサービスの概要

この章では、本リリースのネットワークサービスにおける変更事項を紹介し、さらに、ネットワーク管理者の役割についても言及します。この章の内容は、新たにネットワーク管理者になった方にとっては、ネットワーク管理者が行うべき作業の概略を理解するのに役立ちます。またこの章では、本書を読み進める上で知っていなければならないネットワークの基本概念についても説明します。すでに経験を積んでいるネットワーク管理者の方は、最初の節を読んで内容を確認すれば、以降の節は飛ばしてもかまいません。この章で説明する各トピックは次のとおりです。

Solaris 8 リリースの新機能

このリリースに含まれる新しい機能を表 2-1 に示します。

表 2-1 Solaris 8 リリースの新機能

テクノロジー 

説明 

参照先 

DHCP 

ダイナミックホスト構成プロトコル (DHCP) を使用すると、システム管理者が事前に設定を行わなくても、ホストは IP アドレスとその他のシステム設定情報を取得できる。Solaris 8 リリースでは、DHCP サーバーとデータベースを設定、管理するための JavaTM ベースのグラフィカルインタフェースが追加されている第 8 章「DHCP の概要」

IPsec 

IP セキュリティアーキテクチャ (IPSec) は、IP データグラムの保護機能を提供する。保護機能には、機密性、強力なデータ完全性、部分シーケンス整全性 (繰り返し攻撃に対する保護)、データの認証がある。IPSec は IP プロセシング中に実行され、インターネットアプリケーションとは独立して適用できる 

第 18 章「IPsec の概要」

IPv6 

IPv6 は、インターネットプロトコル (IP) の新しいバージョンで、現行バージョンの IPv4 の機能を大幅に拡張している。規定されている移行メカニズムを使用することにより、現在の運用に混乱を生じさせることなく IPv6 ネットワークを展開できる。さらに、IPv6 は新しいインターネット機能を提供するプラットフォームとしても機能する 

第 14 章「IPv6 の概要」

LLC2 

Class II Logical Link Control (論理リンク制御) (llc2) ドライバは、サポートされている通信アダプタのいずれかによって制御される物理 LAN ネットワークと、Solaris オペレーティング環境下で実行されるネットワークソフトウェア (NetBIOS、SNA、OSI など) とのインタフェースをとる 

「新バージョンの Logical Link Control ドライバ」

NFSTM ロギング

 NFS ロギングにより、NFS サーバーにトランザクションログを記録する機能が追加される「NFS サーバーログ」

Sendmail 

Solaris メールサービスは、sendmail バージョン 8.9.3 に基づいているsendmail の新しい機能」

NCA 

 Solaris Network Cache and Accelerator により、Web サーバーの性能が向上している「Solaris Network Cache and Accelerator (NCA)」

新バージョンの Logical Link Control ドライバ

Class II Logical Link Control (論理リンク制御) (llc2)ドライバ は、サポートされている通信アダプタのいずれかによって制御される物理 LAN ネットワークと、Solaris オペレーティング環境下で実行されるネットワークソフトウェア (NetBIOS、SNA、OSI など) とのインタフェースをとります。ネットワークソフトウェアに対するドライバとしての役割を果たす llc2 ドライバは、カーネルに常駐し、標準の UNIX のストリーム関数を介してアクセスされます。

このバージョンの llc2 ドライバは、適切な Solaris MAC レイヤードライバを介してアクセスした場合、Ethernet、トークンリング、FDDI アダプタ用のコネクションレス型とコネクション型の両方の llc2 オペレーションをサポートします。llc2 ドライバへのデータリンクプロバイダインタフェース (DLPI) を使用すると、複数の異なるプロトコルスタック (NetBIOS や SNA) が、1 つまたは複数のローカルエリアネットワーク上で同時に動作可能になります。

デフォルトで llc2 ドライバを起動するには、/etc/llc2/llc2_start.default ファイルの名前を /etc/llc2/llc2_start に変更します。これにより、/etc/init.d/llc2/rc2.d/S40llc2 スクリプトが、各 ppa インタフェース用の構成ファイルを /etc/llc2/default/llc2.* 内に構築し、各インタフェース上で llc2 が起動できるようになります。構成ファイルの動作確認をするには、手動で /usr/lib/llc2/llc2_autoconfig を実行します。

llc2 ドライバについての詳細は、IEEE 規格 802.2 および llc2(7) のマニュアルページを参照してください。

llc2 ファイルには、基本となる MAC レイヤードライバへの適切なリンクを確立するために、LLC2 で必要となる情報と、そのリンク用の LLC (Logical Link Control) Class II ステーションコンポーネントストラクチャを構築するためのパラメータ情報が格納されています。llc2 構成ファイルについての詳細は、llc2(4) のマニュアルページを参照してください。

llc2_autoconfig ユーティリティは、LLC2 構成ファイル (/etc/llc2/default/llc2.*) を生成するために使用されます。/etc/llc2_default/ に構成ファイルが存在しない場合、このユーティリティは、システム内の使用可能なインタフェースをすべて検出し、インタフェースのためのデフォルトの構成ファイルを生成します。

/etc/llc2_default/ に構成ファイルが存在する場合、llc2_autoconfig ユーティリティは、ファイル内に定義されているインタフェースが今も存在するかどうかをチェックします。インタフェースがシステム内にない場合、ユーティリティは、ファイルの llc2_on を 0 に設定します。その後で、システム内に新しいインタフェースが存在するかどうかチェックします。新しいインタフェースがあれば、そのための構成ファイルを生成します。llc2_autoconfig ユーティリティについての詳細は、llc2_autoconfig(1) のマニュアルページを参照してください。

llc2_config ユーティリティは、LLC2 サブシステムを起動または終了したり、LLC2 インタフェースパラメータを設定するために使用されます。llc2_config ユーティリティについての詳細は、llc2_config(1) のマニュアルページを参照してください。

ドライバ、アダプタ、ネットワークをテストするには、llc2_loop ループバック診断コマンドを使用します。llc2_loopコマンドについての詳細は、llc2_loop(1M) のマニュアルページを参照してください。

llc2_stats コマンドを使用すると、LLC2 ドライバのホストベース、Class 2 Logical Link Control コンポーネントからの統計情報を取り出すことができます。統計情報は、ステーション、サービスアクセスポイント (SAP)、接続コンポーネントについて保持されています。llc2_stats コマンドについての詳細は、llc2_stats(1) のマニュアルページを参照してください。

Solaris Network Cache and Accelerator (NCA)

Solaris Network Cache and Accelerator (NCA) は、HTTP 要求時にアクセスされた Web ページのカーネル内部キャッシュを維持することによって、Web サーバーの性能を向上させます。NCA は、自身で要求を処理するか、あるいは処理のために Web サーバーに要求を渡すことにより、カーネル内で HTTP を完璧にサポートします。

この製品は、専用の Web サーバー上で実行するようにします。NCA を実行しているサーバー上で別の大規模なプロセスを実行すると、障害が生じる可能性があります。

NCA 機能には次の 2 つのコンポーネントが必要です。

ncakmod は、Solaris door ライブラリ (door_create(3DOOR) を参照) を介して、Web サーバーである httpd と通信します。Solaris door ライブラリは、同一ホスト上のプロセス間、および、カーネルとユーザープロセスの間で、高速かつ信頼性の高い同期式 RPC メカニズムを提供します。

ncakmodhttpd の間の通信に使用されるプロトコルは、Solaris door のリモートプロシージャコール (RPC) インタフェースを使用した、同期式の要求-応答型プロトコルです。door の RPC は、NCA のカーネル内で呼ばれ、同期がとられます。データは双方向に転送されます。つまり、各 door の RPC 内で、NCA から http サーバーと、http サーバーから NCA の両方向に転送されます。ncakmod は HTTP 要求を httpd に渡し、httpd は door インタフェースを介した要求に応答を返します。これによって、acceptxsendfile を使用した場合と同様の機能が提供されます。

NCA ロギングは、HTTP 要求データをバイナリ形式でディスクに書き込みます。NCA 機能では、CLF (共通ログ形式) ログファイル形式も使用できます。

表 2-2 Solaris NCA の管理作業

作業 

説明 

参照先 

NCA を有効にする 

 Web サーバー上の Web ページのカーネル内部キャッシュを有効にする手順を実行する「NCA を有効にする方法」

NCAを無効にする 

Web サーバー上の Web ページのカーネル内部キャッシュを無効にする手順を実行する 

「NCA を無効にする方法」

NCA ロギングの変更 

NCA ロギングプロセスを有効または無効にする手順を実行する 

「NCA ロギングを有効または無効にする方法」

NCA を有効にする方法

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

  2. インタフェースを登録します。

    /etc/nca/nca.if ファイルに各物理インタフェースの名前を登録します (詳細は、nca.if(4) のマニュアルページを参照)。


    # cat /etc/nca/nca.if
    hme0
    hme1

    インタフェースごとに、対応する hostname.interface-name ファイルと、hostname.interface-name の内容と一致するエントリが /etc/hosts ファイル内になければなりません。すべてのインタフェースで NCA 機能を使用可能にするには、nca.if ファイル内でアスタリスク (*) を指定します。

  3. ncakmod カーネルモジュールを有効にします。

    /etc/nca/ncakmod.conf 内の status エントリを enabled に変更します。


    # cat /etc/nca/ncakmod.conf
    #
    # Copyright (c) 1998-1999 by Sun Microsystems, Inc.
    # All rights reserved.
    #
    #ident  "@(#)ncakmod.conf       1.1     99/08/06 SMI"
    #
    # NCA Kernel Module Configuration File
    #
    status=enabled
    httpd_door_path=/var/run/nca_httpd_1.door

    詳細は、ncakmod.conf(4) のマニュアルページを参照してください。

  4. NCA ロギングを有効にします。

    /etc/nca/ncalogd.conf 内の status エントリを enabled に変更します。


    # cat /etc/nca/ncalogd.conf
    #
    # Copyright (c) 1998-1999 by Sun Microsystems, Inc.
    # All rights reserved.
    #
    #ident  "@(#)ncalogd.conf       1.1     99/08/06 SMI"
    #
    # NCA Log Daemon Configuration File
    #
    status=enabled
    logd_path_name="/var/nca/log"
    logd_file_size=1000000

    logd_path_name エントリに示されているパスを変更すると、ログファイルの格納場所を変更できます。詳細は、ncalogd.conf(4) のマニュアルページを参照してください。

  5. IA の場合のみ: 仮想メモリーサイズを増やします。

    eeprom コマンドを使用して、システムの kernelbase を設定します。


    # eeprom kernelbase=0x900000000
    # eeprom kernelbase
    kernelbase=0x900000000

    2 行目の eeprom コマンドを実行すると、パラメータが設定済みかどうかを確認できます。


    注 -

    NCA を有効にすると、ユーザープロセスで使用可能な仮想メモリ容量が 3G バイト未満に削減されます。このため、システムは ABI に準拠しなくなります。この場合、システムの起動時に、システムがABI に準拠していないことを知らせる警告メッセージが表示されます。ほとんどのプログラムは、実際には 3G バイトの仮想アドレス空間を必要としません。3G バイトの仮想アドレス空間を必要とするプログラムは、NCA が有効に設定されていないシステムで実行する必要があります。


  6. サーバーを再起動します。

NCA を無効にする方法

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

  2. ncakmod カーネルモジュールを無効にします。

    /etc/nca/ncakmod.conf 内の status エントリを disabled に変更します。


    # cat /etc/nca/ncakmod.conf
    #
    # Copyright (c) 1998-1999 by Sun Microsystems, Inc.
    # All rights reserved.
    #
    #ident  "@(#)ncakmod.conf       1.1     99/08/06 SMI"
    #
    # NCA Kernel Module Configuration File
    #
    status=disabled
    httpd_door_path=/var/run/nca_httpd_1.door

    詳細は、ncakmod.conf(4) のマニュアルページを参照してください。

  3. NCA ロギングを無効にします。

    /etc/nca/ncalogd.conf 内の status エントリを disabled に変更します。


    # cat /etc/nca/ncalogd.conf
    #
    # Copyright (c) 1998-1999 by Sun Microsystems, Inc.
    # All rights reserved.
    #
    #ident  "@(#)ncalogd.conf       1.1     99/08/06 SMI"
    #
    # NCA Log Daemon Configuration File
    #
    status=disabled
    logd_path_name="/var/nca/log"
    logd_file_size=1000000

    詳細は、ncaklogd.conf(4) のマニュアルページを参照してください。

  4. サーバーを再起動します

NCA ロギングを有効または無効にする方法

NCA が有効になっていると、必要に応じて NCA のログ処理のオンまたはオフを切り替えることができます (詳細は、「NCA を有効にする方法」を参照)。

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

  2. NCA のログ処理のオンとオフを切り替えます。

    ロギングを恒久的に無効にする場合は、/etc/nca/ncalogd.conf 内の statusdisabled に変更し、システムを再起動する必要があります。詳細は、ncalogd.cof(4) のマニュアルページを参照してください。

    1. ロギングを停止するには、次のコマンドを入力します。


      # /etc/init.d/ncalogd stop
      
    2. ロギングを開始するには、次のコマンドを入力します。


      # /etc/init.d/ncalogd start
      

NCA ファイル

NCA 機能をサポートするにはいくつかのファイルが必要です。ほとんどのファイルは ASCII 形式ですが、バイナリ形式のファイルもあります。表 2-3 に、必要なファイルを一覧します。

表 2-3 NCA ファイル

ファイル名 

機能 

/etc/hostname.*

サーバー上に構成されるすべての物理インタフェースの一覧が記述されている 

/etc/hosts

サーバーに割り当てられるすべてのホスト名の一覧が記述されている。NCA が機能するには、このファイルの各種エントリが、/etc/hostname.* ファイル内のエントリと一致していなければならない

/etc/init.d/ncalogd

サーバーの起動時に NCA 起動スクリプトが実行される 

/etc/nca/nca.if

NCA が実行されるインタフェースの一覧が記述されている (nca.if(4) のマニュアルページを参照)

/etc/nca/ncakmod.conf

NCA 用の構成パラメータの一覧が記述されている (ncakmod.conf(4) のマニュアルページを参照)

/etc/nca/ncalogd.conf

NCA ロギング用の構成パラメータの一覧が記述されている (ncalogd.conf(4) のマニュアルページを参照)

/usr/bin/ncab2clf

ログファイル内のデータを共通ログファイル形式 (CLF) に変換するためのコマンド (ncab2clf(1) のマニュアルページを参照)

/var/nca/log

ログファイルデータを保持します。ファイルはバイナリ形式なので、編集しないようにする 

Perl5

汎用プログラミング言語である、Practical Extraction and Report Language (Perl) 5.005_03 は、一般にフリーソフトウェアとして入手可能なツールですが、Solaris 8 リリースには付属しています。Perl は、プロセス、ファイルおよびテキストの処理機能に優れ、グラフィックス、ネットワーク、World Wide Web (WWW) プログラミングなどの複雑なシステム管理作業を行うための標準開発ツールとして広く使用されています。

Perl5 には、動的にロード可能なモジュールフレームワークが含まれています。このモジュールフレームワークを使用すると、特定の作業に新しい機能を追加することができます。多くのモジュールが、http://www.cpan.org の Comprehensive Perl Archive Network (CPAN) から自由に入手できます。Solaris Perl のインストール時にシステムに組み込まれるコアモジュールには、CGI、NDBM_File、Getopt などがあります。これらのモジュールは、/usr/per15/5.00503 ディレクトリに置かれます。site_perl ディレクトリは初期設定では空の状態で、ローカルにインストールされた Perl5 モジュールを格納するためのディレクトリです。

詳細は、perldoc コマンドを次のように実行して、/usr/perl5/pod ディレクトリ内の Perl pod (ポータブルドキュメンテーション) を調べてください。


% cd /usr/perl5/pod 
% /usr/perl5/bin/perldoc perlfaq1.pod

ネットワーク管理者の責任

一般に、ネットワーク管理者の作業には次の分野があります。

各作業分野は、ネットワークのライフサイクルの中の各段階に対応しています。ネットワーク管理者は、これらのすべての段階に責任を持つ場合もあり、また、ネットワークの保守など特定の分野だけを専門的に受け持つ場合もあります。

ネットワークの設計

ネットワーク管理の最初の作業として、まずネットワークの設計という作業がありますが、一般にこれはネットワーク管理の初心者が行う作業ではありません。ネットワークの設計では、組織のニーズを最大限に満たすようなネットワークの種類を選定する必要があります。大規模の組織では、熟練したネットワーク設計者、つまりネットワークのソフトウェアとハードウェアの両方を熟知している経験豊富なネットワーク管理者が、この作業を担当します。

ネットワーク設計に関連する各種の要素については、第 5 章「TCP/IP ネットワークの計画」で説明します。

ネットワークの設定

新しいネットワークの設計が終わったら、次にネットワークの設定と構成という作業を行います。この段階では、ネットワークの物理的な部分を形成するハードウェアをインストールし、ファイルまたはデータベース、ホスト、ルーター、ネットワーク構成サーバーを構成します。

この作業は、ネットワーク管理者の主な責任のうちの 1 つです。組織が非常に大規模ですでに十分なネットワーク構造が整っている場合を除いて、必須な作業の 1 つです。

ネットワークの設定に関連する作業については、第 6 章「TCP/IP の管理」で説明しています。

ネットワークの保守

ネットワーク管理作業の第 3 の段階には、管理者の責任のもっとも大きい部分を占める、次のような日常的な作業が含まれます。

「ネットワーククライアントの構成」では、既存のネットワーク上での新規ホストの設定方法について説明します。「一般的な障害追跡方法」では、ネットワーク上の問題を解決するためのヒントを示します。ネットワークサービスについての詳細は、第 29 章「Solaris NFS の環境」第 33 章「メールサービスの導入」、『Solaris ネーミングの管理』、『NIS+ への移行』を参照してください。セキュリティに関連する管理作業については、『Solaris のシステム管理 (第 1 巻)』を参照してください。

ネットワークの拡張

ネットワークが安定し問題なく動作する期間が長くなるにつれて、ネットワークの機能とサービスの拡張を望む組織の要求が大きくなってきます。始めのうちは、新しいホストを追加することによってネットワーク人口を増やし、共有ソフトウェアを追加することによってネットワークサービスを拡張することができます。しかし最終的には、単一のネットワークではこれ以上効率的に運営できないような限界点に達することになります。そのようになったとき、ネットワーク管理作業の第 4 の段階である拡張作業にとりかかります。

ネットワークの拡張については、以下のように選択肢がいくつかあります。

「ルーターの構成」では、インタネットワークの設定手順について説明します。「PPP によるネットワークの拡張」では、可搬コンピュータのためのネットワーク接続の設定方法について説明します。第 25 章「UUCP の概要」では、UUCP を使用して、使用しているマシンと他の UUCP システムとの間で情報交換を行う方法について説明します。

TCP/IP とは

ネットワーク通信プロトコルは、ネットワークの中でソフトウェアとハードウェアがどのように対話するかを規定した正規の規則です。ネットワークが正しく機能するためには、情報が目的の宛先に明瞭な形式で伝送される必要があります。ネットワークが機能するためには異なる種類のネットワーク用のソフトウェアとハードウェアが相互に対話できる必要があることから、通信プロトコルという概念が開発されました。

Solaris オペレーティングシステムには、組織でのネットワーク管理に必要なソフトウェアが含まれています。このネットワークソフトウェアは、総称的に TCP/IP (Transmission Control Protocol/Internet Protocol) と呼ばれる通信プロトコル群を実装しています。TCP/IP は、多くの主要な国際標準化機構によって標準として認定されており、世界中で使用されています。TCP/IP は複数の規格を集まりなので、多くの異種コンピュータで実行することができます。またこれを用いることによって、Solaris オペレーティングシステムを実行する異機種のシステムが混在したネットワークを容易に設定することができます。

TCP/IP は、多くの異なる種類のコンピュータ、オペレーティングシステム、ネットワークに対して、サービスを提供します。TCP/IP は、Ethernet、FDDI、トークンリングなどのローカルエリアネットワークや、T1 (デジタル専用線)、X.25、ATM などの広域ネットワークに、適用することができます。

TCP/IP を使用することで、複数のローカルエリアネットワークから成る 1 つのネットワークを構築できます。また、TCP/IP を使用すれば、事実上どのようなポイントツーポイントデジタル回線を使用しても、広域ネットワークを構築することができます。

TCP/IP とそのプロトコル群については、第 4 章「TCP/IP の概要」で詳しく説明します。

Solaris ネットワークを形成するハードウェアの種類

ローカルエリアネットワーク (LAN) という用語は、たとえば 1 つのビル内または 2 つの隣接するビル間のように、比較的狭い空間に限定されている単一のコンピュータネットワークを指します。ローカルエリアネットワークには、ハードウェアとソフトウェアの両方の構成要素があります。ハードウェアの観点から見ると、基本的な Solaris LAN は、ローカルエリアのなんらかのネットワークメディアに接続された複数のコンピュータで構成されます。

ローカルエリアネットワークメディア

コンピュータネットワーク用に使用するケーブル配線や電気配線をネットワークメディアと言います。図 2-1 は、Ethernet メディアを介して相互に接続されている 4 つのコンピュータを示しています。Solaris LAN 環境で最もよく使用されているローカルエリアネットワークメディアは、イーサーネットメディアです。Solaris LAN で使用できるその他のローカルエリアネットワークメディアには、FDDI とトークンリングがあります。

図 2-1 Solaris ローカルエリアネットワーク

Graphic

コンピュータとそのコネクタ

TCP/IP ネットワーク上のコンピュータは、ネットワークメディアに接続するために 2 種類のコネクタを使用します。それは、シリアルポートと、ネットワークインタフェース上のポートです。

シリアルポート

どのコンピュータにも、少なくとも 2 つのシリアルポートがあり、コンピュータにプリンタやモデムを接続するためのコネクタとして使用されます。シリアルポートは CPU ボードに装備されている場合もありますが、新たに購入しなければならない場合もあります。システムにモデムを接続して PPP 接続や UUCP 接続を確立するときは、これらのポートを使用します。PPP と UUCP はネットワークメディアとして電話回線を使用することができるので、事実上の広域ネットワークサービスを提供します。

ネットワークインタフェース

ネットワークへの接続ができるようにするためにコンピュータに内蔵されているハードウェアを、ネットワークインタフェースと言います。多くのコンピュータにはネットワークインタフェースが始めからインストールされていますが、そうでない場合は、別にネットワークインタフェースを購入する必要があります。

LAN メディアの種類別に、それぞれ異なるネットワークインタフェースが定められています。たとえば、Ethernet をネットワークメディアとして使用したいのであれば、ネットワーク内の各ホストに Ethernet インタフェースをインストールしておく必要があります。Ethernet ケーブルを接続するために使用するボード上のコネクタを、Ethernet コネクタと言います。たとえば FDDI を使用しようと計画しているのであれば、予定している各ホストに FDDI ネットワークインタフェースが装備されている必要があります (その他のネットワークメディアの場合も同様です)。

本書では、ホストのデフォルトのネットワークインタフェースを一次ネットワークインタフェースと呼びます。


注 -

ネットワークハードウェアのインストールについては、本書では取り扱いません。シリアルポートの構成方法については、 『Solaris のシステム管理 (第 1 巻)』を、ネットワークメディアのインストールの手順については、ネットワークメディア付属しているマニュアルを参照してください。


ネットワークソフトウェアが情報を転送する仕組み

ネットワークソフトウェアの設定は複雑な作業です。そこで、まず設定しようとしているネットワークソフトウェアがどのようにして情報を転送するかを理解しておくことが重要です。

図 2-2 に、ネットワーク通信に関係のある基本的な要素を示します。

図 2-2 ネットワーク上での情報の転送

Graphic

この図では、あるコンピュータがネットワークメディアを介して、同じメディアに接続している別のコンピュータにパケットを送信しています。

情報が転送される仕組み : パケット

ネットワークを介して転送する情報の基本単位をパケットと言います。パケットの構成は通常の手紙によく似ています。

どのパケットにもヘッダーがあり、これは手紙の封筒に当たります。ヘッダーには、受取先と送信元のアドレスに加えて、パケットがプロトコル群の各層を移送されるときにそのパケットをどのように扱うかを指示する情報が含まれています。

パケットのメッセージ部は手紙の本文に相当します。パケットに含めることのできるデータのバイト数には制限があり、これは使用しているネットワークメディアによって異なります。したがって、電子メールメッセージなどのような代表的な通信は、いくつかのパケットフラグメントに分割されることがあります。

情報を送受信する主体 : ホスト

経験を積んだ Solaris ユーザーなら、もちろん「ホスト」という言葉はよくご存じのことでしょう。この言葉は、しばしば「コンピュータ」または「マシン」の同義語として使用されます。TCP/IP の視点から見れば、ネットワーク上に存在するエンティティは、ルーターとホストの 2 つだけです。

ルーターは、ネットワークから別のネットワークへとパケットを転送するマシンです。これを行うには、ルーターは少なくとも 2 つのネットワークインタフェースを持っている必要があります。ネットワークインタフェースが 1 つしかないマシンは、パケットを転送できません。このようなマシンはホストとみなされます。ネットワーク管理者がネットワーク上に設定するマシンのほとんどはホストです。

複数のネットワークインタフェースを持っているけれどもルーターとしては機能しないマシンもあります。このようなマシンをマルチホームホストと呼びます。マルチホームホストは、持っているネットワークインタフェースを使用して複数のネットワークに直接的に接続されます。ただし、1 つのネットワークから別のネットワークへとパケットを転送することはしません。

あるホストが通信を開始したとき、それを送信側ホスト、送信、送信元、などと呼びます。たとえば、あるホストのユーザーが rlogin を入力するか、または他のユーザーに電子メールメッセージを送ると、そのホストは通信を開始します。通信の宛先となるホストを、受信側ホスト、受信側、受信先などと呼びます。たとえば、rlogin への引数として指定されたリモートホストは、そのログイン要求の受信先です。

各ホストは、ネットワーク上の他の対等ホストに自身を識別させるための次の 3 つの特性を備えています。

ホスト名

ホスト名 は、ローカルマシンの名前と所属組織の名前を組み合わせたものです。多くの組織では、ユーザーが各自のマシンのホスト名を選定します。sendmailrlogin などのプログラムは、ネットワーク上のリモートマシンを指定するときにホスト名を使用します。ホスト名については、 『Solaris のシステム管理 (第 1 巻)』でより詳しく説明しています。

マシンのホスト名は、一次ネットワークインタフェースの名前にもなります。この概念は、ネットワークデータベースを設定したりルーターを構成したりするときに重要な意味を持ちます。

ネットワークを設定するときは、そのネットワークに関与するすべてのマシンのホスト名を入手する必要があります。ネットワークデータベースを設定するときに、必要となります。詳細は、「ネットワーク上のエンティティへの名前付け」を参照してください。

IP アドレス

「IP アドレス」は、TCP/IP ネットワーク上で各マシンが持っている 2 種類のアドレスの 1 つで、そのマシンをネットワーク上の他の対等ホストに識別させるためのものです。このアドレスには、特定のホストがネットワーク上のどこに位置しているかを、対等ホストに知らせる役割もあります。ネットワーク上のマシンに Solaris オペレーティング環境をインストールしたことがある場合は、インストール時に IP アドレスを指定したことを覚えていることでしょう。IP アドレス指定は TCP/IP の重要な要素の 1 つであり、これについては、「IPv4 アドレス指定スキーマの設計」で詳しく説明します。

ハードウェアアドレス

ネットワーク上の各ホストは一意のハードウェアアドレスを持っており、これもホストを他の対等ホストに識別させるために使用されます。ハードウェアアドレスは、製造元でマシンの CPU またはネットワークインタフェースに物理的に割り当ててあります。ハードウェアアドレスはどれも一意なものです。

本書では、ハードウェアアドレスを「Ethernet アドレス」という言葉で表しています。Ethernet は、Solaris オペレーティング環境のネットワーク上で最も一般的に使用されているネットワークメディアなので、本書では、Solaris ホストのハードウェアアドレスが Ethernet アドレスであるものと想定して、説明を進めます。FDDI など他のネットワークメディアを使用している場合は、そのメディアに付属しているマニュアルの中のハードウェアアドレス指定に関する部分を参照してください。

ローカルエリアネットワークの境界を越える - 広域ネットワーク

ネットワークをある程度の期間運用していくうちに、他の企業、専門研究機関、所属の LAN 上にない他の組織からの情報にアクセスする必要が出てくる場合があります。このような情報にアクセスするには、広域ネットワーク (WAN) を介して通信することが必要になります。WAN は地理的に広い範囲を対象とするもので、デジタル専用線または電話回線、X.25、ISDN サービスなどのネットワークメディアを使用します。

WAN の代表的な例としてインターネットがあります。インターネットは、TCP/IP が開発された最初の目的となっていた各 WAN の後に続いて開発された、世界規模の公共ネットワークです。WAN のその他の例としては企業ネットワークがあります。これは、ある 1 つの企業内の各事業所同士を、1 つの国の全域、や 1 つの大陸の全域にわたるようなネットワークによって結ぶものです。つまり、1 つの組織が独自の WAN を構築することが可能です。

ネットワーク管理者としては、ローカルネットワークのユーザーが WAN にアクセスできるようにする必要があります。TCP/IP と UNIX のコミュニティでは、最もよく使用されている公共ネットワークはインターネットです。インターネットに直接接続する方法については、本書では説明しません。これについては、役立つ書籍がコンピュータ関係の書店にたくさんそろっています。

セキュリティ

LAN を WAN に接続することには、セキュリティに関するある程度のリスクが伴います。自分のネットワークを無許可のアクセスから保護したり、データと資源へのアクセスを制御したりすることが必要になります。セキュリティの概要については、『Solaris のシステム管理 (第 1 巻)』に説明されています。詳細な説明は、William R. Cheswick および Steven M. Bellovin 共著の『Firewalls and Internet Security』(Addison Wesly, 1994) に記載されています。

米国の majordomo@greatcircle.com に、subscribe firewalls という文字列を入れたメールを送ることで、セキュリティについての情報を入手することもできます。ダイジェスト版の方をご希望の場合は、テキスト中に firewalls_digest という文字列を入れてください。

TCP セッションにおけるラージウィンドウのサポート

TCP セッションのラージウィンドウは、RFC1323 に記述されたサポートを提供します。このサポートは、一般的な上限値の 65,535 バイトより大きなウィンドウを使用することで、ATM や衛星ネットワークなどの広帯域または遅延ネットワークの性能を改善するように設計されています。

サポートするデータ量の増大が顕著なのは、65,535 バイトから約 1G バイトに上限値が拡張された TCP セッションです。

TCP セッションのラージウィンドウでは、多数の TCP 構成パラメータがサポートされます。これらのパラメータにより、システム管理者は拡張された送受信ウィンドウサイズと RFC1323 タイムスタンプオプションを使用できます。その際に、アプリケーションを修正する必要はありません。システム全体か特定のホストやネットワークに対して、パラメータを変更できます。このことが特に有効なのは、使用するバッファーサイズの拡張機能を持たない ftprcp などの標準的なネットワークユーティリティを使用する場合です。

TCP ラージウィンドウのパラメータ

構成パラメータは、TCP デバイスを示す /dev/tcp に関連付けられ、ndd(1M) による検査と変更が可能です。通常、これらのパラメータは、システムのブート時に init(1M) が実行するシェルスクリプトの 1 つに設定されます (新規スクリプトの追加方法については、init.d(4) のマニュアルページを参照してください)。

使用可能なパラメータとそれぞれの意味は下記のとおりです。

tcp_xmit_hiwat

接続の送信バッファースペースにデフォルト値 (8K) を指定します。

tcp_recv_hiwat

接続の受信バッファースペース (受信データ用に割り当てられたバッファースペースの量。公示されている受信ウィンドウの最大サイズ) にデフォルト値 (8K) を指定します。

tcp_wscale_always

パラメータがゼロ以外であれば、リモートシステムへの接続時にウィンドウスケールオプションが必ず送信されます。パラメータがゼロであれば、64K より大きな受信ウィンドウをユーザーが要求した場合に (限って) 送信されます。デフォルトはゼロです。

このパラメータの値にかかわらず、ウィンドウスケールオプションが必ず接続肯定応答に含まれるのは、接続システムがそのオプションを使用した場合です。

tcp_tstamp_always

パラメータがゼロ以外であれば、リモートシステムへの接続時にタイムスタンプオプションが必ず送信されます。デフォルトはゼロです。

このパラメータの値にかかわらず、タイムスタンプオプションが必ず接続肯定応答 (および以降の全パケット) に含まれるのは、接続システムがそのオプションを使用した場合です。

tcp_tstamp_if_wscale

パラメータがゼロ以外であれば、リモートシステムへの接続時にタイムスタンプオプションが送信されるのは、64K より大きな受信ウィンドウをユーザーが要求した場合 (つまり、ゼロ以外のスケールを指定したウィンドウスケールオプションを使用している場合) です。デフォルトはゼロです。

tcp_max_buf

SO_SNDBUF または SO_RCVBUF オプション付きでユーザーが指定できるバッファーサイズの最大値を指定します。この値より大きなバッファーの使用を試みると、EINVAL を返して失敗します。デフォルトは 256K です。アプリケーションに必要な最大バッファーサイズよりもずっと大きな値をパラメータに指定するのはお勧めできません。障害や悪影響の原因となっているアプリケーションが、カーネルメモリを不当に大きく消費しかねないからです。

tcp_host_param

このパラメータは、IP アドレス、ネットワーク、サブネットワーク、および指定されたホストとの接続に使用される特定の TCP パラメータのデフォルト値をテーブルにしたものです。テーブルを表示するには、以下のように ndd コマンドを使用します。


example# ndd /dev/tcp tcp_host_param
Hash HSP     Address         Subnet Mask     Send       Receive    TStamp
027 fc31eea4 129.154.000.000 255.255.255.000 0000008192 0000008192      0
131 fc308244 129.154.152.000 000.000.000.000 0000032000 0000032000      0
133 fc30bd64 129.154.152.006 000.000.000.000 0000128000 0000128000      1

テーブルの各要素は、ホスト、ネットワーク (サブネットマスクのオプション付き)、サブネットのどれかに加えて、デフォルトの送信バッファースペースと受信バッファースペース、タイムスタンプを使用するかどうかを示すフラグを表示します。

テーブル内で指定されているデフォルト値は、アクティブな接続とパッシブな接続 (connect()listen()) の両方に使用できます。ホストアドレス全体、サブネット、ネットワークの順で、検出された最適な一致が使用されます。サブネットの認識が有効に動作するためには、サブネットのネットワークにサブネットマスクを指定するエントリがなければなりません。

上のテーブルの例が示す内容は、以下のとおりです。

テーブルの要素を追加または削除するには、以下のように ndd を使用します。


ndd -set /dev/tcp tcp_host_param '<command>'
<command> には次のいずれかを指定します。


 
<ipaddr>	[ mask <ipmask>] [ sendspace <integer> ]
				[ recvspace <integer> ] [ timestamp { 0 | 1 } ]

または


<ipaddr> delete

たとえば、上のテーブルを作成するには、次のように指定します。


# ndd -set /dev/tcp tcp_host_param '129.154.0.0 mask 255.255.255.0
        sendspace 8192 recvspace 8192'
# ndd -set /dev/tcp tcp_host_param '129.154.152.0 sendspace 32000
        recvspace 32000'
# ndd -set /dev/tcp tcp_host_param '129.154.152.6 sendspace 128000
        recvspace 128000 timestamp 1'


注 -

上記の例では、コマンドが 2 行に分割されていますが、コマンドはすべて、1 行に入力してください。


削除するには、次のように指定します。


# ndd -set /dev/tcp tcp_host_param '129.154.152.6 delete'
# ndd -set /dev/tcp tcp_host_param '129.154.152.0 delete'
# ndd -set /dev/tcp tcp_host_param '129.154.0.0 delete'

ネットワークとサブネットを指定するには、ホストビットをゼロにしておきます。エントリ追加用の構文は、既存エントリの修正にも使用できます。

tcp_host_param テーブルからの送受信スペースの値が使用されるのは、それらの値がユーザーが設定した (または、tcp_xmit_hiwattcp_recv_hiwat から取得した) 値よりも大きい場合に限られます。したがって、スループット向上のためにユーザーが大きな値を指定することが可能で、それらの値が誤って縮小されることはありません。

tcp_host_param テーブルのタイムスタンプ値が 1 の場合、接続を開始したときに選択したホストにタイムスタンプオプションが送信されます。ただし、値が 0 の場合でも、tcp_tstamp_alwaystcp_tstamp_if_wscale オプションの設定により、タイムスタンプオプションが送信されることがあります。

TCP 選択確認応答のサポート

TCP 選択確認応答 (TCP SACK) は、RFC 2018 に記述されているサポートを提供し、特に衛星リンクや大陸間リンク上で TCP ラージウィンドウ (RFC 1323) を使用するアプリケーションにおいて、混雑や複数パケットの脱落に関連した問題を解決します。

構成パラメータは、TCP デバイス /dev/tcp に関連付けられており、ndd(1M) を使用してその検査や変更を行うことができます。通常、このパラメータは、システムの起動時に init(1M) によって実行されるシェルスクリプトのいずれかで設定されます (新しいスクリプトの追加方法については、init.d(4) のマニュアルページを参照してください)。

使用可能なパラメータとその意味を以下に示します。

tcp_sack_permitted

SACK を許可するかどうかを示します。デフォルトは 1 です。使用可能なオプションを以下に示します。

0

TCP は SACK 情報の受信や送信を行いません。

1

TCP は SACK_PERMITTED オプションによる接続は開始しません。受信した要求に SACK_PERMITTED が含まれている場合は、TCP は SACK_PERMITTED オプションを使用して応答します。

2

TCP は SACK_PERMITTED オプションを使用して接続の開始と許可を行います。

詳細は、tcp(7P) のマニュアルページを参照してください。