この章には、第 9 章「PPP の構成」で述べた基本リンクに比べて少々特殊な PPP リンクを構成するために必要な情報を記載しています。主に 2 つの種類の PPP リンクの構成方法について説明します。2 つの種類とは、動的ポイントツーポイントリンクを持つダイヤルインサーバーと、仮想ネットワーク (これはマルチポイントリンクを使用します) です。章末には、asppp.cf 構成ファイルで使用できるすべてのキーワードのリストを記載しています。
動的ポイントツーポイントリンクを持つダイヤルインサーバーを使用するサイトでは、ポイントツーポイント通信の利点を最大限に活用することができます。この構成タイプについては、第 7 章「PPP の概要」で概説しました。この構成では、必要時に動的にポイントツーポイントリンクを割り当てる少なくとも 1 つのダイヤルインサーバーと、リモートホストとの間で通信が行われます。この節では、図 11-1 に示す構成例に基づいて説明を進めます。
各リモートホストは、標準のポイントツーポイントリンクを使ってダイヤルインサーバーと通信します。しかし、図 9-1 に示したマルチポイントダイヤルインサーバーとは違って、ダイヤルインサーバー mojave は、動的ポイントツーポイントリンクを介して呼び出し側ホストに接続されます。リモートホストのどれかが接続を確立しようとすると、サーバーが使用可能なリンクを割り当てます。
動的リンクの基本概念は、接続確立のたびにサーバーがクライアントに IP アドレスを供給するというものです。接続を確立すると、使用可能な IP インタフェースをサーバーがクライアントに割り当てます。その後、接続が継続している間、インタフェースのリモート IP アドレスがクライアントの IP アドレスになります。接続を終了すると、使用可能なインタフェースのプールに IP インタフェースが戻され、別の接続に使用できる状態になります。
動的リンクの構成には、リモートホスト対マルチポイントダイヤルインサーバーの場合と同じ一般的な手順を用います。この手順については、「構成プロセスの概要」に説明があります。ただし、動的ポイントツーポイントリンクには独自の必要条件がいくつかあり、そのため構成に関係するファイルに対する修正のしかたも少々異なります。
動的割り当て PPP リンクを使用する各マシンについて、/etc/inet/hosts ファイルにホスト情報を追加する必要があります。PPP エンドポイントの IP アドレスについては次の規則があります。
ダイヤルインサーバーの場合は、そのサーバーの一次ネットワークインタフェースの IP アドレス (たとえば le0、smc0 など) を、動的リンクのアドレスとして使用する必要があります。
動的リンクでは、各リモートホストに IP アドレスを割り当てる (静的リンクの場合) 必要はありません。ただし、サーバー上のポイントツーポイント IP インタフェースのそれぞれにリモート IP アドレスを割り当てる必要があります。使用可能な IP インタフェースの数は、サーバーに接続されたモデムの数と一致します。たとえば、モデムが 3 つある場合、ポイントツーポイント IP インタフェースと IP アドレスが 3 つずつ必要です。
クライアント上で ifconfig コマンドを正しく実行するには、ダミーの IP アドレスを入れなければなりません。PPP が起動すると、このアドレスはクライアントの IP インタフェースに割り当てられたローカル IP アドレス用のプレースホルダとして機能します。
IP インタフェースに割り当てられるリモート IP アドレスに制限はありません。ただし、明確にするには、同じサブネットに属する IP アドレスだけを入れるのが最適です。
動的リンク構成に含まれるすべてのマシンで、hosts データベースを更新する必要があります。
リモートマシンの hosts データベースを構成するための手順は、次のとおりです。
リンクの反対側にある各ダイヤルインサーバーについて、一次ネットワークインタフェースの IP アドレスとホスト名を、/etc/inet/hosts ファイルに追加します。
たとえば、図 11-1 では、nomada、nomadb、nomadc の /etc/inet/hosts ファイルには、ダイヤルインサーバー mojave の一次ネットワークインタフェースの IP アドレスが入ります。
ダミー IP アドレスを追加します。
この IP アドレスが使用されるのは、PPP の起動時だけです。
nomadc の /etc/inet/hosts ファイルは、次のように表示されます。
# Internet host table # 127.0.0.1 localhost loghost 192.41.40.55 mojave 1.2.3.4 dummy |
ダイヤルインサーバーの物理ネットワーク上にあって、リモートホストからリモートログインできるすべてのマシンの IP アドレスを、/etc/inet/hosts ファイルに追加します。
物理ネットワーク上にあるネームサーバーのデータベースを、リモートホストのホスト名と IP アドレスに更新します。
ダイヤルインサーバーの hosts データベースには、PPP 固有のアドレスを追加する必要はありません。動的割り当てリンクは、サーバーのネットワークインタフェースを使用する必要があります。したがって、ダイヤルインサーバーの hosts データベースを構成するには、次のようにします。
サービス対象の各リモートホストについて、サーバーの /etc/inet/hosts ファイルにエントリを追加します。
物理ネットワーク上のすべてのマシンの /etc/inet/hosts ファイルに、それぞれが通信することのできるリモートホストについてのエントリを追加します。
次に行う手順として、/etc/passwd ファイルと /etc/shadow ファイルを編集します。動的リンク構成の場合も、リモートホスト対マルチポイントダイヤルインサーバー構成の場合と同じ手順で、これらのファイルを編集します。/etc/passwd ファイルと /etc/shadow ファイルについての詳細は、「/etc/passwd ファイルの修正」を参照してください。
動的リンク構成用の asppp.cf 構成ファイルには、リモートホストに関する情報と、PPP リンクに使用するインタフェースに関する情報が含まれていなければなりません。ダイヤルインサーバーがブートした後、リモートエンドポイントからサーバーが呼び出されるたびに、リンクマネージャはこの情報を使って通信を確立します。
リモートホスト用の asppp.cf 構成ファイルは、「基本構成ファイルの各部分」で説明したファイルと同じですが、パラメータ negotiate_address が追加されている点が異なります。
ifconfig ipdptp0 plumb dummy mojave up path interface ipdptp0 peer_system_name mojave-ppp connectivity_timeout 300 negotiate_address on |
negotiate_address パラメータは、ローカル IP アドレスの割り当てがネゴシエーションによって取得されて動的に割り当てられているかどうかを示します。設定が on の場合、サーバーから供給された IP アドレスが、接続中にクライアントのローカルアドレスとして使用されます。
ダイヤルインサーバーが着信パケットを受信すると、リンクマネージャは構成ファイルの path セクションを読んで、リモートエンドポイントを識別し、使用するインタフェースを決定します。例 11-1 に示す構成ファイルには、インタフェースキーワードは含まれていません。代わりに、リンクマネージャは、defaults セクションに設定されているインタフェース情報を使用します。
動的割り当てリンクを持つダイヤルインサーバー用の asppp.cf 構成ファイルは、例 11-1 のようになります。
ifconfig ipdptp0 plumb mojave clienta down ifconfig ipdptp1 plumb mojave clientb down ifconfig ipdptp2 plumb mojave clientc down # This means grab whatever interface is available (not in use) defaults interface ipdptp* # Each path specifies a machine that might dial up / log # in to this server path peer_system_name tamerlane # nomada uses the login name # tamerlane path peer_system_name lawrence # nomadb uses the name lawrence # for login path peer_system_name nomadc |
動的割り当てリンクを持つダイヤルインサーバー用の ifconfig セクションの構文は、次のとおりです。
ifconfig ipdptpn plumb server-name client-address down
例 11-1 には、3 つの ifconfig 行があり、それぞれポイントツーポイントインタフェースを初期化しています。
ifconfig ipdptp0 plumb mojave clienta down ifconfig ipdptp1 plumb mojave clientb down ifconfig ipdptp2 plumb mojave clientc down |
動的割り当てリンクを構成するときに、asppp.cf ファイルに defaults セクションを含めることができます。このセクションでは、その後に asppp.cf ファイル内に keyword が現れたときに、keyword に代入するデフォルトの値を設定します。defaults セクションの構文は次のとおりです。
default keyword |
例 11-1 では、キーワード interface を使って ipdptp* をインタフェースとして定義することにより、動的リンクを指定しています。ワイルドカードを示すアスタリスクは、ifconfig セクションで定義されている任意の使用可能な ipdptp インタフェースを使用するよう、リンクマネージャに指示しています。したがって、サーバー mojave のリンクマネージャは、ipdptp0、ipdptp1、ipdptp2 のうち、"down" として構成されている最初のインタフェースを使用します。
動的リンクを持つサーバー用の構成ファイルには、そのサーバーとの接続の確立が許されているすべてのリモートホストについての path セクションが含まれていなければなりません。path セクションの構文は次のとおりです。
path peer_system_name endpoint-username |
interface キーワードは、path セクションの中で定義されていません。これは、この値が defaults セクションで定義されているからです。 この場合の peer_system_name キーワードと peer_ip_address キーワードの意味は、マルチポイントサーバー用の構成ファイルの場合と同じです。詳細は、「マルチポイントダイヤルインサーバーの path セクション」を参照してください。
asppp.cf ファイルでは、上記のほかに、エンドポイントがどのように通信するかを定義するためのキーワードをいくつか指定できます。これには、「構成キーワード」で説明するセキュリティキーワードも含まれます。
仮想ネットワークは、それぞれ離れた場所にあるいくつかのスタンドアロンコンピュータを、互いに PPP マルチポイントリンクで接続したものです。仮想ネットワークの概念については、「仮想ネットワーク」で紹介しました。この節では、仮想ネットワークを構成する方法について説明します。
図 11-2 に示すネットワークは、3 つの単独コンピュータで構成されています。ネットワークの各メンバーは、マルチポイント PPP リンクを介して他のメンバーに接続しています。したがって、このようなネットワークを作成するには、ネットワーク管理者 (そしておそらくリモートロケーションの他のネットワーク管理者) は、関与する各ホストでマルチポイント PPP リンクを構成する必要があります。
マルチポイントリンクの構成には、マルチポイントダイヤルインサーバーの場合と同じ一般的な手順を用います。この手順については、「構成プロセスの概要」に説明があります。ただし、仮想ネットワークには独自の必要条件がいくつかあり、それに従ってネットワーク内の各ホストを構成する必要があります。
仮想ネットワーク内の各マシンについて、/etc/hosts ファイルにホスト情報を追加する必要があります。PPP エンドポイント用に使用する IP アドレスを入力するときは、次の規則に従ってください。
ポイントツーポイントリンクには PPP 固有の IP アドレスを指定する。物理ネットワーク内でまだ構成されていないマシンの場合は、PPP リンク用の IP アドレスを作成する必要がある。このアドレスが、ホストの一次ネットワークインタフェースになる
仮想ネットワークのネットワーク番号を作成する。詳細は、「PPP リンクへのネットワーク番号の割り当て」を参照
最初に行う手順としては、仮想ネットワークに関する情報によって、hosts データベースと networks データベースを更新します。
各マシンの /etc/inet/hosts ファイルには、このホストからアクセスできるすべてのネットワークメンバーに関するアドレス指定情報が含まれている必要があります。たとえば、図 11-2 に示したネットワーク内の各ホストは、次のような情報を持っている必要があります。
# Internet host table # 127.0.0.1 localhost loghost 192.41.47.15 nomada 192.41.47.20 nomadb 192.41.47.12 nomadc
仮想ネットワークは一意な IP アドレスを必要とするので、このアドレスを networks データベースに入力する必要があります。たとえば、図 11-2 に示したネットワークの番号は 192.41.47 です。さらに、このネットワーク上のホストが他のネットワークと通信する必要がある場合は、このネットワークを InterNIC のアドレス指定機関に登録する必要があります。networks データベースの編集方法については、第 4 章「ネットワーク上での TCP/IP の構成」を参照してください。
仮想ネットワーク上の各ホストは、ネットワークのアドレスが入ったエントリを、/etc/inet/networks ファイル中に持っている必要があります。たとえば、ネットワーク 192.41.47 の各ホストは、/etc/inet/networks の中に次のようなエントリを持っている必要があります。
# Internet networks # # arpanet 10 arpa # ucb-ether 46 ucbether # # local networks loopback 127 ppp 192.41.47 #remote sales offices |
次に行う手順としては、UUCP データベース、/etc/passwd ファイル、/etc/shadow ファイルを編集します。仮想ネットワーク内のマシンについてこれらのファイルを編集する方法は、マルチポイントダイヤルインサーバー構成の場合と同じです。UUCP 関係の情報については、「UUCP データベースの編集」を、passwd ファイルについては、「/etc/passwd ファイルの修正」を参照してください。
仮想ネットワーク上のローカルマシン用の構成ファイルには、そのネットワーク内にあってローカルホストからアクセスできるすべてのリモートホストに関する情報が含まれている必要があります。さらに、仮想ネットワーク上のマシンは、どれもダイヤルインとダイヤルアウトの両方の機能を備えたものとして構成されていなければなりません。ローカルホストマシンがブートされると、リンクマネージャは asppp.cf ファイルを読んで通信を確立します。
例 11-2 は、仮想ネットワーク 192.41.47 の nomada 用として設定した構成ファイルです。
# /etc/asppp.cf for hosta ifconfig ipd0 plumb nomada netmask + up defaults interface ipd0 path peer_ip_address nomadb peer_system_name lawrence # name machine logs in with path peer_ip_address nomadc peer_system_name azziz |
例 11-3 は、仮想ネットワーク 192.41.47 の nomadb 用として設定した構成ファイルです。
# /etc/asppp.cf for nomadb ifconfig ipd0 plumb nomadb netmask + up defaults interface ipd0 path peer_ip_address nomada peer_system_name tamerlane # name the machine logs in with path peer_ip_address nomadc peer_system_name azziz |
asppp.cf ファイルを編集することによってセキュリティを設定し、リンクの各部分が、パスワード認証プロトコル (PAP) またはチャレンジハンドシェーク認証プロトコル (CHAP) に応答するかどうかを指定できます。PAP と CHAP については、「PPP のセキュリティ」で説明してます。asppp.cf ファイルを編集するには、一連のキーワードを追加します。この節では、認証システムはリンクまたはチャレンジを開始するシステムであり、これは多くの場合サーバーです。対等システムはリンクの反対側にあるシステムであり、これは多くの場合クライアントです。
追加するキーワードは、require_authentication と will_do_authentication です。認証システムつまりサーバーは一般に認証を要求し、対等システムつまりクライアントは一般に認証を行います。
表 11-1 認証システムのキーワードと関連の文字列
require_authentication chap |
|
---|---|
chap_peer_secret |
|
chap_peer_name |
表 11-2 対等システムのキーワードと関連の文字列
will_do_authentication chap |
|
---|---|
chap_secret |
|
chap_name |
リンク上の各マシンについて require_authentication キーワードを追加して、PAP セキュリティと CHAP セキュリティのどちらを使用するかを指定します。
will_do_authentication キーワードを使って、リンク上で PAP または CHAP セキュリティを使用する各リモートホストについて、リモートホストの /etc/asppp.cf ファイルにエントリを追加します。
これらのキーワードは明示的に指定することも、パスのデフォルト値を使用することもできます。各キーワードによって指定される内容については、表 11-3 を参照してください。また、例 11-4 は、/etc/asppp.cf ファイルの例を示します。
PAP と CHAP の両方が存在する場合は、認証システムはまず CHAP を試みる。失敗するとリンクは終了する。認証システムは PAP を試みない。
PAP と CHAP の認証キーワードのデフォルトはオフである。キーワードの構文は次のとおり
require_authentication off | pap[chap] | chap[pap] will_do_authentication off | pap[chap] | chap[pap] |
pap_id と pap_password キーワードまたは pap_peer_id と pap_peer_password キーワードに対する値を、関連のパスに指定しなかった場合は、それぞれの値は NULL 文字列に設定されます。
該当するパスについて、chap_name、 chap_secret、 chap_peer_secret、 chap_peer_name キーワードと値を指定する必要があります。
キーワード |
値の定義 |
---|---|
対等システムがそれ自身を認証することを指定する。pap か chap のどちらかがある場合は、対等システムは認証に参加するか、または接続を終了する必要がある。デフォルト値は off |
|
現在のパスについて認証される必要のある対等システムの名前を指定する。peername 文字列の長さは 1 オクテット3 以上。長さがゼロの文字列を指示するには、このキーワードを省略する |
|
対等システムのパスワードを 1 オクテット以上の長さで指定する。長さがゼロの文字列を指示するには、このキーワードを省略する |
|
対等システムが送る応答を生成するためにチャレンジ値とともに使用されるシークレットを指定する。形式は 1 オクテット以上の長さで、少なくとも 16 オクテット以上が望ましい |
|
パケットを伝送する対等システムの識別情報を指定する。名前には、NULL と、CR/LF で終わる文字列は使用できない。名前は、対等システムからの応答パケットの一部として受信されるもので、1 オクテット以上の長さからなる |
|
システムが、指定した認証プロセスに認証された対等システムとして参加する意志があるかどうかを指定する。pap と chap の両方が存在する場合は、システムはどちらの認証プロトコルにも参加する意志を持つことになる。デフォルト値は off |
|
応答パケットに入れて認証システムに送るシステムの名前を指定する。長さがゼロの文字列を指示するには、このキーワードを省略する |
|
応答パケットに入れて認証システムに送るシステムのパスワードを指定する。長さがゼロの文字列を指示するには、このキーワードを省略する |
|
認証システムに送る応答を生成するために、受信したチャレンジ値とともに使用するシークレットを入れる。形式は 1 オクテット以上の長さで、少なくとも 16 オクテット以上が望ましい |
|
システムの識別情報を指定する。名前は、NULL または CR/LF で終わるものであってはならない。この名前は、応答パケットに入れて認証システムに送られる |
1. キーワード として使用できるのは off|pap[chap] | chap[pap]
2. peername は、認証システムから見てポイントツーポイントリンクの反対側にあるシステムの名前です。これは、 4. に示す構文の文字列です。
3. オクテットはバイトの厳密な定義です。
4. string はホワイトスペースを含まない単一トークンです。特殊文字を含めるには、標準 ANSI の ¥ エスケープ文字を使用できます。空白文字を入れるには、¥s を使用します。文字列の先頭にポンド記号がある場合は、コメントとして解釈されないようにするために、エスケープ (¥#) する必要があります。NULL (¥0) は文字列を切り捨てます。
例 11-4 は、PAP と CHAP の認証を必要とするサーバー mojave 用の asppp.cf ファイルを示しています。対等システムは、nomada (PAP) と nomadb (CHAP) です。
ifconfig ipdptp0 plumb mojave nomada up ifconfig ipdptp1 plumb mojave nomanb up path peer_system_name tamerlane require_authentication pap #tells nomada that mojave #requires pap authentication pap_peer_id desert pap_peer_password oasis path peer_system_name lawrence require_authentication chap #tells nomadb that mojave #requires chap authentication chap_peer_name another¥sdesert chap_peer_secret secret¥soasis¥swith¥007bell
例 11-5 に示された mojave のリモートホスト nomada は、PAP と CHAP の両方を認証しようしています。
ifconfig ipdptp0 plumb tamerlane mojave up path interface ipdptp0 peer_system_name mojave will_do_authentication chap pap #nomada tells mojave #that it will do chap and #pap authentication pap_id desert pap_password oasis chap_name desert¥srain chap_secret %$#@7&*(+|`P'12 |
例 11-6 に示された mojave のリモートホスト nomadb は、CHAP を認証しようしています。
ifconfig ipdptp0 plumb nomadb mojave private up path interface ipdptp0 peer_system_name mojave will_do_authentication chap #nomadb tells mojave that it #will do chap authentication chap_name another¥sdesert chap_secret secret¥soasis¥swith¥007bell |
一般に、CHAP と PAP の両方が構成ファイルに組み込まれていて、サーバーが認証を要求し、リモートホストが認証を行おうとするのが、理想的な形です。しかし、逆にリモートホストの方が認証を要求するようにすることも可能です。CHAP シークレットは安全な手段で送付する必要があります。通常、CHAP シークレットは人間が直接先方に渡すという方法をとっています。
この節では、asppp.cf 構成ファイルで使用できる構成キーワードと、それぞれについて定義する必要のある値について説明します。これらのキーワードのほとんどは必須ではありません。必須のものについてはその旨を示しています。キーワードについての詳しい説明は、RFC 1331、1332、1333、1334 を参照してください。
表 11-4 は、すべての asppp.cf ファイルに含まれていなければならない必須キーワードの一覧です。
表 11-4 asppp.cf の必須キーワード
キーワード |
値の定義 |
---|---|
parameters に指定する値で ifconfig コマンドを実行するよう、リンクマネージャに指示する。詳細は、「asppp.cf ファイルの ifconfig セクション」、「マルチポイントダイヤルインサーバーの ifconfig セクション」、ifconfig(1M) のマニュアルページを参照。 |
|
この (現行の) パスの属性としてグループ化するトークンシーケンスの始まりを指定する。現行パスを形成する属性の集合は、後続の path キーワード、defaults キーワード、ファイルの終わり文字のどれかが生じた時点で終了する。 |
|
ネットワーク内の各インタフェースについて、ipdptp (静的ポイントツーポイント)、ipdptp* (動的ポイントツーポイント)、ipd (マルチポイント) のどれかのデバイスを指定する。ipdptpn と ipdn, の場合は、このキーワードは、n で定義される特定のインタフェースを現行パスに関連付ける。n は 0 もしくは正の整数でなければならない。この数は、path セクションに定義されているインタフェースと、ifconfig セクションに指定されているインタフェースが一致するようにする。
ipdptp** インタフェースの場合は、* は、インタフェースが、"down" として構成されているどのポイントツーポイントインタフェースにも一致することを示す。 |
|
ダイヤルアウトマシンでは、ローカルマシンから呼び出したいリモートエンドポイントのホスト名 (hostname) を指定する。この名前は、/etc/uucp/Systems ファイルの中のシステム名と同じである。リモートシステム名を現行パスに関連付ける。この名前は、/etc/uucp/Systems ファイルから、アウトバウンド接続に関する、モデムと対等システムに固有の情報を見つけるために使用される。 ダイヤルインマシンでは、そのダイヤルインマシンにログインするときにリモートマシンが使用するユーザー名 (username) を指定する。username と、接続の獲得に使用されたログイン名との突き合わせによって、適正なパスが決定される。 |
|
宛先ホストアドレスを指定する。これは、マルチポイントリンクの場合に限り必要とされる。このアドレスは現行パスに関連付けされる。パスがポイントツーポイントインタフェースを示している場合は、この値は無視される。アドレスの形式は、ドット付き 10 進数、16 進数、シンボルのどれでもよい。 |
表 11-5 に、PPP 構成をさらに進んで定義するために使用できる、asppp.cf の省略可能キーワードを示します。
表 11-5 asppp.cf の省略可能キーワード