この章では、ポイントツーポイントプロトコル (PPP) の Solstice PPP 実装について説明します。また、Solstice PPP を使用して、PPP リンク上で IP アプリケーションを実行する方法についても説明します。
Solstice PPP は、同期/非同期シリアルポイントツーポイントリンク上のマルチプロトコルデータグラムの送信方法を定義するポイントツーポイントプロトコル (PPP)、および PPP 上の IP データグラムの送信方法を定義する IP 制御プロトコル (IPCP) の標準実装です。
同期 PPP は 2 つのエンドポイントを常時接続します。通常同期 PPP は、専用回線を使用した LAN 同士の接続に使用します。非同期 PPP は、2 つのエンドポイントを一時的に接続します。通常非同期 PPP は、公衆電話網や私設電話網を使用した移動通信、テレワーキング、インターネットアクセスに使用します。
PPP のあらゆる標準実装と相互運用を行うことができます。
同期 PPP と非同期 PPP を 1 つの環境に統合します。
SolarisTM SPARCTM と Solaris x86 の各プラットフォームで動作します。
ポートとモデムの構成が簡略化されています。
サーバーへのアクセスを簡単にするために、IP アドレスが動的に割り当てられます。
PPP パスワード認証プロトコル (PAP) と PPP チャレンジハンドシェーク認証プロトコル (CHAP) によって、セキュリティが向上します。
負荷分散方式によって、同期接続に利用できる帯域幅が増大します。
トレース機能とログ機能が改良されているので、トラブルの原因追跡を簡単に行うことができます。
対話型 CHAT スクリプトによって、接続フェーズ中にユーザー入力を受け付けることができます。
Solstice PPP は、以下の規格に準拠する標準実装です。
RFC 1661 (RFC 1331 の改訂版) - Point-to-Point Protocol (PPP)
シリアルポイントツーポイントリンクを通してマルチプロトコルデータグラムを移送する標準方法について説明します。
RFC 1662 - PPP in HDLC-like Framing
PPP カプセル化パケットの HDLC 式フレームについて説明します。
RFC 1332 - PPP Internet Protocol Control Protocol (IPCP)
PPP においてインターネットプロトコル (IP) の確立と構成を行うネットワーク制御プロトコル (NCP)、および PPP における Van Jacobson TCP/IP ヘッダー圧縮のネゴシエーションを行う方法について説明します。
RFC 1334 - PPP Authentication Protocols
PPP ドメインにおけるユーザー認証に使用するパスワード認証プロトコル (PAP) とチャレンジハンドシェーク認証プロトコル (CHAP) の 2 つのプロトコルについて説明します。
RFC 1144 - Compressing TCP/IP Headers for Low-Speed Serial Links
パケットヘッダーを圧縮して、低速リンク上の TCP/IP 接続の性能を高める方法について説明します。
Solstice PPP をホストマシン上に構成し起動すると、標準 IP パケットがカプセル化されてシリアルポイントツーポイントリンク上に配信されます。このプロセスは、図 1-1 の 3 つのフェーズによって行われます。
2 つのエンドポイント間に物理接続が確立されます。
物理接続上に PPP リンクが確立されます。
PPP リンク上に IP が確立されます。
全二重ビットシリアル接続を通して、データを送信することができます。EIA-232-E (旧 RS-232-C)、EIA-422、EIA-423、EIA-530、CCITT V.24 と V.35 などの一般的なシリアル通信プロトコルは、すべてサポートされています。Solstice PPP の物理接続は、同期接続と非同期接続のどちらでもかまいません。
同期接続では、独立したクロック信号によってデータ伝送の同期をとります。2 つのエンドポイント間の常時接続を確立する同期接続には、通常、専用回線が使用されます。
同期接続では送信したデータ量とは関係なく、リースの期間に対してユーザーは料金を支払います。したがって、同期接続は連続的なデータトラフィックに最も適しており、通常は、図 1-2 のような LAN 同士の相互接続や大量送信に利用されます。
同期接続は、ホストマシンにインストールされている同期シリアルインタフェースを通して確立されます。同期接続は Solstice PPP の起動時に確立するので、独立した接続フェーズなしで同期接続上に PPP リンクが確立されます。
非同期接続では、データに含まれる情報 (ソフトウェアフロー制御) またはシリアルインタフェースが生成するハンドシェーク信号 (ハードウェアフロー制御) を使用してデータ伝送を制御します。2 つのエンドポイントを一時的に接続する非同期接続は、通常、私設電話網や公衆電話網を通して、またはヌルモデムリンクを通して確立されます。
接続料金は呼に要した時間とエンドポイント間の距離に基づいています。したがって、非同期接続は一時的なネットワークトラフィックに最も適しており、通常は図 1-3 のような移動通信、テレワーキング、一時的なアクセスに利用されます。
非同期接続は、ホストマシンにインストールされている非同期シリアルインタフェースによって確立されます。また、ホストマシンとアナログ電話網のインタフェースとなるモデムによっても確立されます。各エンドポイントにあるモデム同士が接続フェーズ時に通信すると、呼が設定されます。
モデムの構成については、モデムデータベースファイル /etc/opt/SUNWconn/ppp/modems を参照してください。
標準の Hayes AT コマンドをサポートするモデムは、モデムデータベースファイルに構成情報を追加することができます。モデムを構成するためのコマンドの詳細については、モデムのマニュアルを参照してください。
物理接続が確立すると、各エンドポイントによってネゴシエーションが行われ、PPP 層の共通構成が定義されます。同期接続の場合は、マシン上で Solstice PPP を起動するたびに PPP 層が確立されます。非同期接続の場合は、リモートホストに発信するたびに PPP 層が確立されます。
各エンドポイントは、希望する構成とサポートするプロトコルオプションに関する情報が入ったリンク制御プロトコル (LCP) フレームを、PPP ネゴシエーションフェーズ中に交換します。ネゴシエーションの対象となるパラメータには、低速接続で高性能を得るための圧縮アルゴリズムが使用されたり、非承認アクセスから保護するための認証プロトコルが使用されます。ネゴシエーションを収束することが目的ですが、両端で共通構成の一致に失敗した場合は、リンクは自動的に切断されます。
PPP リンクが確立すると、各エンドポイントはネゴシエーションを行なって IP 層の共通構成を定義します。各エンドポイントは、希望する構成を含むネットワーク制御プロトコル (NCP) フレームを、IP ネゴシエーションフェーズで交換します。ネゴシエーションの対象となるパラメータとして、IP アドレスを含めることができます。これが、IP アドレス動的割り当ての基盤となります。
同期/非同期 PPP リンクを通して IP データグラムの送信経路には、Solstice PPP と Solaris オペレーティングシステムの IP 層の境界となる論理的 IP インタフェースを定義する必要があります。論理的 IP インタフェースは、ネゴシエーションを行なった構成情報に基づいて初期化されます。
Solstice PPP は、以下の 2 種類の IP インタフェースをサポートします。
Solstice PPP のポイントツーポイント IP インタフェースは、 /dev/ipdptp です。このインタフェースは、図 1-4 で示すような 2 つのホスト間だけを、直接 IP に接続します。
ポイントツーポイント IP インタフェースを定義するには、1 つの発信元アドレス (アタッチメントポイント) と一意の着信先アドレスを指定します。IP データグラムがポイントツーポイントインタフェースに到達した後の次のホップの宛先は、1 つだけです。したがって、1 つのホストの複数のポイントツーポイント接続に、1 つの発信元アドレスを使用することができます。複数のポイントツーポイント接続を利用すると、複数のリモートホストに同時に接続することができます。
IP ポイントツーポイント接続は、Solstice PPP による同期リンクと非同期リンクの両方によってサポートされています。
Solstice PPP のポイントツーマルチポイント IP インタフェースは、/dev/ipd です。図 1-5 で示す 1 つのホストと他の複数のホスト間の IP 接続を 1 個のインタフェースによって作成します。ポイントツーマルチポイントインタフェースを使用することによって、サブネットワーク番号を持つ仮想サブネットワークが作成されます。
ポイントツーマルチポイントインタフェースを定義するには、発信元アドレスだけを指定します。IP データグラムが、ポイントツーマルチポイントインタフェースに到達した後の次のホップにおける宛先は、複数存在する場合があります。したがって、各ポイントツーマルチポイントインタフェースに、一意な発信元アドレスを設定する必要があります。
IP ポイントツーマルチポイント接続をサポートするのは、非同期 Solstice PPP リンクだけです。
負荷分散機能は、標準実装 PPP における Sun 独特の拡張機能です。1 つの IP インタフェースからのネットワークトラフィックを図 1-6 で示す複数の同期リンク間で均等に分散して、帯域幅を増やすことを可能にします。
高性能を確保するには、負荷分散に使用するすべての同期デバイスの回線速度が等しい必要があります。負荷分散機能を利用するには、リンクの両端に Solstice PPP が実装されている必要があります。
Solstice PPP による負荷分散の例については、「同期リンクにおける負荷分散」を参照してください。
Solstice PPP には、非同期 PPP リンクにおいて IP アドレスを動的に割り当てる機能があります。PPP リンクが確立すると、クライアントはこのメカニズムを利用して IP アドレスをサーバーから取り出します。
クライアント側で、IP アドレスの動的割り当て機能を有効にします。サーバーとの PPP リンクを開始する場合は、クライアントが IP アドレスを要求します。この要求に対し、クライアントのローカルインタフェースに割り当てられている IP アドレスとサーバー自身の IP アドレスをサーバーが返します。クライアントはこれらのアドレスを使用して、PPP リンクのポイントツーポイント IP 接続を確立します。
サーバー上で IP アドレスの動的割り当てをサポートするには、ポイントツーポイント IP インタフェースプールを定義する必要があります。クライアントが IP アドレスを要求すると、サーバーはこのプールからインタフェースを取り出して割り当てます。PPP リンクが終了すると、インタフェースはプールに戻されます。
プールに存在する IP インタフェースの数は、サーバーに接続するモデムの数と等しい必要があります。サーバーがサポートするクライアントの数ははるかに多いので、接続に利用できるモデムがあるかぎり、要求に応じて IP アドレスが割り当てられます。
IP アドレスの動的割り当て機能を使用できるようにサーバーとクライアントを設定する方法については、第 4 章「構成ファイルの編集」を参照してください。
ポイントツーポイント IP インタフェースには、静的 IP インタフェースと動的 IP インタフェースの 2 種類があります。
静的な IP インタフェースは、1 つの非同期デバイス (モデム) に対して関連付けられます。このデバイスに発信したクライアントには、常に同じ IP アドレスが返されます。一般的に、サーバーとの接続を行うクライアントの数が少ないか、または数が予測できる場合は、静的 IP インタフェースが使用されます。
動的な IP インタフェースは、複数の非同期デバイス (モデム) に対し、要求に応じて関連付けられます。サーバーとの接続を行うクライアントには、どのデバイスに発信するかに関係なく、任意の IP アドレスがプールから割り当てられます。一般的に、サーバーとの接続を行うクライアントの数が多いか、または数が予測できない場合は、動的 IP インタフェースが使用されます。
動的な IP インタフェースを使用した IP アドレスの動的割り当てを使用するインターネットサーバー構成の詳細な例については、「汎用インターネットサーバー構成」を参照してください。
Solstice PPP には、RFC 1334 規定のパスワード認証プロトコル (PAP)、チャレンジハンドシェーク認証プロトコル (CHAP) による同位認証が実装されています。同位認証はオプションであり、リンク確立フェーズ時にネゴシエーションが行われます。
同位認証を可能にし使用する方法については、「PPP パス構成ファイル (ppp.conf) の編集」 を参照してください。
パスワード認証プロトコル (PAP) は、リンクの確立時に簡単なパスワード認証を行います。これは強力な認証方法ではありません。パスワードは暗号化されないままリンク上で送信され、リンクしている間は不正なアクセスから保護される手段がないからです。
リンク確立フェーズ時にリンクの 1 つのエンドポイントが PAP 認証を要求した場合は、もう 1 つのエンドポイントは認識される有効な識別子とパスワードを返す必要があります。もう 1 つのエンドポイントが応答に失敗した場合や、識別子やパスワードが拒否された場合は、認証は失敗しリンクは切断されます。
PAP 認証は、2 つのリンクエンドポイントのいずれか一方が要求するか、または両方のエンドポイントが同時に要求します。両方が PAP 認証を要求した場合は、どちらも識別子とパスワードを交換します。両方のエンドポイントで認証が成功しないかぎり、リンクは切断されます。
チャレンジハンドシェーク認証プロトコル (CHAP) は、3 ウェイハンドシェークメカニズムに基づいたパスワード認証をリンク確立時に行います。この認証では、認証側とその同位者だけが知っている、リンク上で送信されない CHAP シークレットが使用されます。
リンクの 1 つのエンドポイントが CHAP 認証を要求するときには、CHAP シークレットに基づいて算出されるチャレンジ値が含まれるチャレンジメッセージを生成します。このチャレンジメッセージに対し、もう 1 つのエンドポイントは、受信したチャレンジ値に基づいて算出した応答値と共通シークレットを返す必要があります。このエンドポイントが応答に失敗した場合や、認証側の要求した値が返されなかった場合は、リンクが切断されます。
CHAP は PAP よりも強力な認証方法です。CHAP では、シークレットがリンクを通して送信されることはなく、リンクしている間は侵略から保護されます。したがって、PAP と CHAP の両方の認証を使用する場合は、CHAP 認証が最初に行われます。
CHAP 認証は、2 つのリンクエンドポイントのいずれかが要求するか、または両方が同時に要求します。両方が CHAP 認証を要求した場合は、どちらもチャレンジメッセージと応答メッセージを交換します。両方のエンドポイントで認証が成功しないかぎり、リンクは切断されます。
図 1-7 に示す Solstice PPP の主な構成要素について、以降の節で説明します。
PPP STREAMS モジュールは、RFC 1661 規定のポイントツーポイントプロトコルに準拠する標準実装です。このモジュールは、シリアルポイントツーポイントリンクのデータリンクレベル接続を確立して構成し、PPP フレームとして伝送できるように IP データグラムをカプセル化します。
IP ダイヤルアップ層は、Solstice PPP と Solaris TCP/IP プロトコル群の境界に位置します。この層には、PPP リンクにおけるデータグラムの送信で IP 層が使用する論理 IP インタフェースを維持し監視する接続マネージャ (ipdcm) と IP インタフェースがあります。Solstice PPP と関連する IP インタフェースには、以下の 2 種類があります。
これらのインタフェースの詳細については、「PPP 上における IP の確立」を参照してください。
PPP リンクマネージャ (pppd) は、Solstice PPP によって確立されたすべての通信リンクを制御します。Solstice PPP 構成ファイルにある情報を読み取り、IP ダイヤルアップ層と PPP STREAMS モジュールを構成します。
PPP ログインサービス (pppls) は、リモートユーザーからの着信接続を受け付けます。UNIX 標準ログイン方式によってユーザー名とパスワードの検証を行い、有効な PPP 接続が存在することをユーザーの受け付け時に PPP リンクマネージャに通知します。
Solstice PPP が実装されているマシンが着信呼を受け付け可能にするには、システム管理者が各リモートユーザーのユーザーアカウントを作成しておく必要があります。このアカウントはユーザー名とパスワードを持つ必要があります。また、デフォルトログインシェルとして /usr/sbin/pppls を起動する必要があります。
PPP ログインサービスを使用するためにユーザーアカウントを作成する方法については、「着信接続のためのユーザーアカウントの追加」を参照してください。
Solstice PPP には、PPP STREAMS モジュールから取り出した情報を表示する 2 つの診断ユーティリティがあります。PPP トレースユーティリティ /usr/bin/ppptrace は PPP フレーム情報を表示し、統計収集ユーティリティ /usr/bin/pppstat は Solstice PPP が起動されてから送受信した PPP フレームの数と種類の累積記録を表示します。
PPP 初期設定スクリプト /usr/bin/pppinit は、ネットワークの基本構成を作成します。複雑な PPP ネットワークを作成する場合は、まず pppinit を使用して Solstice PPP を構成してから構成ファイルを変更します。
Solstice PPP の構成情報は、2 つの構成ファイルに格納されます。これらのファイルは、基本構成情報に基づいた PPP 初期設定スクリプト (pppinit) を使用して作成します。より複雑な構成の詳細を追加するには、これらのファイルを変更します。
ファイル /etc/opt/SUNWconn/ppp/ppp.conf は、PPP における IP 接続に使用する同期パスと非同期パスを定義します。ファイル /etc/opt/SUNWconn/ppp/link.conf は PPP リンクの確立に使用できる各種のシリアルデバイスを定義し、発信接続が可能なようにこれらのデバイスとリモートホストとをマッピングします。
これらのファイルの詳細については、第 4 章「構成ファイルの編集」を参照してください。
デフォルトでは、CHAT (接続) スクリプトは、ディレクトリ /etc/opt/SUNWconn/ppp/script に存在します。CHAT スクリプトの内容は、ローカルホストが送信するログイン識別子とログインパスワードなど、リモートホストへの非同期接続を開始するときに使用するログインダイアログを定義する情報です。接続対象となる各リモートホストに、固有の CHAT スクリプトを作成する必要があります。
CHAT スクリプトに含まれる情報の一部は、リモートホストのオペレーティングシステムに依存します。PPP 初期設定スクリプト (pppinit) を使用すると、Solaris 環境を実装するホストとの接続を開始する CHAT スクリプトを作成することができます。
PPP リンクマネージャが生成するステータスメッセージとエラーメッセージは、ファイル /var/adm/log/ppp.log に記録されます。このファイルにあるメッセージの詳細については、「ステータスメッセージとエラーメッセージ」を参照してください。