Solaris のシステム管理 (ネットワークサービス)

第 22 章 Solaris PPP 4.0 (リファレンス)

この章では、Solaris PPP 4.0 について詳細で概念的な情報を提供します。トピックは次のとおりです。

ファイルおよびコマンド行での PPP オプションの使用

Solaris PPP 4.0 には、PPP 構成の定義に使用するオプションが多数含まれます。これらのオプションは、PPP 構成ファイルまたはコマンド行で使用するほか、ファイルでの使用とコマンド行での使用を組み合わせることもできます。この節では、PPP オプションの構成ファイルでの使用と PPP コマンドの引数としての使用について詳細に説明します。

PPP オプションを定義する場所

Solaris PPP 4.0 は柔軟に構成できます。PPP オプションを次の場所で定義できます。

次の表に、PPP 構成ファイルとコマンドを一覧表示します。

表 22–1 PPP 構成ファイルとコマンドの概要

ファイルまたはコマンド  

定義 

参照先 

/etc/ppp/options

たとえば、マシンがピアにピア自身の認証を要求するかどうかなど、システム上のすべての PPP リンクにデフォルトで適用される特性を含むファイル。このファイルがない場合、スーパーユーザー以外のユーザーは PPP の使用を禁止されます。

/etc/ppp/options 構成ファイル」

/etc/ppp/options.ttyname

シリアルポート ttyname 上のすべての通信の特性を記述するファイル。

/etc/ppp/options. ttyname 構成ファイル」

/etc/ppp/peers

通常、ダイアルアウトマシンが接続するピアに関する情報を含むディレクトリ。このディレクトリ内のファイルは、pppd コマンドの call オプションで使用されます。

「ダイアルインサーバーと通信するための情報の指定」

/etc/ppp/peers/peer-name

リモートピア peer-name の特性を含むファイル。通常、リモートピアの電話番号やピアとの接続をネゴシエートするための chat スクリプトなどの特性が含まれます。

/etc/ppp/peers/peer-name ファイル」

/etc/ppp/pap-secrets

パスワード認証プロトコル (PAP) の認証に必要なセキュリティー資格を含むファイル。 

/etc/ppp/pap-secrets ファイル」

/etc/ppp/chap-secrets

チャレンジハンドシェーク認証プロトコル (CHAP) の認証に必要なセキュリティー資格を含むファイル。 

/etc/ppp/chap-secrets ファイル」

~/.ppprc

PPP ユーザーのホームディレクトリ内のファイル。ダイアルインサーバーでもっともよく使用されます。このファイルには、各ユーザーの構成に関する特定の情報が含まれます。 

「ダイアルインサーバーでの $HOME/.ppprc の設定」

pppd options

PPP リンクの開始および PPP リンクの特性の説明のためのコマンドとオプション。 

「PPP オプションの処理方法」

PPP ファイルの詳細は、pppd(1M) のマニュアルページを参照してください。pppd(1M) には、pppd で使用できるすべてのオプションに関する詳細な説明もあります。すべての PPP 構成ファイルのサンプルテンプレートは、/etc/ppp にあります。

PPP オプションの処理方法

  1. pppd デーモンが次を構文解析する。

    Solaris PPP 4.0 のすべての操作は、ユーザーが pppd コマンドを実行すると起動する pppd デーモンによって処理されます。ユーザーがリモートピアを呼び出すと、次が発生します。

    • /etc/ppp/options

    • $HOME/.ppprc

    • /etc/ppp/options または $HOME/.ppprc の中で file または call オプションによって開かれたファイル

  2. pppd がコマンド行を走査して使用中のデバイスを判定する。デーモンはまだ遭遇したオプションを解釈しない。

  3. pppd は次の条件に基づいて使用するシリアルデバイスを検出しようとする。

    • シリアルデバイスがコマンド行またはそれ以前に処理した構成ファイルで指定されている場合、pppd はそのデバイス名を使用します。

    • シリアルデバイスが指定されていない場合、pppd はコマンド行で nottypty、または socket オプションを検索します。これらのオプションが指定されている場合、pppd はデバイス名が存在しないとみなします。

    • 上記以外の場合で、標準入力が tty に接続されていることを pppd が検出した場合は、tty の名前を使用します。

    • それでも pppd がシリアルデバイスを見つけられない場合は、接続を終了し、エラーを発生させます。

  4. pppd は次に /etc/ppp/options.ttyname ファイルが存在するかどうかをチェックする。ファイルが見つかると、pppd はそのファイルを構文解析する。

  5. pppd はコマンド行のオプションを処理する。

  6. pppd はリンク制御プロトコル (LCP) のネゴシエーションを行い、接続を確立する。

  7. (省略可能) 認証が必要な場合、pppd は、/etc/ppp/pap-secrets または /etc/ppp/chap-secrets を読み取り、反対側のピアを認証する。

pppd デーモンがコマンド行またはほかの構成ファイルで call peer-name オプションを検出すると、/etc/ppp/peers/peer-name ファイルが読み取られます。

PPP 構成ファイルにおける特権のしくみ

Solaris PPP 4.0 構成には特権の概念が含まれます。特権は、特に、同じオプションが複数の場所で呼び出された時に、構成オプションの優先度を判定します。特権ソースから呼び出されたオプションは、非特権ソースから呼び出された同じオプションよりも優先されます。

ユーザー特権

唯一の特権ユーザーは、UID の値が 0 のスーパーユーザー (root) です。その他のすべてのユーザーは特権を与えられません。

ファイル特権

次に、所有者にかかわらず特権を与えられる構成ファイルを示します。

$HOME/.ppprc は、ユーザーが所有するファイルです。$HOME/.ppprc およびコマンド行から読み取られたオプションは、pppd を起動しているユーザーが root である場合にだけ特権が与えられます。

file オプションの引数は特権が与えられます。

オプション特権の意味

オプションの中には、呼び出したユーザーまたはソースが特権を与えられていないと動作しないものがあります。コマンド行で呼び出されたオプションは、pppd コマンドを実行中のユーザーの特権を割り当てられます。これらのオプションは、pppd を起動しているユーザーが root でなければ、特権が与えられません。

オプション 

状態 

意味 

ドメイン

特権がある 

使用には特権が必要です。 

linkname

特権がある 

使用には特権が必要です。 

noauth

特権がある 

使用には特権が必要です。 

nopam

特権がある 

使用には特権が必要です。 

pam

特権がある 

使用には特権が必要です。 

plugin

特権がある 

使用には特権が必要です。 

privgroup

特権がある 

使用には特権が必要です。 

allow-ip addresses

特権がある 

使用には特権が必要です。 

name hostname

特権がある 

使用には特権が必要です。 

plink

特権がある 

使用には特権が必要です。 

noplink

特権がある 

使用には特権が必要です。 

plumbed

特権がある 

使用には特権が必要です。 

proxyarp

noproxyarp が指定されている場合、特権がある

特権のない使用はこのオプションを優先指定できません。 

defaultroute

nodefaultroute が特権ファイルで、または特権ユーザーによって設定されている場合、特権がある

非特権ユーザーはこのオプションを優先指定できません。 

disconnect

特権ファイルで、または特権ユーザーによって設定されている場合、特権がある 

非特権ユーザーはこのオプションを優先指定できません。 

bsdcomp

特権ファイルで、または特権ユーザーによって設定されている場合、特権がある 

非特権ユーザーは特権ユーザーが指定したサイズより大きいコードサイズを指定できません。 

deflate

特権ファイルで、または特権ユーザーによって設定されている場合、特権がある 

非特権ユーザーは特権ユーザーが指定したサイズより大きいコードサイズを指定できません。 

connect

特権ファイルで、または特権ユーザーによって設定されている場合、特権がある 

非特権ユーザーはこのオプションを優先指定できません。 

init

特権ファイルで、または特権ユーザーによって設定されている場合、特権がある 

非特権ユーザーはこのオプションを優先指定できません。 

pty

特権ファイルで、または特権ユーザーによって設定されている場合、特権がある 

非特権ユーザーはこのオプションを優先指定できません。 

welcome

特権ファイルで、または特権ユーザーによって設定されている場合、特権がある 

非特権ユーザーはこのオプションを優先指定できません。 

ttyname

特権ファイルで設定されている場合、特権がある 

非特権ファイルで設定されている場合、特権がない 

pppd をだれが起動したかに関係なく、スーパーユーザー特権で開かれます。

pppd を起動したユーザーの特権で開かれます。

/etc/ppp/options 構成ファイル

ローカルマシン上のすべての PPP 通信にグローバルオプションを定義するには、/etc/ppp/options ファイルを使用します。/etc/ppp/options は特権ファイルです。pppd によって強制される規則ではありませんが、/etc/ppp/options は root が所有する必要があります。/etc/ppp/options で定義するオプションは、ほかのすべてのファイルおよびコマンド行内で定義される同じオプションより優先されます。

/etc/ppp/options で使用する可能性がある代表的なオプションを次に示します。


注 –

Solaris PPP 4.0 ソフトウェアには、デフォルトの /etc/ppp/options ファイルは含まれていません。pppd の動作に、/etc/ppp/options ファイルは必要ありません。マシンに /etc/ppp/options ファイルがない場合、そのマシンで pppd を実行できるのは root だけです。


How to Define Communications Over the Serial Lineの説明に従って、テキストエディタを使用して 「シリアル回線を介した通信を定義する方法」 を作成する必要があります。マシンがグローバルオプションを必要としない場合は、空の /etc/ppp/options ファイルを作成できます。これで、root および一般ユーザーの両方がローカルマシン上で pppd を実行できます。

/etc/ppp/options.tmpl テンプレート

/etc/ppp/options.tmpl には、/etc/ppp/options ファイルに関する有用なコメントのほかに、グローバルな /etc/ppp/options ファイルに共通の次の 3 つのオプションが含まれます。


lock
nodefaultroute
noproxyarp

オプション 

定義 

lock

UUCP 形式のファイルロックを有効にする 

nodefaultroute

デフォルトの送信経路を定義しないことを指定する 

noproxyarp

proxyarp を許可しない

/etc/ppp/options.tmpl をグローバルオプションファイルとして使用するには、/etc/ppp/options.tmpl の名前を /etc/ppp/options に変更します。次に、サイトの必要に応じてファイルの内容を変更します。

/etc/ppp/options ファイルの例 (参照先)

/etc/ppp/options ファイルの例は、次の節を参照してください。

/etc/ppp/options. ttyname 構成ファイル

シリアル回線上の通信の特性を /etc/ppp/options.ttyname ファイルで設定できます。/etc/ppp/options.ttyname は特権ファイルです。既存の /etc/ppp/options および $HOME/.ppprc ファイルを構文解析したあとで pppd によって読み取られます。$HOME/.ppprc が存在しない場合、pppd は /etc/ppp/options を構文解析したあと /etc/ppp/options.ttyname を読み取ります。

ttyname は、ダイアルアップリンク、専用回線リンクの両方で使用されます。ttyname は、モデムまたは ISDN TA が接続されている可能性があるマシン上の特定のシリアルポート (cua/acua/b など) を表します。

/etc/ppp/options.ttyname ファイルに名前を付けるときは、デバイス名にあるスラッシュ (/) をドット (.) に置き換えます。たとえば、デバイス cua/b 用の options ファイルの名前は /etc/ppp/options.cua.b になります。


注 –

Solaris PPP 4.0 が正常に動作するうえで、/etc/ppp/options.ttyname ファイルは必要ありません。サーバーが PPP 用のシリアル回線を 1 つだけ持ち、オプションはほとんど必要ない場合、必要なオプションを別の構成ファイルまたはコマンド行で指定することができます。


ダイアルインサーバーでの /etc/ppp/options.ttyname の使用

ダイアルアップリンクでは、ダイアルインサーバー上のモデムが接続されているすべてのシリアルポートごとに、/etc/ppp/options. ttyname ファイルを個別に作成することもできます。通常のオプションは次のとおりです。

ダイアルアウトマシンでの /etc/ppp/options.ttyname の使用

ダイアルアウトシステムでは、モデムが接続されているシリアルポート用に /etc/ppp/options.ttyname ファイルを作成することも、あるいは /etc/ppp/options.ttyname を使用しないでおくこともできます。


注 –

Solaris PPP 4.0 が正常に動作するうえで、/etc/ppp/options.ttyname ファイルは必要ありません。ダイアルアウトマシンが PPP 用のシリアル回線を 1 つだけ持ち、オプションはほとんど必要ない場合、必要なオプションを別の構成ファイルまたはコマンド行で指定することができます。


options.ttya.tmpl テンプレートファイル

/etc/ppp/options.ttya.tmpl ファイルには、/etc/ppp/options.tty-name ファイルに関して有用なコメントが含まれています。また、テンプレートには /etc/ppp/options.tty-name ファイルに共通の次の 3 つのオプションが含まれます。


38400 
asyncmap 0xa0000 
:192.168.1.1 

オプション 

定義 

38400

ポート ttya でこのボーレートを使用する 

asyncmap 0xa0000

ローカルマシンが接続に失敗したピアと通信できるように asyncmap 値 0xa0000 を割り当てる 

:192.168.1.1

接続上で着信しているすべてのピアに IP アドレス 192.168.1.1 を割り当てる 

サイトで /etc/ppp/options.ttya.tmpl を使用するには、/etc/ppp/options.tmpl の名前を /etc/ppp/options.ttya-name に変更します。ttya-name をモデムが接続しているシリアルポートの名前に置き換えます。次に、サイトの必要に応じてファイルの内容を変更します。

/etc/ppp/options.ttyname ファイルの例 (参照先)

/etc/ppp/options.ttyname ファイルの例は、次の節を参照してください。

ユーザー独自のオプションの設定

この節では、ダイアルインサーバー上でユーザーを設定する方法について詳細に説明します。

ダイアルインサーバーでの $HOME/.ppprc の設定

$HOME/.ppprc ファイルは、独自の PPP オプションを設定するユーザーを対象としています。管理者が、ユーザーのために $HOME/.ppprc を設定することもできます。

$HOME/.ppprc 内のオプションは、ファイルを呼び出しているユーザーに特権がある場合だけ、特権を与えられます。

呼び出し元が pppd コマンドを使って呼び出しを開始した場合、pppd デーモンは、.ppprc ファイルを 2 番目に確認します。

ダイアルインサーバーで $HOME/.ppprc を設定する手順については、「ダイアルインサーバーのユーザーを設定する」を参照してください。

ダイアルアウトマシンでの $HOME/.ppprc の設定

$HOME/.ppprc ファイルは、ダイアルアウトマシン上で Solaris PPP 4.0 が正常に動作するのに必要ではありません。ダイアルアウトマシンでは、特別な場合を除いて $HOME/.ppprc も必要ありません。次を行う場合は、1 つ以上の .ppprc ファイルを作成します。

.ppprc ファイルは、ダイアルインサーバーを構成するときにもっとも頻繁に使用されるため、.ppprc の構成手順について 「ダイアルインサーバーのユーザーを構成する方法」 を参照してください。

ダイアルインサーバーと通信するための情報の指定

ダイアルインサーバーと通信するには、サーバーに関する情報を収集し、いくつかのファイルを編集する必要があります。特に大切なのは、ダイアルアウトマシンが呼び出す必要があるすべてのダイアルインサーバーについて通信要件を設定する必要があることです。ダイアルインサーバーに関する ISP 電話番号などのオプションは、/etc/ppp/options.ttyname ファイルで指定できます。ただし、ピア情報は、/etc/ppp/peers/peer-name ファイルで設定するのが最適です。

/etc/ppp/peers/peer-name ファイル


注 –

/etc/ppp/peers/peer-name ファイルは、ダイアルアウトマシン上で Solaris PPP 4.0 が正常に動作するのに必要ではありません。


特定のピアと通信するための情報を指定するには、/etc/ppp/peers/peer-name ファイルを使用します。/etc/ppp/peers/peer-name を使用すると、一般ユーザーは、自分で設定することを許可されていない、あらかじめ選択された特権オプションを呼び出すことができます。

たとえば、非特権ユーザーの場合、noauth オプションが /etc/ppp/peers/peer-name ファイルで指定されていると、このオプションが優先されます。ユーザーが、認証資格を提供されていない peerB への接続を設定したいとします。ユーザーはスーパーユーザーとして、noauth オプションを含む /etc/ppp/peers/peerB ファイルを作成できます。noauth は、ローカルマシンが peerB からの呼び出しを認証しないことを示します。

pppd デーモンは、次のオプションを検出すると、/etc/ppp/peers/peer-name を読み取ります。


call  peer-name

ダイアルアウトマシンが通信する必要があるターゲットピアごとに /etc/ppp/peers/peer-name ファイルを作成できます。これは、スーパーユーザーの権限がなくても特定のダイアルアウト接続を呼び出すことを一般ユーザーに許可できる点で特に便利です。

/etc/ppp/peers/peer-name で指定する代表的なオプションを次に示します。

特定のターゲットピアに適用する可能性がある上記以外のオプションについては、pppd(1M) のマニュアルページを参照してください。

/etc/ppp/peers/myisp.tmpl テンプレートファイル

/etc/ppp/peers/myisp.tmpl ファイルには、/etc/ppp/peers/peer-name ファイルに関して有用なコメントが含まれています。また、テンプレートには、/etc/ppp/peers/peer-name ファイルで使用する可能性がある次の一般的なオプションが含まれます。


connect "/usr/bin/chat -f /etc/ppp/myisp-chat" 
user myname             
remotename myisp        
noauth                 
noipdefault             
defaultroute            
updetach                
noccp                   

オプション 

定義 

connect "/usr/bin/chat -f /etc/ppp/myisp-chat"

chat スクリプト /etc/ppp/myisp-chat を使ってピアを呼び出します。

user myname

このアカウント名をローカルマシンに使用します。myname は、ピアの /etc/ppp/pap-secrets ファイル内でのこのマシンの名前です。

remotename myisp

myisp をローカルマシンの /etc/ppp/pap-secrets ファイル内のピア名として認識します。

noauth

認証資格を提供するためのピアの呼び出しを要求しません。 

noipdefault

ローカルマシンにデフォルトの IP アドレスを使用しません。 

defaultroute

ローカルマシンに割り当てられているデフォルトの経路指定を使用します。 

updetach

標準出力ではなく、PPP ログファイル内にエラーを記録します。 

noccp

CCP 圧縮を使用しません。 

サイトで /etc/ppp/peers/myisp.tmpl を使用するには、/etc/ppp/peers/myisp.tmpl の名前を /etc/ppp/peers/peer-name に変更します。peer-name は、呼び出されるピアの名前に置き換えます。次に、サイトの必要に応じてファイルの内容を変更します。

/etc/ppp/peers/peer-name ファイルの例 (参照先)

/etc/ppp/peers/peer-name ファイルの例は、次の節を参照してください。

ダイアルアップリンクのモデム速度の設定

モデムの設定で重要なのは、モデムが動作する速度の指定です。Sun Microsystems のコンピュータで使用するモデムには、次のガイドラインを適用してください。

ダイアルアウトマシンでは、/etc/ppp/peers/peer-name などの PPP 構成ファイルでモデム速度を設定するか、あるいは pppd のオプションとして速度を指定します。

ダイアルインサーバーでは、「ダイアルインサーバーにデバイスを構成する」で説明したように、ttymon 機能または Solaris 管理コンソールを使って速度を設定する必要があります。

ダイアルアップリンクでの会話の定義

ダイアルアウトマシンとそのリモートピアは、さまざまな命令をネゴシエーションしたり交換したりして PPP リンク上で通信します。ダイアルアウトマシンを構成するときは、ローカルおよびリモートモデムから要求される命令の内容を判定する必要があります。次に、その命令を含む chat スクリプトと呼ばれるファイルを作成します。この節では、モデムの設定および chat スクリプトの作成について説明します。

chat スクリプトの内容

ダイアルアウトマシンが接続する必要があるリモートピアは、通常、それぞれピア自身の chat スクリプトを必要とします。


注 –

chat スクリプトは、通常、ダイアルアップリンクだけで使用されます。専用回線リンクは、起動時の設定が必要な非同期インタフェースを使用しないかぎり、chat スクリプトを使用しません。


chat スクリプトの内容は、モデムまたは ISDN TA の要件、およびリモートピアの要件によって決まります。スクリプトの内容は、一連の送信予期文字列として表示されます。ダイアルアウトマシンとリモートピアは、この文字列を通信の開始処理時に交換します。

予期文字列には、会話を開始するためにダイアルアウトホストマシンがリモートピアから受け取ると予想される文字が含まれます。送信文字列には、ダイアルアウトマシンが、予期文字列を受け取ったあとでリモートピアに送信する文字が含まれます。

chat スクリプト内の情報には、通常、次が含まれます。

chat スクリプトの例

この節では、独自の chat スクリプトを作成する際の参考になる chat スクリプトの例を紹介します。モデムメーカーのガイドや ISP およびほかのターゲットホストからの情報には、モデムおよびターゲットピアの chat の要件が含まれています。また、数多くの PPP Web サイトで chat スクリプトのサンプルが提供されています。

基本のモデム chat スクリプト

次は、独自の chat スクリプトを作成するためのテンプレートとして使用できる基本の chat スクリプトです。


ABORT   BUSY
ABORT   'NO CARRIER'
REPORT  CONNECT
TIMEOUT 10
"" AT&F1M0&M5S2=255
SAY     "Calling myserver\n"
TIMEOUT 60
OK      "ATDT1-123-555-1212"
ogin: pppuser
ssword: \q\U
% pppd

次の表では、chat スクリプトの内容を説明します。

スクリプトの内容 

意味 

ABORT BUSY

モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。 

ABORT 'NO CARRIER'

ダイアル時にモデムが ABORT 'NO CARRIER' を報告した場合、伝送を中止します。このメッセージは、通常、ダイアルまたはモデムのネゴシエーションが失敗したときに発生します。

REPORT CONNECT

CONNECT 文字列をモデムから収集し、その文字列を出力します。

TIMEOUT 10

初期タイムアウトを 10 秒に設定します。モデムは即時に応答する必要があります。 

"" AT&F1M0&M5S2=255

M0 – 接続中、スピーカーをオフに設定します。

&M5 – モデムにエラー制御を要求させます。

S2=255 – TIES “+++” ブレークシーケンスを無効にします。

SAY "Calling myserver\n"

ローカルマシン上に「Calling myserver (myserver を呼び出し中)」のメッセージを表示します。

TIMEOUT 60

タイムアウトを 60 秒にリセットし、接続ネゴシエーションにより多くの時間を割り当てます。 

OK "ATDT1-123-555-1212"

電話番号 1-123-555-1212 を使ってリモートピアに発信します。 

ogin: pppuser

UNIX 方式のログインを使ってピアにログインします。ユーザー名 pppuser を指定します。

ssword: \q\U

\q-v オプションを使ってデバッグする場合、ログをとりません。

\U-U のあとに続く文字列の内容をこの位置に挿入します。文字列はコマンド行に指定されるもので、通常はパスワードが含まれます。

% pppd

% シェルプロンプトを待ち、pppd コマンドを実行します。

/etc/ppp/myisp-chat.tmpl chat スクリプトテンプレート

Solaris PPP 4.0 には、ユーザーが自分のサイトで使用するために変更できる /etc/ppp/myisp-chat.tmpl という chat スクリプトテンプレートが用意されています。/etc/ppp/myisp-chat.tmpl は、基本のモデム chat スクリプトと似ていますが、ログインシーケンスが含まれていません。


ABORT   BUSY
ABORT   'NO CARRIER'
REPORT  CONNECT
TIMEOUT 10
""      "AT&F1"
OK      "AT&C1&D2"
SAY     "Calling myisp\n"
TIMEOUT 60
OK      "ATDT1-123-555-1212"
CONNECT \c

スクリプトの内容 

意味 

ABORT BUSY

モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。 

ABORT 'NO CARRIER

ダイアル時にモデムが ABORT 'NO CARRIER' を報告した場合、伝送を中止します。このメッセージは、通常、ダイアルまたはモデムのネゴシエーションが失敗したときに発生します。

REPORT CONNECT

CONNECT 文字列をモデムから収集し、その文字列を出力します。

TIMEOUT 10

初期タイムアウトを 10 秒に設定します。モデムは即時に応答する必要があります。 

"" "AT&F1"

モデムを出荷時のデフォルトにリセットします。 

OK "AT&C1&D2"

モデムをリセットします。その結果、&C1 では、モデムからの DCD がキャリアを追跡します。リモート側がなんらかの理由で電話を切った場合、DCD はドロップします。  

&D2 では、DTR の High-Low 遷移により、モデムが「オンフック」状態になるか、またはハングアップします。 

SAY "Calling myisp\n"

ローカルマシン上に「Calling myisp (myisp を呼び出し中)」のメッセージを表示します。 

TIMEOUT 60

タイムアウトを 60 秒にリセットし、接続ネゴシエーションにより多くの時間を割り当てます。 

OK "ATDT1-123-555-1212"

電話番号 1-123-555-1212 を使ってリモートピアに発信します。 

CONNECT \c

反対側のピアのモデムからの CONNECT メッセージを待ちます。

ISP を呼び出すためのモデムの chat スクリプト

ダイアルアウトマシンから U.S. Robotics Courier モデムを使用して ISP を呼び出すには、テンプレートとして次の chat スクリプトを使用します。


ABORT   BUSY
ABORT   'NO CARRIER'
REPORT  CONNECT
TIMEOUT 10
"" AT&F1M0&M5S2=255
SAY     "Calling myisp\n"
TIMEOUT 60
OK      "ATDT1-123-555-1212"
CONNECT \c
\r \d\c
SAY "Connected; running PPP\n"

次の表では、chat スクリプトの内容を説明します。

スクリプトの内容 

意味 

ABORT BUSY

モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。 

ABORT 'NO CARRIER'

モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。 

REPORT CONNECT

CONNECT 文字列をモデムから収集し、その文字列を出力します。

TIMEOUT 10

初期タイムアウトを 10 秒に設定します。モデムは即時に応答する必要があります。 

"" AT&F1M0M0M0M0&M5S2=255

M0 – 接続中、スピーカーをオフに設定します。

&M5 – モデムにエラー制御を要求させます。

S2=255 – TIES “+++” ブレークシーケンスを無効にします。

SAY "Calling myisp\n"

ローカルマシン上に「Calling myisp (myisp を呼び出し中)」のメッセージを表示します。

TIMEOUT 60

タイムアウトを 60 秒にリセットし、接続ネゴシエーションにより多くの時間を割り当てます。 

OK "ATDT1-123-555-1212"

電話番号 1-123-555-1212 を使ってリモートピアに発信します。 

CONNECT \c

反対側のピアのモデムからの CONNECT メッセージを待ちます。

\r \d\c

CONNECT メッセージの最後まで待ちます。

SAY “Connected; running PPP\n” 

ローカルマシン上に「Connected; running PPP (接続完了。PPP を実行中)」という通知メッセージを表示します。

UNIX 方式ログイン用に拡張された基本の chat スクリプト

次の chat スクリプトは、Solaris のリモートピアまたはほかの UNIX タイプのピアを呼び出すために基本のスクリプトを拡張したものです。この chat スクリプトは、「ピアを呼び出すための命令群を作成する方法」で使用されています。


        SAY "Calling the peer\n"
        TIMEOUT 10
        ABORT BUSY
        ABORT 'NO CARRIER'
        ABORT ERROR
        REPORT CONNECT
        "" AT&F1&M5S2=255
        TIMEOUT 60
        OK ATDT1-123-555-1234
        CONNECT \c
        SAY "Connected; logging in.\n"
        TIMEOUT 5
        ogin:--ogin: pppuser
        TIMEOUT 20
        ABORT 'ogin incorrect'
        ssword: \qmypassword
        "% " \c
        SAY "Logged in.  Starting PPP on peer system.\n" 
        ABORT 'not found'
        "" "exec pppd"
        ~ \c

次の表では、chat スクリプトのパラメータを説明します。

スクリプトの内容 

意味 

TIMEOUT 10

初期タイムアウトを 10 秒に設定します。モデムは即時に応答する必要があります。 

ABORT BUSY

モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。 

ABORT 'NO CARRIER'

モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。 

ABORT ERROR

モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。 

REPORT CONNECT

CONNECT 文字列をモデムから収集し、その文字列を出力します。

"" AT&F1&M5S2=255

&M5 – モデムにエラー制御を要求させます。

S2=255 – TIES “+++” ブレークシーケンスを無効にします。

TIMEOUT 60

タイムアウトを 60 秒にリセットし、接続ネゴシエーションにより多くの時間を割り当てます。 

OK ATDT1-123-555-1234

電話番号 1-123-555-1212 を使ってリモートピアに発信します。 

CONNECT \c

反対側のピアのモデムからの CONNECT メッセージを待ちます。

SAY "Connected; logging in.\n"

Connected; logging in (接続完了。ログイン中)」という通知メッセージを表示して、ユーザーの状態を知らせます。

TIMEOUT 5

タイムアウトを変更し、ログインプロンプトを迅速に表示できるようにします。 

ogin:--ogin: pppuser

ログインプロンプトを待ちます。ログインプロンプトを受け取らなかった場合は、RETURN を送信して待機します。次にユーザー名 pppuser をピアに送信します。この後に続くシーケンスは、ほとんどの ISP から PAP ログインと呼ばれています。ただし、PAP 認証とはまったく無関係です。

TIMEOUT 20

タイムアウトを 20 秒に変更し、パスワードの検証により多くの時間をかけられるようにします。 

ssword: \qmysecrethere

ピアからのパスワードプロンプトを待ちます。プロンプトを受け取ると、パスワード \qmysecrethere を送信します。\q は、パスワードがシステムログファイルに書き込まれるのを防ぎます。

"% " \c

ピアからのシェルプロンプトを待ちます。chat スクリプトは C シェルを使用します。ユーザーが異なるシェルを使ってログインすることを希望する場合は、この値を変更します。 

SAY "Logged in. Starting PPP on peer system.\n"

Logged in. Starting PPP on peer system (ログイン完了。ピアシステム上で PPP を開始中)」という通知メッセージを表示してユーザーの状態を通知します。

ABORT 'not found'

シェルがエラーに遭遇した場合、伝送を中止します。 

"" "exec pppd"

ピア上で pppd を起動します。

~ \c

PPP がピア上で開始するのを待ちます。 

ISP は、CONNECT \c の直後に PPP を開始することをしばしば「PAP ログイン」といいます。しかし、実際には、PAP ログインは PAP 認証とは無関係です。

ogin:--ogin: pppuser 句は、ダイアルインサーバーからのログインプロンプトに対してユーザー名 pppuser を送信するようにモデムに指示します。pppuser は、ダイアルインサーバー上のリモートユーザー user1 用に作成された専用の PPP ユーザーアカウント名です。ダイアルインサーバー上に PPP ユーザーアカウントを作成する方法については、「ダイアルインサーバーのユーザーを構成する方法」を参照してください。

外部 ISDN TA 用 chat スクリプト

次は、ダイアルアウトマシンから ZyXEL omni.net. ISDN TA を使って呼び出すための chat スクリプトです。


        SAY "Calling the peer\n"
        TIMEOUT 10
        ABORT BUSY
        ABORT 'NO CARRIER'
        ABORT ERROR
        REPORT CONNECT
        "" AT&FB40S83.7=1&K44&J3X7S61.3=1S0=0S2=255
        OK ATDI18882638234
        CONNECT \c
        \r \d\c
        SAY "Connected; running PPP\n"

次の表では、chat スクリプトのパラメータを説明します。

スクリプトの内容 

意味 

SAY "Calling the peer"

ダイアルアウトマシンの画面上にこのメッセージを表示します。 

TIMEOUT 10

初期タイムアウトを 10 秒に設定します。 

ABORT BUSY

モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。 

ABORT 'NO CARRIER'

モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。 

ABORT ERROR

モデムが反対側のピアからこのメッセージを受け取った場合、伝送を中止します。 

REPORT CONNECT

CONNECT 文字列をモデムから収集し、その文字列を出力します。

"" AT&FB40S83.7=1&K44&J3X7S61.3=1S0=0S2=255

この行内の文字は、次を意味します。 

  • &F – 出荷時のデフォルトを使用します

  • B40 – 非同期 PPP 変換を実行します

  • S83.7=1 – スピーチベアラーにデータを使用します

  • &K44 – CCP 圧縮を有効にします

  • &J3 – MP を有効にします

  • X7 – DCE 側のレートを報告します

  • S61.3=1 – パケット断片化を使用します

  • S0=0 – 自動応答を行いません

  • S2=255 – TIES エスケープを無効にします

OK ATDI18882638234

ISDN 呼び出しを行います。マルチリンクでは、2 番目の呼び出しは、同じ電話番号に対して行われます。これは、通常、ほとんどの ISP の条件です。リモートピアが 2 番目の電話番号に異なる番号を要求する場合は、「+nnnn」を付け加えます。nnnn は 2 番目の電話番号を表します。

CONNECT \c

反対側のピアのモデムからの CONNECT メッセージを待ちます。

\r \d\c

CONNECT メッセージの最後まで待ちます。

SAY "Connected; running PPP\n"

ダイアルアウトマシンの画面上にこのメッセージを表示します。 

chat スクリプトのオプションの説明およびその他の詳細な情報については、chat(1M) のマニュアルページを参照してください。expect-send 文字列の説明については、/etc/uucp/Systems ファイルの Chat-Script フィールド」を参照してください。

その他の chat スクリプト例の参照先

数多くの Web サイトで、chat スクリプトのサンプルとスクリプト作成のヒントが提供されています。たとえば、http://ppp.samba.org/ppp/index.html を参照してください。

chat スクリプトの呼び出し

chat スクリプトを呼び出すには、connect オプションを使用します。PPP 構成ファイルまたはコマンド行で connect "chat ..." を使用できます。

chat スクリプトは実行可能ではありませんが、connect によって呼び出されるプログラムは実行可能でなければなりません。connect によって呼び出されるプログラムとして chat ユーティリティーを使用することがあります。この場合、-f オプションを使用して chat スクリプトを外部ファイルに保存すると、chat スクリプトファイルは実行可能にはなりません。

chat(1m) で説明されている chat プログラムは、実際の chat スクリプトを実行します。pppd デーモンは、pppdconnect "chat ..." オプションを検出すると必ず、chat プログラムを起動します。


注 –

PerlTcl などの外部プログラムを使って機能を拡張した chat スクリプトを作成することもできます。Solaris PPP 4.0 で chat ユーティリティーが提供されているのは、ユーザーの便宜を図るためです。


Procedurechat スクリプトを呼び出す方法 (手順)

  1. ASCII ファイル形式で chat スクリプトを作成します。

  2. 次の構文を使用して、任意の PPP 構成ファイル内で chat スクリプトを呼び出します。


    connect 'chat  -f /etc/ppp/chatfile'

    -f フラグは、ファイル名があとに続くことを示します。/etc/ppp/chatfile は、chat ファイルの名前を表します。

  3. 外部 chat ファイルの読み取り権を pppd コマンドを実行するユーザーに与えます。


    注意 – 注意 –

    connect 'chat ...' オプションが特権ソースから呼び出された場合でも、chat プログラムは、常にユーザーの権限と連携して実行します。したがって、-f オプションを使って読み取る個別の chat ファイルを呼び出すユーザーは、そのファイルの読み取り権を備えている必要があります。chat スクリプトにパスワードやその他の機密情報が含まれる場合、この特権はセキュリティーの問題にかかわる可能性があります。



例 22–1 インライン chat スクリプト

次に示すように、chat スクリプトの全会話を 1 つの行に入れることができます。


connect 'chat "" "AT&F1" OK ATDT5551212 CONNECT "\c"'

chat スクリプトは、chat キーワードのあとに続きます。スクリプトは "\c"' で終了します。この形式は、pppd の引数として、PPP 構成ファイルまたはコマンド行で使用できます。


外部ファイル内の chat スクリプト

特定のピアで必要な chat スクリプトが長くて複雑な場合は、スクリプトを別ファイルとして作成することを考えます。外部 chat ファイルは、簡単に維持、作成できます。ハッシュ記号 (#) のあとに続けて chat ファイルについてのコメントを追加できます。

外部ファイルに含まれる chat スクリプトの使用については、「ピアを呼び出すための命令群を作成する方法」の手順を参照してください。

実行可能な chat ファイルの作成

実行可能なスクリプトの chat ファイルを作成して、ダイアルアップリンクが開始されたときに自動的に実行されるようにできます。これにより、接続開始時に、従来の chat スクリプトに含まれるコマンドのほかに、パリティー設定のための stty のような追加コマンドを実行できます。

この実行可能な chat スクリプトは、7 ビット長/ 偶数パリティーを要求する旧スタイルの UNIX システムにログインし、PPP 実行時に 8 ビット長/ パリティーなしに移行します。


#!/bin/sh
chat "" "AT&F1" OK "ATDT555-1212" CONNECT "\c"
stty evenp
chat ogin: pppuser ssword: "\q\U" % "exec pppd"
stty -evenp

Procedure実行可能な chat プログラムを作成する方法

  1. テキストエディタを使用して、前述の例のような実行可能な chat プログラムを作成します。

  2. chat プログラムを実行可能にします。


    # chmod +x /etc/ppp/chatprogram
    
  3. chat プログラムを呼び出します。


    connect /etc/ppp/chatprogram
    

    chat プログラムの場所は、/etc/ppp ファイルシステム内である必要はありません。chat プログラムは任意の場所に保存できます。

接続時の呼び出し元の認証

この節では、PPP 認証プロトコルの動作と認証プロトコルに関連するデータベースについて説明します。

パスワード認証プロトコル (PAP)

PAP 認証は、UNIX の login プログラムと動作が多少似ていますが、PAP はユーザーにシェルアクセスを許可しない点が異なります。PAP は、PPP 構成ファイルと /etc/ppp/pap-secrets ファイルの形式の PAP データベースを使って認証を設定します。また、PAP セキュリティー資格の定義にも /etc/ppp/pap-secrets を使用します。この資格には、ピア名 (PAP の用語では「ユーザー名」)とパスワードが含まれます。また、ローカルマシンへの接続を許可されている呼び出し元に関する情報も含まれます。PAP のユーザー名とパスワードは、パスワードデータベース内の UNIX ユーザー名およびパスワードと同じものにすることも、違うものにすることもできます。

/etc/ppp/pap-secrets ファイル

PAP データベースは、/etc/ppp/pap-secrets ファイルに実装されています。認証が成功するためには、PPP リンクの両側にある各マシンで、/etc/ppp/pap-secrets ファイル内に適切に設定された PAP 資格が必要です。呼び出し元 (認証される側) は、/etc/ppp/pap-secrets ファイルまたは旧バージョンの +ua ファイルの user 列および password 列で資格を提供します。サーバー (認証する側) は、UNIX の passwd データベースまたは PAM 機能により /etc/ppp/pap-secrets 内の情報と対照してこの資格の妥当性を検証します。

/etc/ppp/pap-secrets ファイルの構文は、次のとおりです。


myclient ISP-server mypassword *

パラメータの意味は次のとおりです。

myclient

呼び出し元の PAP ユーザー名。この名前は、呼び出し元の UNIX ユーザー名と同じ場合があります。特に、ダイアルインサーバーが PAP の login オプションを使用する場合は、多くの場合同じになります。

ISP-server

リモートマシンの名前。ダイアルインサーバーである場合がしばしばあります。

mypassword

呼び出し元の PAP パスワード。

*

呼び出し元に関連付けられている IP アドレス。任意の IP アドレスを表すには、アスタリスク (*) を使用します。

PAP パスワードの作成

PAP パスワードは、接続上をクリアテキストで (読み取り可能な ASCII 形式で) 送信されます。呼び出し元 (認証される側) では、PAP パスワードを次のどこかにクリアテキストで格納する必要があります。

サーバー (認証する側) では、PAP パスワードは、次のどれかの方法で隠すことができます。

PAP 認証時の動作

PAP 認証は、次の順序で発生します。

図 22–1 PAP 認証処理

このフロー図に示されている処理については、次で詳しく説明します。

  1. 呼び出し元 (認証される側) がリモートピア (認証する側) を呼び出し、接続ネゴシエーションの一環として PAP ユーザー名とパスワードを伝えます。

  2. ピアは、/etc/ppp/pap-secrets ファイルで呼び出し元の識別情報を検証します。PAP の login オプションを使用する場合は、呼び出し元のユーザー名とパスワードの検証にパスワードデータベースが使用されます。

  3. 認証が成功すると、ピアは呼び出し元との接続ネゴシエーションを継続します。認証に失敗すると、接続は切られます。

  4. (オプション) 呼び出し元がリモートピアからの応答を認証する場合は、リモートピアが自身の PAP 資格を呼び出し元に送信する必要があります。したがって、リモートピアは認証される側になり、呼び出し側は認証する側になります。

  5. (オプション) 最初の呼び出し元が自身の /etc/ppp/pap-secrets を読み取り、リモートピアの識別情報を検証します。


    注 –

    最初の呼び出し元がリモートピアに認証資格を要求する場合は、手順 1 と手順 4 が並行して行われます。


    ピアが認証されると、ネゴシエーションが継続されます。認証されない場合は、接続が切られます。

  6. 呼び出し元とピアのネゴシエーションは、接続の確立に成功するまで継続されます。

/etc/ppp/pap-secrets での login オプションの使用

PAP 資格を認証するための login オプションを PPP 構成ファイルに追加できます。たとえば /etc/ppp/optionslogin を指定した場合、pppd は呼び出し元の PAP 資格が Solaris のパスワードデータベース内に存在するかどうかを検証します。次に、login オプションを追加した /etc/ppp/pap-secrets ファイルの形式を示します。


joe    *  ""  *
sally  *  ""  *
sue    *  ""  *

パラメータの意味は次のとおりです。

呼び出し元

joesallysue は、承認された呼び出し元の名前です。

サーバー

アスタリスク (*) は、任意のサーバー名が有効であることを示します。name オプションは PPP 構成ファイルでは必須ではありません。

パスワード

二重引用符は、任意のパスワードが有効であることを示します。

この列にパスワードがある場合、ピアからのパスワードは、PAP パスワードと UNIX passwd データベースの両方に一致しなければなりません。

IP アドレス

アスタリスク (*) は、任意の IP アドレスが許可されることを示します。

チャレンジハンドシェーク認証プロトコル (CHAP)

CHAP 認証は、「チャレンジ」と「応答」という概念を使用します。つまり、ピア (認証する側) は識別情報を証明するために呼び出し元 (認証される側) にチャレンジします。チャレンジには、乱数、および認証する側によって生成された一意の ID が含まれます。呼び出し元は、ID、乱数、および呼び出し元の CHAP セキュリティー資格を使って適切な応答 (ハンドシェーク) を生成しピアに送信します。

CHAP セキュリティー資格には、CHAP ユーザー名と CHAP「シークレット」が含まれます。CHAP シークレットは、PPP リンクネゴシエーションを行う前に、あらかじめ呼び出し元とピアの両方が知っている任意の文字列です。CHAP セキュリティー資格は、CHAP データベース /etc/ppp/chap-secrets 内で設定します。

/etc/ppp/chap-secrets ファイル

CHAP データベースは、/etc/ppp/chap-secrets ファイルに実装されています。認証が成功するためには、PPP リンクの両側にある各マシンで、/etc/ppp/chap-secrets ファイル内に互いのマシンの CHAP 資格が必要です。


注 –

PAP と異なり、共有シークレットは、両方のピアでクリアテキストでなければなりません。CHAP では、crypt、PAM、または PPP ログインオプションは使用できません。


/etc/ppp/chap-secrets ファイルの構文は、次のとおりです。


myclient myserver secret5748 *

パラメータの意味は次のとおりです。

myclient

呼び出し元の CHAP ユーザー名。呼び出し元の UNIX ユーザー名と同じ名前にすることも、違う名前にすることもできます。

myserver

リモートマシンの名前。ダイアルインサーバーである場合がしばしばあります。

secret5748

呼び出し元の CHAP シークレット。


注 –

PAP パスワードと異なり、CHAP シークレットは送信されません。CHAP シークレットは、ローカルマシンが応答を処理するときに使用されます。


*

呼び出し元に関連付けられている IP アドレス。任意の IP アドレスを表すには、アスタリスク (*) を使用します。

CHAP 認証時の動作

CHAP 認証は、次の順序で発生します。

図 22–2 CHAP 認証手順

このフロー図に示されている処理については、次で詳しく説明します。

  1. 通信を開始しようとする 2 つのピアが、PPP リンクのネゴシエーション時に認証に使用するシークレットについて合意します。

  2. 両方のマシンの管理者が、シークレット、CHAP ユーザー名、その他の CHAP 資格をそれぞれのマシンの /etc/ppp/chap-secrets データベースに追加します。

  3. 呼び出し元 (認証される側) がリモートピア (認証する側) を呼び出します。

  4. 認証する側が乱数と ID を生成し、それらを認証される側にチャレンジとして送信します。

  5. 認証される側は、/etc/ppp/chap-secrets データベース内でピアの名前とシークレットを調べます。

  6. 認証される側は、シークレットとピアの乱数チャレンジに MD5 計算アルゴリズムを適用することにより、応答を計算します。次に、認証される側は、認証する側に結果を応答として送信します。

  7. 認証する側は、/etc/ppp/chap-secrets データベース内で認証される側の名前とシークレットを調べます。

  8. 認証する側は、チャレンジとして生成された数値と /etc/ppp/chap-secrets 内の認証される側のシークレットに MD5 を適用することにより、自身の数値を計算します。

  9. 認証する側は、呼び出し元からの応答と結果を比較します。2 つの数字が同じ場合、ピアは、呼び出し元の認証に成功し、接続ネゴシエーションが続けられます。認証されない場合は、接続が切られます。

呼び出し元の IP アドレス指定スキーマの作成

リモートユーザーごとに一意の IP アドレスを割り当てる代わりに、すべての着呼のために 1 つ以上の IP アドレスを作成することを考えます。専用 IP アドレスは、予想される呼び出し元の数が、ダイアルインサーバー上のシリアルポートとモデムの数を上回る場合、特に重要です。サイトの必要性に応じて、さまざまなシナリオを実現できます。さらに、シナリオは、相互に排他的ではありません。

呼び出し元への IP アドレスの動的割り当て

動的アドレス指定は、/etc/ppp/options.ttyname で定義されている IP アドレスを各呼び出し元に割り当てます。動的アドレス指定は、シリアルポート単位で発生します。シリアル回線に呼が着信すると、呼び出しを処理するシリアルインタフェース用に /etc/ppp/options.ttyname ファイルで定義されている IP アドレスが呼び出し元に与えられます。

たとえば、ダイアルインサーバーに、着呼に対してダイアルアップサービスを提供するシリアルインタフェースが 4 つあると仮定します。

この以前のアドレス指定スキーマでは、/dev/term/c のシリアルインタフェースに着信する呼び出しは、呼び出しを行なっている間中、IP アドレス 10.1.1.3 が与えられます。最初の呼び出し元が回線を切ったあと、次にシリアルインタフェース /dev/term/c に着信する呼も、IP アドレス 10.1.1.3 を与えられます。

動的アドレス指定には、次のような利点があります。

呼び出し元への IP アドレスの静的割り当て

サイトが PPP 認証を実装する場合は、個々の呼び出し元に特定の「静的」 IP アドレスを割り当てることができます。この場合、ダイアルアウトマシンがダイアルインサーバーを呼び出すたびに、呼び出し元は同じ IP アドレスを受け取ります。

静的アドレスは、pap-secrets または chap-secrets のどちらかのデータベースで実装します。次に、静的 IP アドレスを定義した /etc/ppp/pap-secrets ファイルの例を示します。


joe    myserver  joepasswd   10.10.111.240
sally  myserver  sallypasswd 10.10.111.241
sue    myserver  suepasswd   10.10.111.242
呼び出し元

joesallysue は、承認された呼び出し元の名前です。

サーバー

myserver は、サーバーの名前を示します。

パスワード

joepasswdsallypasswdsuepasswd は、各呼び出し元のパスワードを示します。

IP アドレス

10.10.111.24010.10.111.24110.10.111.242 は、各呼び出し元に割り当てられた IP アドレスです。

次に、静的 IP アドレスを定義した /etc/ppp/chap-secrets ファイルの例を示します。


account1 myserver secret5748  10.10.111.244
account2 myserver secret91011 10.10.111.245
呼び出し元

account1account2 は、呼び出し元の名前を示します。

サーバー

myserver は、各呼び出し元のサーバーの名前を示します。

パスワード

secret5748secret91011 は、各呼び出し元の CHAP シークレットを示します。

IP アドレス

10.10.111.24410.10.111.245 は、各呼び出し元の IP アドレスです。

sppp ユニット番号による IP アドレスの割り当て

PAP 認証または CHAP 認証を使用している場合は、sppp ユニット番号を使って IP アドレスを呼び出し元に割り当てることができます。次にこの方法の例を示します。


myclient ISP-server mypassword 10.10.111.240/28+

正符号 (+) は、ユニット番号が IP アドレスに追加されていることを示します。次の事項に注意してください。

DSL サポート用の PPPoE トンネルの作成

PPPoE を使用することにより、1 台以上の DSL モデムを使用している複数のクライアントに PPP 超高速デジタルサービスを提供できます。PPPoE は、3 つの関係者、つまり企業、電話会社、サービスプロバイダを通して Ethernet トンネルを作成することにより、このサービスを実現します。

この節では、PPPoE コマンドおよびファイルについて詳しく説明します。概要を次の表に示します。

表 22–2 PPPoE のコマンドと構成ファイル

ファイルまたはコマンド  

説明 

参照先 

/etc/ppp/pppoe

PPPoE がシステムに設定したすべてのトンネルに対してデフォルトで適用される特性を含むファイル 

/etc/ppp/pppoe ファイル」

/etc/ppp/pppoe.device

PPPoE がトンネルに使用する特定のインタフェースの特性を含むファイル 

/etc/ppp/pppoe.device ファイル」

/etc/ppp/pppoe.if

PPPoE が設定したトンネルが動作する Ethernet インタフェースを一覧表示したファイル 

/etc/ppp/pppoe.if ファイル」

/usr/sbin/sppptun

PPPoE トンネルに関係する Ethernet インタフェースを設定するためのコマンド 

/usr/sbin/sppptun コマンド」

/usr/lib/inet/pppoed

PPPoE を使ってトンネルを設定するためのコマンドとオプション 

/usr/lib/inet/pppoed デーモン」

PPPoE のインタフェースを設定するためのファイル

PPPoE トンネルの両端で使用されるインタフェースは、トンネルが PPP 通信をサポートする前に、あらかじめ設定しておく必要があります。設定には、/usr/sbin/sppptun および /etc/ppp/pppoe.if ファイルを使用します。これらのツールを使用して、すべての Solaris PPPoE クライアントおよび PPPoE アクセスサーバー上の Ethernet インタフェースを設定する必要があります。

/etc/ppp/pppoe.if ファイル

/etc/ppp/pppoe.if ファイルは、ホスト上の PPPoE トンネルで使用されるすべての Ethernet インタフェースの名前を一覧表示します。このファイルはシステムのブート時に処理され、ファイルに一覧表示されているインタフェースは PPPoE トンネルで使用するために plumb されます。

/etc/ppp/pppoe.if は明示的に作成する必要があります。各行ごとにインタフェース名を 1 つずつ入力して PPPoE 用に設定します。

次に、PPPoE トンネルに 3 つのインタフェースを提供するサーバーの /etc/ppp/pppoe.if ファイルの例を示します。


# cat /etc/ppp/pppoe.if
hme1
hme2
hme3

PPPoE クライアントは通常、/etc/ppp/pppoe.if に一覧表示されているインタフェースを 1 つだけ使用します。

/usr/sbin/sppptun コマンド

/usr/sbin/sppptun コマンドを使用すると、PPPoE トンネルで使用する Ethernet インタフェースを手動で plumb したり unplumb したりできます。これに対して、/etc/ppp/pppoe.if はシステムの起動時だけ読み取られます。これらのインタフェースは、/etc/ppp/pppoe.if に一覧表示されているインタフェースと一致する必要があります。

sppptun は、PPPoE トンネルで使用する Ethernet インタフェースを ifconfig コマンドと同様の方法で plumb します。ifconfig とは異なり、2 つの Ethernet プロトコル番号が必要なため、PPPoE をサポートするにはインタフェースを 2 回 plumb する必要があります。

sppptun の基本的な構文を次に示します。


# /usr/sbin/sppptun plumb pppoed device-name
     device-name:pppoed
# /usr/sbin/sppptun plumb pppoe device-name
     device-name:pppoe

この構文で、device-name は PPPoE に plumb されるデバイス名です。

上の 1 つめの sppptun コマンドを実行したときは、発見プロトコル pppoed がインタフェースに plumb されます。2 つめの sppptun を実行したときは、セッションプロトコル pppoe が plumb されます。sppptun は、plumb されたインタフェースの名前を表示します。必要な場合は、この名前を使ってインタフェースを unplumb します。

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

インタフェースを管理する sppptun コマンドの例

次の例は、/usr/sbin/sppptun を使用して PPPoE のインタフェースを手動で plumb します。


# /usr/sbin/sppptun plumb pppoed hme0
hme0:pppoed
# /dev/sppptun plumb pppoe hme0
 hme0:pppoe

次の例は、PPPoE に plumb されたアクセスサーバー上のインタフェースを表示します。


# /usr/sbin/sppptun query
hme0:pppoe
hme0:pppoed
hme1:pppoe
hme1:pppoed
hme2:pppoe
hme2:pppoed

次の例は、インタフェースを unplumb する方法を示しています。


# sppptun unplumb hme0:pppoed
# sppptun unplumb hme0:pppoe

PPPoE アクセスサーバーのコマンドとファイル

DSL のサービスまたはサポートを顧客に提供するサービスプロバイダは、Solaris PPPoE を実行するアクセスサーバーを使用できます。PPPoE アクセスサーバーとクライアントは、従来のクライアントとサーバーの関係で機能します。この関係は、ダイアルアップリンクでのダイアルアウトマシンとダイアルインサーバーの関係に似ています。つまり、ある PPPoE システムが通信を開始し、別の PPPoE システムが応答します。これに対して、PPP プロトコルにはクライアントとサーバーの関係という概念はなく、両方のマシンが同等のピアとみなされます。

PPPoE アクセスサーバーを設定するコマンドおよびファイルには、次が含まれます。

/usr/lib/inet/pppoed デーモン

pppoed デーモンは、将来の PPPoE クライアントからサービス提供用ブロードキャストを受け取ります。さらに、pppoed は PPPoE トンネルのサーバー側とネゴシエーションし、PPP デーモン pppd をそのトンネル上で実行します。

pppoed サービスは、/etc/ppp/pppoe および /etc/ppp/pppoe.device ファイルで設定します。システムのブート時に /etc/ppp/pppoe が存在する場合は、pppoed が自動的に実行します。コマンド行で /usr/lib/inet/pppoed と入力することにより、pppoed デーモンを明示的に実行することもできます。

/etc/ppp/pppoe ファイル

/etc/ppp/pppoe ファイルは、アクセスサーバーが提供するサービスと、PPP が PPPoE トンネル上でどのように実行するかを定義するオプションを説明します。インタフェースごとに個別にサービスを定義することも、広域的にアクセスサーバー上のすべてのインタフェースに対してサービスを定義することもできます。アクセスサーバーは、将来の PPPoE クライアントからのブロードキャストに応答して、/etc/ppp/pppoe ファイル内の情報を送信します。

次に、/etc/ppp/pppoe の基本的な構文を示します。


global-options
service service-name
    service-specific-options
    device interface-name
  

パラメータの意味は次のとおりです。

global-options

/etc/ppp/pppoe ファイルのデフォルトのオプションを設定します。このオプションには、pppoed または pppd で使用可能なオプションはすべて使用できます。オプションの完全なリストについては、pppoed(1M) および pppd(1M) のマニュアルページを参照してください。

たとえば、この global-options には、PPPoE トンネルで使用できる Ethernet インタフェースを一覧表示する必要があります。/etc/ppp/pppoe でデバイスを定義しないと、インタフェースでサービスを提供できません。

devices をグローバルオプションとして定義するには、次の形式を使用します。


device interface <,interface>

interface は、サービスが将来の PPPoE クライアントを待つインタフェースを指定します。複数のインタフェースがサービスに関連付けられている場合は、名前をコンマで区切って指定します。

service service-name

service-name というサービスの定義を開始します。service-name には、提供されるサービスに適した任意の文字列を指定できます。

service-specific-options

このサービスに固有の PPPoE および PPP のオプションを表示します。

device interface-name

上記で一覧表示したサービスを利用できるインタフェースを指定します。

/etc/ppp/pppoe のその他のオプションについては、pppoed(1M) および pppd(1M) のマニュアルページを参照してください。

次に、典型的な /etc/ppp/pppoe ファイルの例を示します。


例 22–2 基本的な /etc/ppp/pppoe ファイル


device hme1,hme2,hme3
service internet
   pppd "name internet-server"
service intranet
   pppd "192.168.1.1:"
service debug
   device hme1
   pppd "debug name internet-server"

このファイルでは、次の値が適用されています。

hme1,hme2,hme3

PPPoE トンネルに使用されるアクセスサーバー上の 3 つのインタフェース。

service internet

想定クライアントに対して internet というサービスを通知します。また、サービスを提供するプロバイダは internet の定義方法についても決定します。たとえば、プロバイダは、internet とは、インターネットへのアクセスだけでなく、さまざまな IP サービスを意味するものと解釈する場合があります。

pppd

呼び出し元が pppd を呼び出したときに使用されるコマンド行オプションを設定します。"name internet-server" オプションは、ローカルマシン (アクセスサーバー) の名前を internet-server と付けます。

service intranet

intranet という別のサービスを想定クライアントに通知します。

pppd "192.168.1.1:"

呼び出し元が pppd を呼び出したときに使用されるコマンド行オプションを設定します。呼び出し元が pppd を呼び出すと、ローカルマシン (アクセスサーバー) の IP アドレスとして 192.168.1.1 が設定されます。

service debug

PPPoE 用に定義されているインタフェースに 3 番目のサービス、デバッグを通知します。

device hme1

PPPoE トンネルに対するデバッグを hme1 に限定します。

pppd "debug name internet-server"

呼び出し元が pppd を起動したときに使用されるコマンド行オプション、この場合は PPP デバッグをローカルマシン internet-server に設定します。

/etc/ppp/pppoe.device ファイル

/etc/ppp/pppoe.device ファイルは、PPPoE アクセスサーバーの 1 つのインタフェース上で提供されるサービスを説明します。PPP が PPPoE トンネル上でどのように実行するかを定義するオプションも説明します。/etc/ppp/pppoe. device はオプションのファイルで、グローバルの /etc/ppp/pppoe とまったく同様に動作します。ただし、/etc/ppp/pppoe.device がインタフェース用に定義されている場合、そのインタフェースでは、このファイルのパラメータが、/etc/ppp/pppoe で定義されているグローバルパラメータより優先されます。

次に、/etc/ppp/pppoe.device の基本的な構文を示します。


service service-name
     service-specific-options
service another-service-name
      service-specific-options    

上記の構文と /etc/ppp/pppoe の構文の違いは、/etc/ppp/pppoe ファイル」で示した device オプションを使用できない点だけです。

pppoe.so プラグイン

pppoe.so は PPPoE 共有オブジェクトファイルで、PPPoE のアクセスサーバーおよびクライアントによって呼び出されます。このファイルは、MTU および MRU を 1492 に制限し、ドライバからのパケットにフィルタをかけ、pppoed とともに PPPoE トンネルをネゴシエートします。アクセスサーバー側では、pppoe.sopppd デーモンによって自動的に呼び出されます。

アクセスサーバー構成のための PPPoE および PPP ファイルの使用

この節では、あるアクセスサーバーを構成するために使用するすべてのファイルのサンプルを紹介します。このアクセスサーバーはマルチホームで、3 つのサブネット greenorange、および purple が接続されています。pppoed は、サーバー上で root として実行します。これはデフォルトの動作です。

PPPoE クライアントは、hme0 および hme1 インタフェースを通じて orange および purple ネットワークにアクセスできます。クライアントは、標準の UNIX ログインを使ってサーバーにログインします。サーバーは、クライアントを PAP を使って認証します。

green ネットワークは、クライアントに通知されません。クライアントが green にアクセスできるためには、直接「green-net」を指定し、CHAP 認証資格を提供しなければなりません。さらに、クライアント joe および mary だけが、静的 IP アドレスを使用して green ネットワークにアクセスできます。


例 22–3 アクセスサーバー用の /etc/ppp/pppoe ファイル


service orange-net
     device hme0,hme1
     pppd "require-pap login name orange-server orange-server:"
service purple-net
     device hme0,hme1 
     pppd "require-pap login name purple-server purple-server:"
service green-net
     device hme1 
     pppd "require-chap name green-server green-server:"
     nowildcard

このサンプルは、アクセスサーバーから使用できるサービスを説明します。1 番目の service セクションは、orange ネットワークのサービスを説明します。


service orange-net
     device hme0,hme1
     pppd "require-pap login name orange-server orange-server:"

クライアントは、hme0 および hme1 インタフェース上で orange ネットワークにアクセスできます。pppd コマンドに指定されているオプションにより、サーバーは、想定クライアントからの PAP 資格を要求します。また、pppd オプションはサーバーの名前を orange-server に設定します。この名前は pap-secrets ファイルで使用されます。

purple ネットワーク用の service セクションは、ネットワーク名とサーバー名が異なる以外は、orange ネットワーク用の service セクションと同じです。

次の service セクションは、green ネットワークのサービスを説明します。


service green-net
     device hme1 
     pppd "require-chap name green-server green-server:"
     nowildcard

このセクションは、クライアントのアクセスをインタフェース hme1 に限定しています。pppd コマンドに指定されているオプションにより、サーバーは、想定クライアントからの CHAP 資格を要求します。また、pppd オプションはサーバー名を green-server に設定しています。この名前は chap-secrets ファイルで使用されます。nowildcard オプションは、green ネットワークの存在をクライアントに通知しないことを指定します。

このアクセスサーバーのシナリオでは、次のような /etc/ppp/options ファイルを設定する場合があります。


例 22–4 アクセスサーバー用の /etc/ppp/options ファイル


 	auth
 	proxyarp
 	nodefaultroute
 	name no-service	# don't authenticate otherwise

name no-service オプションは、通常、PAP または CHAP 認証時に検索されるサーバー名を無効にします。サーバーのデフォルト名は、/usr/bin/hostname コマンドを使って得られます。前述の例の name オプションは、サーバー名を no-service に変更します。no-service は、pap または chap-secrets ファイルで見つかる可能性がほとんどない名前です。この処理により、任意のユーザーが pppd を実行したり、/etc/ppp/options で設定されている auth および name オプションを上書きするのを防ぐことができます。pppd は、no-service のサーバー名ではクライアントのシークレットを見つけることができないため、失敗します。

このアクセスサーバーのシナリオでは、次の /etc/hosts ファイルを使用します。


例 22–5 アクセスサーバー用の /etc/hosts ファイル


     172.16.0.1	orange-server
     172.17.0.1	purple-server
     172.18.0.1	green-server
     172.18.0.2	joes-pc
     172.18.0.3	marys-pc

次に、orange および purple ネットワークにアクセスしようとするクライアントの PAP 認証に使用する /etc/ppp/pap-secrets ファイルを示します。


例 22–6 アクセスサーバー用の /etc/ppp/pap-secrets ファイル


* orange-server "" 172.16.0.2/16+
* purple-server "" 172.17.0.2/16+

次に、CHAP 認証に使用される /etc/ppp/chap-secrets ファイルを示します。joe および mary というクライアントだけがファイルに一覧表示されていることに注意してください。


例 22–7 アクセスサーバー用の /etc/ppp/chap-secrets ファイル


 joe green-server "joe's secret" joes-pc
mary green-server "mary's secret" marys-pc

PPPoE クライアントのコマンドとファイル

DSL モデム上で PPP を実行するには、マシンが PPPoE クライアントになる必要があります。PPPoE を実行するためにインタフェースを plumb し、次に pppoec ユーティリティーを使ってアクセスサーバーの存在を「発見」する必要があります。その後、クライアントは DSL モデム上に PPPoE トンネルを作成し PPP を実行できます。

PPPoE クライアントは、従来のクライアント - サーバーモデルでアクセスサーバーに接続します。PPPoE トンネルはダイアルアップリンクではありませんが、ほぼ同じような方法で構成され、操作されます。

PPPoE クライアントを設定するコマンドおよびファイルには、次が含まれます。

/usr/lib/inet/pppoec ユーティリティー

/usr/lib/inet/pppoec ユーティリティーは、PPPoE トンネルのクライアント側をネゴシエーションします。pppoec は、Solaris PPP 4.0 の chat ユーティリティーに似ています。pppoec は直接起動しません。直接起動するのではなく、pppdconnect オプションの引数として /usr/lib/inet/pppoec を起動します。

pppoe.so 共有オブジェクト

pppoe.so は PPPoE 共有オブジェクトで、PPPoE によって読み込まれ、PPPoE 機能をアクセスサーバーとクライアントに提供します。共有オブジェクト pppoe.so は、MTU および MRU を 1492 に制限し、ドライバからのパケットにフィルタをかけ、実行時 PPPoE メッセージを処理します。

クライアント側では、ユーザーが plugin pppoe.so オプションを指定すると、pppdpppoe.so を読み込みます。

アクセスサーバーピアを定義するための /etc/ppp/peers/peer-name ファイル

アクセスサーバーが pppoec によって発見されるように定義する場合は、pppoec および pppd デーモンの両方に適用されるオプションを使用します。アクセスサーバーの /etc/ppp/peers/peer-name ファイルは次のパラメータを必要とします。

/etc/ppp/peers/ peer-name ファイル内の残りのパラメータは、サーバー上の PPP リンクに適用されます。ダイアルアウトマシン上の /etc/ppp/peers/peer-name と同じオプションを使用します。オプションの数を PPP リンクで必要な最小数に制限するようにしてください。

次の例は、「PPPoE アクセスサーバーピアを定義する方法」で紹介されています。


例 22–8 リモートアクセスサーバーを定義するための /etc/ppp/peers/peer-name


# cat /etc/ppp/peers/dslserve
sppptun
plugin pppoe.so
connect "/usr/lib/inet/pppoec hme0"
noccp
noauth
user Red
password redsecret
noipdefault
defaultroute

このファイルは、アクセスサーバー dslserve に PPPoE トンネルと PPP リンクを設定するときに使用するパラメータを定義します。オプションには、次が含まれます。

オプション 

説明 

sppptun

sppptun をシリアルデバイスの名前として定義します。

plugin pppoe.so

pppdpppoe.so 共有オブジェクトを読み込むように指示します。

connect "/usr/lib/inet/pppoec hme0"

pppoec を実行し、PPPoE トンネルおよび PPP リンク用のインタフェースとして hme0 を指定します。

noccp

接続上で CCP 圧縮をオフに設定します。 


注 –

多くの ISP は独自の圧縮アルゴリズムだけを使用します。公開された CCP アルゴリズムをオフにすると、ネゴシエーションの時間を節約し、偶発的な相互運用性の問題を避けることができます。


noauth

pppd 認証資格をアクセスサーバーに要求するのを 停止します。ほとんどの ISP は認証資格を顧客に提供しません。

user Red

アクセスサーバーによる PAP 認証に必要なクライアントのユーザー名として Red の名前を設定します。

password redsecret

PAP 認証のためにアクセスサーバーに提供されるパスワードとして redsecret を定義します。

noipdefault

初期 IP アドレスとして 0.0.0.0 を割り当てます。 

defaultroute

IPCP ネゴシエーション後にデフォルトの IPv4 経路指定をインストールするよう pppd に指示します。接続がシステムのインターネットへの接続である場合、/etc/ppp/peers/peer-name 内に defaultroute を含める必要があります。PPPoE クライアントの場合これにあてはまります。