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

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

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

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

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

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

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

次の表に、PPP 構成ファイルとコマンドをリストします。

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

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

pppd options

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

PPP オプションの処理方法

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

PPP オプションの処理方法

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

  1. 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 でなければ、特権が与えられません。

オプション 

状態 

意味 

domain

特権がある 

使用には特権が必要 

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 はスーパーユーザーが所有してください。/etc/ppp/options で定義するオプションは、他のすべてのファイルおよびコマンド行内で定義される同じオプションより優先されます。

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


注 -

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


シリアル回線を介した通信を定義する方法の説明に従って、テキストエディタを使用して /etc/ppp/options を作成する必要があります。マシンがグローバルオプションを必要としない場合は、空の /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 サンプルファイルの場所

表 36-2 /etc/ppp/options ファイルの例

/etc/ppp/options の例

参照先 

ダイアルアウトマシン用 

シリアル回線を介した通信を定義する方法

ダイアルインサーバー用 

シリアル回線を介した通信を定義する方法 (ダイアルインサーバー)

ダイアルインサーバー上での PAP サポート用 

PPP 構成ファイルに PAP サポートを追加する方法 (ダイアルインサーバー)

ダイアルアウトマシン上での PAP サポート用 

PPP 構成ファイルに PAP サポートを追加する方法 (ダイアルアウトマシン)

ダイアルインサーバー上での CHAP サポート用 

PPP 構成ファイルに CHAP サポートを追加する方法 (ダイアルインサーバー)

/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 サンプルファイルの場所

表 36-3 /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 サンプルファイルの場所

表 36-4 /etc/ppp/peers/peer-name ファイルの例

/etc/ppp/peers/peer-name の例

参照先 

ダイアルアウトマシン用 

個々のピアとの接続を定義する方法

専用回線上のローカルマシン用 

専用回線上のマシンの設定方法

ダイアルアウトマシン上での PAP 認証サポート用 

PPP 構成ファイルに PAP サポートを追加する方法 (ダイアルアウトマシン)

ダイアルアウトマシン上での CHAP 認証サポート用 

PPP 構成ファイルに CHAP サポートを追加する方法 (ダイアルアウトマシン)

クライアントシステムでの PPPoE サポート用 

PPPoE クライアントの設定

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

この節では、モデムの設定について説明します。

モデム速度の設定

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

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

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

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

ダイアルアウトマシンとそのリモートピアは、さまざまな命令をネゴシエーションしたり交換したりして 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'

ダイアル時にモデムが '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

ダイアル時にモデムが '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=1

S0=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) のマニュアルページを参照してください。送信予期文字列の説明については、UUCP Chat-Script フィールドを参照してください。

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

数多くの Web サイトで、chat スクリプトのサンプルとスクリプト作成のヒントが提供されています。

オーストラリア国立大学の Web サイトから利用できる PPP FAQ (Frequently Asked Questions) のページ (URL) も参考になります。

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 ユーティリティが提供されているのは、ユーザーの便宜を図るためです。


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

  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 スクリプトにパスワードやその他の機密情報が含まれる場合、この特権はセキュリティの問題にかかわる可能性があります。


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

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

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

インライン chat スクリプト

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


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

実行可能な 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

実行可能な 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 ファイルの構文は、次のとおりです。

表 36-5 /etc/ppp/pap-secrets の構文

呼び出し元 

サーバー 

パスワード 

IP アドレス 

myclient

ISP-server

mypassword

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

myclient

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

ISP-server

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

mypassword

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

IP address

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

PAP パスワードの作成

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

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

PAP 認証時の動作

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

図 36-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 ファイルの形式を示します。

表 36-6 login オプションを追加した /etc/ppp/pap-secrets

呼び出し元 

サーバー 

パスワード 

IP アドレス 

joe 

" " 

sally 

" " 

sue 

" " 

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

呼び出し元

すべての承認された呼び出し元の名前 

サーバー

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

パスワード

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

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

IP アドレス

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

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

CHAP 認証は、チャレンジ応答という概念を使用します。つまり、ピア (認証する側) は識別情報を証明するために呼び出し元 (認証される側) にチャレンジします。チャレンジには、乱数、および認証する側によって生成された一意の ID が含まれます。呼び出し元は、ID、乱数、および呼び出し元の 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 ファイルの構文は、次のとおりです。

表 36-7 /etc/ppp/chap-secrets の構文

呼び出し元 

サーバー 

CHAP シークレット  

IP アドレス 

myclient

myserver

secret5748

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

myclient

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

myserver

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

secret5748

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


注 -

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


IP address

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

CHAP 認証時の動作

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

図 36-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 ファイルの例です。

呼び出し元 

サーバー 

パスワード 

IP アドレス 

joe

myserver

joepasswd

10.10.111.240 

sally

myserver

sallypasswd

10.10.111.241 

sue

myserver

suepasswd

10.10.111.242 

以下は、静的 IP アドレスを定義した /etc/ppp/chap-secrets ファイルの例です。

呼び出し元 

サーバー 

CHAP シークレット 

IP アドレス  

account1

myserver

secret5748

10.10.111.244 

account2

myserver

secret91011

10.10.111.245 

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

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

呼び出し元 

サーバー 

パスワード 

IP アドレス 

myclient

ISP-server

mypassword

10.10.111.240/28+  

正符号 (+) は、ユニット番号が IP アドレスに追加されていることを示します。アドレス 10.10.111.240 から 10.10.111.255 までがリモートユーザーに割り当てられます。sppp0 は IP アドレス 10.10.111.240 を取得します。sppp1 は IP アドレス 10.10.111.241 を取得し、以下同様に続きます。

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

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

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

表 36-8 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 用に設定します。

/etc/ppp/pppoe.if ファイルサンプル

次に、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 コマンドサンプル

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) のマニュアルページを参照

たとえば、グローバルオプションには、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 ファイルの例を示します。


例 36-4 基本的な /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 の定義についても決定する。たとえば、プロバイダは、インターネットへのアクセスだけでなく、さまざまな IP サービスを意味する internet サービスを提供できる

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 アクセスサーバーのインタフェース上で提供されるサービスと、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 ネットワークにアクセスできます。


例 36-5 アクセスサーバー用の /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 ファイルを設定する場合があります。


例 36-6 アクセスサーバー用の /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 ファイルを使用します。


例 36-7 アクセスサーバー用の /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 ファイルを示します。


例 36-8 アクセスサーバー用の /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 というクライアントだけがファイルにリストされていることに注意してください。


例 36-9 アクセスサーバー用の /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 アクセスサーバーピアを定義する方法で紹介されています。


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


# vi /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 クライアントの場合これにあてはまる