この章では、Solaris PPP 4.0 について詳細で概念的な情報を提供します。トピックは次のとおりです。
Solaris PPP 4.0 には、PPP 構成を定義するのに使用するオプションが多数含まれます。これらのオプションは、PPP 構成ファイルまたはコマンド行で使用するほか、ファイルでの使用とコマンド行での使用を組み合わせることもできます。この節では、PPP オプションの構成ファイルでの使用と PPP コマンドの引数としての使用について詳細に説明します。
Solaris PPP 4.0 は柔軟に構成できます。PPP オプションを次の場所で定義できます。
PPP 構成ファイル
コマンド行で実行される PPP コマンド
前記 2 つの場所の組み合わせ
次の表に、PPP 構成ファイルとコマンドをリストします。
表 32–1 PPP 構成ファイルとコマンドの概要
PPP ファイルの説明については、pppd(1M) のマニュアルページを参照してください。 pppd(1M) には、pppd で使用できるすべてのオプションに関する詳細な説明もあります。すべての PPP 構成ファイルのサンプルテンプレートは、/etc/ppp にあります。
Solaris PPP 4.0 のすべての操作は、ユーザーが pppd コマンドを実行すると起動する pppd デーモンによって処理されます。ユーザーがリモートピアを呼び出すと、以下が発生します。
/etc/ppp/options
$HOME/.ppprc
/etc/ppp/options または $HOME/.ppprc の中で file または call オプションによって開かれたファイル
pppd がコマンド行を走査して使用中のデバイスを判定する。デーモンはまだ遭遇したオプションを解釈しない
pppd は次の条件に基づいて使用するシリアルデバイスを検出しようとする
シリアルデバイスがコマンド行またはそれ以前に処理した構成ファイルで指定されている場合、pppd はそのデバイス名を使用する
シリアルデバイスが指定されていない場合、pppd はコマンド行で notty、pty、または socket オプションを検索する。これらのオプションが指定されている場合、pppd はデバイス名が存在しないとみなす
上記以外の場合で、標準入力が tty に接続されていることを pppd が検出した場合は、tty の名前を使用する
それでも pppd がシリアルデバイスを見つけられない場合は、接続を終了し、エラーを発生させる
pppd は次に、/etc/ppp/options.ttyname ファイルが存在するかどうかをチェックする。ファイルが見つかると、pppd はそのファイルを構文解析する
pppd はコマンド行のオプションを処理する
pppd はリンク制御プロトコル (LCP) のネゴシエーションを行い、接続を確立する
(省略可能) 認証が必要な場合、pppd は、/etc/ppp/pap-secrets または /etc/ppp/chap-secrets を読み取り、反対側のピアを認証する
pppd デーモンがコマンド行または他の構成ファイルで call peer-name オプションに遭遇すると、/etc/ppp/peers/peer-name ファイルが読み取られます。
Solaris PPP 4.0 構成には特権の概念が含まれます。特権は、特に、同じオプションが複数の場所で呼び出されたときに、構成オプションの優先度を判定します。特権ソースから呼び出されたオプションは、非特権ソースから呼び出された同じオプションよりも優先されます。
唯一の特権ユーザーは、UID の値が 0 のスーパーユーザー (root) です。その他のすべてのユーザーは特権を与えられません。
次に、所有者にかかわらず特権を与えられる構成ファイルを示します。
/etc/ppp/options
/etc/ppp/options.ttyname
/etc/ppp/peers/peer-name
$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 が指定されている場合、特権がある |
特権のない使用はこのオプションを優先指定できない |
nodefaultroute が特権ファイルで、または特権ユーザーによって設定されている場合、特権がある |
非特権ユーザーはこのオプションを優先指定できない |
|
disconnect |
特権ファイルで、または特権ユーザーによって設定されている場合、特権がある |
非特権ユーザーはこのオプションを優先指定できない |
bsdcomp |
特権ファイルで、または特権ユーザーによって設定されている場合、特権がある |
非特権ユーザーは特権ユーザーが指定したサイズより大きいコードサイズを指定できない |
deflate |
特権ファイルで、または特権ユーザーによって設定されている場合、特権がある |
非特権ユーザーは特権ユーザーが指定したサイズより大きいコードサイズを指定できない |
connect |
特権ファイルで、または特権ユーザーによって設定されている場合、特権がある |
非特権ユーザーはこのオプションを優先指定できない |
init |
特権ファイルで、または特権ユーザーによって設定されている場合、特権がある |
非特権ユーザーはこのオプションを優先指定できない |
pty |
特権ファイルで、または特権ユーザーによって設定されている場合、特権がある |
非特権ユーザーはこのオプションを優先指定できない |
welcome |
特権ファイルで、または特権ユーザーによって設定されている場合、特権がある |
非特権ユーザーはこのオプションを優先指定できない |
ttyname |
特権ファイルで設定されている場合、特権がある
非特権ファイルで設定されている場合、特権がない |
pppd を誰が起動したかに関係なく、スーパーユーザー特権で開かれる
pppd を起動したユーザーの特権で開かれる |
ローカルマシン上のすべての PPP 通信にグローバルオプションを定義するには、/etc/ppp/options ファイルを使用します。/etc/ppp/options は特権ファイルです。pppd の規則ではありませんが、/etc/ppp/options はスーパーユーザーが所有してください。/etc/ppp/options で定義するオプションは、他のすべてのファイルおよびコマンド行内で定義される同じオプションより優先されます。
/etc/ppp/options で使用する可能性がある代表的なオプションを次に示します。
lock – UUCP 形式のファイルロックを有効にする
noauth – マシンが呼び出し元を認証しないことを示す
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 ファイルに関する有用なコメントのほかに、グローバルな /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 の例 |
参照先 |
---|---|
ダイアルアウトマシン用 | |
ダイアルインサーバー用 | |
ダイアルインサーバー上での PAP サポート用 | |
ダイアルアウトマシン上での PAP サポート用 | |
ダイアルインサーバー上での CHAP サポート用 |
シリアル回線上の通信の特性を /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/a、cua/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 ファイルを個別に作成することもできます。通常のオプションは次のとおりです。
ダイアルインサーバーが必要とする IP アドレス
シリアルポート ttyname に着信する呼び出し元に特定の IP アドレスを使用させる必要がある場合は、このオプションを設定する。使用するアドレス空間により、予想される呼び出し元の数に比べて、PPP で使用可能な IP アドレスの数に制限がある場合がある。その場合は、ダイアルインサーバー上の PPP で使用されるシリアルインタフェースごとに IP アドレスを割り当てることを考える。この割り当ては、PPP に動的なアドレス指定を実装する
asyncmap map_value
asyncmap オプションは、特定のモデムまたは ISDN TA がシリアル回線上で受け取らない制御文字を割り当てる。xonxoff オプションを使用すると、pppd は自動的に 0xa0000 の asyncmap を設定する。
map_value は、16 進数で入力し、問題のある制御文字を指定する
init "chat -U -f /etc/ppp/mychat"
init オプションは、chat —U コマンド内の情報を使用して、シリアル回線上で通信を開始するようにモデムに指示する。モデムは、/etc/ppp/mychat ファイル内の chat 文字列を使用する
pppd(1M) のマニュアルページにリストされているセキュリティパラメータ
ダイアルアウトマシンでは、モデムが接続されているシリアルポート用に /etc/ppp/options.ttyname ファイルを作成することも、あるいは /etc/ppp/options.ttyname を使用しないでおくこともできます。
Solaris PPP 4.0 が正常に動作するうえで、/etc/ppp/options.ttyname ファイルは必要ありません。 ダイアルアウトマシンがPPP 用のシリアル回線を 1 つだけ持 ち、オプションはほとんど必要ない場合、必要なオプションを別の構成ファイルまたはコマンド行で指定することができます。
/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 の例 |
参照先 |
---|---|
ダイアルアウトマシン用 | |
ダイアルインサーバー用 |
この節では、ダイアルインサーバー上でユーザーを設定する方法について詳細に説明します。
$HOME/.ppprc ファイルは、独自の PPP オプションを設定するユーザーを対象としています。管理者が、ユーザーのために $HOME/.ppprc を設定することもできます。
$HOME/.ppprc 内のオプションは、ファイルを呼び出しているユーザーに特権がある場合だけ、特権を与えられます。
呼び出し元が pppd コマンドを使って呼び出しを開始した場合、pppd デーモンは、.ppprc ファイルを 2 番目に確認します。
ダイアルインサーバーで $HOME/.ppprc を設定する手順については、ダイアルインサーバーのユーザーを設定するを参照してください。
$HOME/.ppprc は、ダイアルアウトマシン上で Solaris PPP 4.0 が正常に動作するのに必要ではありません。
ダイアルアウトマシンでは、特別な場合を除いて、$HOME/.ppprc は必要ありません。以下を行う場合は、1 つ以上の .ppprc ファイルを作成します。
通信のニーズが異なる複数のユーザーが同じマシンからリモートピアを呼び出すのを許可する場合。このような場合は、ダイアルアウトする必要がある各ユーザーのホームディレクトリに個別の .ppprc ファイルを作成する
Van Jacobson 圧縮を無効にするなど、接続に固有の問題を制御するオプションを指定する必要がある場合。接続に関する問題の障害追跡については、James Carlson による「PPP Design, Implementation, and Debugging」および pppd(1M) のマニュアルページを参照。
.ppprc ファイルは、ダイアルインサーバーを構成するときにもっとも頻繁に使用されるため、.ppprc の構成手順については ダイアルインサーバーのユーザーを構成する方法を参照してください。
ダイアルインサーバーと通信するには、サーバーに関する情報を収集し、いくつかのファイルを編集する必要があります。特に大切なのは、ダイアルアウトマシンが呼び出す必要があるすべてのダイアルインサーバーについて通信要件を設定する必要があることです。ダイアルインサーバーに関する ISP 電話番号などのオプションは、/etc/ppp/options.ttyname ファイルで指定できます。 ただし、ピア情報は、/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 で指定する代表的なオプションを次に示します。
PAP または CHAP 認証を行う場合に、ダイアルアウトマシンのログイン名として user_name をダイアルインサーバーに指定する
peer-name をダイアルインマシンの名前として使用する。remotename は、/etc/ppp/pap-secrets または /etc/ppp/chap-secrets ファイルを走査するときに、PAP または CHAP 認証と連携して使用される
chat スクリプト内の命令を使ってダイアルインサーバーへの通信を開く
通信開始時に、ピア peer-name の認証を行わない
ピアとのネゴシエートに使用する初期 IP アドレスを 0.0.0.0 に設定する。ほとんどの ISP への接続を設定するときに noipdefault を使用すると、ピア間で容易に IPCP ネゴシエーションを行うことができる
接続上で IP が確立されたときに、デフォルトの IPv4 経路指定をインストールする
特定のターゲットピアに適用する可能性がある上記以外のオプションについては、pppd(1M) のマニュアルページを参照してください。
/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 | |
noccp |
CCP 圧縮を使用しない |
サイトで /etc/ppp/peers/myisp.tmpl を使用するには、/etc/ppp/peers/myisp.tmpl の名前を /etc/ppp/peers/peer-name に変更します。peer-name は、呼び出されるピアの名前に置き換えます。次に、サイトの必要に応じてファイルの内容を変更します。
/etc/ppp/peers/peer-name の例 |
参照先 |
---|---|
ダイアルアウトマシン用 | |
専用回線上のローカルマシン用 | |
ダイアルアウトマシン上での PAP 認証サポート用 | |
ダイアルアウトマシン上での CHAP 認証サポート用 | |
クライアントシステムでの PPPoE サポート用 |
この節では、モデムの設定について説明します。
モデムの設定で重要なのは、モデムが動作する速度の指定です。Sun Microsystems のコンピュータで使用するモデムには、次のガイドラインを適用してください。
旧 SPARC システム – システムに添付されているハードウェアマニュアルを確認する。SPARCstationTM マシンの多くは、38400 bps を超えないモデム速度を要求する
UltraSPARCTM マシン – モデム速度を 115200 bps に設定する。これは、最新のモデムで使用でき、ダイアルアップリンクに十分な速度である。デュアルチャネル ISDN TA を圧縮して使用する場合は、モデム速度を上げる必要がある。UltraSPARC での最大値は非同期接続で 460800 bps
ダイアルアウトマシンでは、/etc/ppp/peers/peer-name などの PPP 構成ファイルでモデム速度を設定するか、あるいは pppd のオプションとして速度を指定します。
ダイアルインサーバーでは、ダイアルインサーバーにデバイスを構成する で説明したように、ttymon 機能または admintool を使って速度を設定する必要があります。
ダイアルアウトマシンとそのリモートピアは、さまざまな命令をネゴシエーションしたり交換したりして PPP リンク上で通信します。ダイアルアウトマシンを構成するときは、ローカルおよびリモートモデムから要求される命令の内容を判定する必要があります。次に、その命令を含む chat スクリプトと呼ばれるファイルを作成します。この節では、モデムの設定および chat スクリプトの作成について説明します。
ダイアルアウトマシンが接続する必要があるリモートピアは、通常、それぞれピア自身の chat スクリプトを必要とします。
chat スクリプトは、通常、ダイアルアップリンクだけで使用されます。専用回線リンクは、起動時の設定が必要な非同期インタフェースを使用しないかぎり、chat スクリプトを使用しません。
chat スクリプトの内容は、モデムまたは ISDN TA の要件、およびリモートピアの要件によって決まります。スクリプトの内容は、一連の送信予期文字列として表示されます。 ダイアルアウトマシンとリモートピアは、この文字列を通信の開始処理時に交換します。
予期文字列には、会話を開始するためにダイアルアウトホストマシンがリモートピアから受け取ると予想される文字が含まれます。送信文字列には、ダイアルアウトマシンが、予期文字列を受け取った後でリモートピアに送信する文字が含まれます。
chat スクリプト内の情報には、通常、以下が含まれます。
モデムコマンド 。しばしば AT コマンドと呼ばれる。モデムが電話を通じてデータを伝送することを可能にする
ターゲットピアの電話番号
この電話番号は、ISP または企業サイトのダイアルインサーバー、あるいは個別のマシンが要求する番号の場合がある
タイムアウト値 (必要な場合)
リモートピアからの予想されるログインシーケンス
ダイアルアウトマシンが送信するログインシーケンス
この節では、独自の chat スクリプトを作成する際の参考になる chat スクリプトの例を紹介します。モデムメーカーのガイドや ISP および他のターゲットホストからの情報には、モデムおよびターゲットピアの chat の要件が含まれています。また、数多くの PPP Web サイトで 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 |
スクリプトの内容 |
説明 |
---|---|
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 コマンドを実行する |
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 メッセージを待つ |
ダイアルアウトマシンから 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 を実行中)」という通知メッセージをローカルマシン上に表示する |
次の 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 |
スクリプトの内容 |
説明 |
---|---|
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 ユーザーアカウントを作成する方法については、ダイアルインサーバーのユーザーを構成する方法を参照してください。
次は、ダイアルアウトマシンから 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 |
|
OK ATDI18882638234 |
ISDN 呼び出しを行う。マルチリンクでは、2 番目の呼び出しは、同じ電話番号に対して行われる。これは、通常、ほとんどの ISP の条件である。リモートピアが 2 番目の電話番号に異なる番号を要求す る場合は、「+ nnnn」を付け加える。nnnn は 2 番目の電話番号を表す |
CONNECT \c | |
\r \d\c |
CONNECT メッセージの最後まで待つ |
SAY "Connected; running PPP\n" |
ダイアルアウトマシンの画面上にこのメッセージを表示する |
chat スクリプトのオプションの説明およびその他の詳細な情報については、chat(1M) のマニュアルページを参照してください。送信予期文字列の説明については、UUCP Chat-Script フィールドを参照してください。
数多くの Web サイトで、chat スクリプトのサンプルとスクリプト作成のヒントが提供されています。
オーストラリア国立大学の Web サイトから利用できる PPP FAQ (Frequently Asked Questions) のページ (URL) も参考になります。
chat スクリプトを呼び出すには、connect オプションを使用します。PPP 構成ファイルまたはコマンド行で connect "chat ..." を使用できます。
chat スクリプトは実行可能ではありませんが、connect によって呼び出されるプログラムは実行可能でなければなりません。connect によって呼び出されるプログラムに chat ユーティリティを使用することがあります。この場合、–f オプションを使用して chat スクリプトを外部ファイルに保存すると、chat スクリプトファイルは実行可能にはなりません。
chat(1m) で説明されている chat プログラムは、実際の chat スクリプトを実行します。pppd デーモンは、pppd が connect "chat ..." オプションに遭遇すると必ず、chat プログラムを起動します。
Perl や Tcl などの外部プログラムを使って機能を拡張した chat スクリプトを作成することもできます。Solaris PPP 4.0 で chat ユーティリティが提供されているのは、ユーザーの便宜を図るためです。
ASCII ファイル形式で chat スクリプトを作成します。
次の構文を使用して、任意の PPP 構成ファイル内で chat スクリプトを呼び出します。
connect 'chat -f /etc/ppp/chatfile' |
-f フラグは、ファイル名が後に続くことを示します。/etc/ppp/chatfile は、chat ファイルの名前を表します。
外部 chat ファイルの読み取り権を pppd コマンドを実行するユーザーに与えます。
connect 'chat ...' オプションが特権ソースから呼び出された場合でも、chat プログラムは、常にユーザーの権限と連携して実行します。従って、-f オプションを使って読み取る個別の chat ファイルは、それを呼び出すユーザーが読み取り権を持っている必要があります。chat スクリプトにパスワードやその他の機密情報が含まれる場合、この特権はセキュリティの問題にかかわる可能性があります。
特定のピアで必要な chat スクリプトが長くて複雑な場合は、スクリプトを別ファイルとして作成することを考えます。外部 chat ファイルは、簡単に維持、作成できます。ハッシュ記号 (#) の後に続けて chat ファイルについてのコメントを追加できます。
外部ファイルに含まれる chat スクリプトの使用については、ピアを呼び出すための命令群を作成する方法 の手順を参照してください。
次に示すように、chat スクリプトの全会話を 1 つの行に入れることができます。
connect 'chat "" "AT&F1" OK ATDT5551212 CONNECT "\c"' |
実行可能なスクリプトの 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 プログラムを作成します。
chat プログラムを実行可能にします。
# chmod +x /etc/ppp/chatprogram |
chat プログラムを呼び出します。
connect /etc/ppp/chatprogram |
chat プログラムの場所は、/etc/ppp ファイルシステム内である必要はありません。chat プログラムは任意の場所に保存できます。
この節では、PPP 認証プロトコルの動作と認証プロトコルに関連するデータベースについて説明します。
PAP 認証は、UNIX の login プログラムと動作が多少似ていますが、PAP はユーザーにシェルアクセスを許可しない点が異なります。PAP は、PPP 構成ファイルと /etc/ppp/pap-secrets ファイルの形式の PAP データベースを使って認証を設定します。また、PAP セキュリティ資格の定義にも /etc/ppp/pap-secrets を使用します。この資格には、ピア名 (PAP の用語では 「ユーザー名」)とパスワードが含まれます。また、ローカルマシンへの接続を許可されている呼び出し元に関する情報も含まれます。PAP のユーザー名とパスワードは、パスワードデータベース内の UNIX ユーザー名およびパスワードと同じものにすることも、違うものにすることもできます。
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 ファイルの構文は、次のとおりです。
表 32–5 /etc/ppp/pap-secrets の構文
呼び出し元 |
サーバー |
パスワード |
IP アドレス |
---|---|---|---|
myclient |
ISP-server |
mypassword |
* |
パラメータの意味は次のとおりです。
呼び出し元の PAP ユーザー名。 この名前は、呼び出し元の UNIX ユーザー名と同じ場合がある。特に、ダイアルインサーバーが PAP の login オプションを使用する場合は、同じ場合が多い
リモートマシンの名前。ダイアルインサーバーである場合がしばしばある
呼び出し元の PAP パスワード
呼び出し元に関連付けられている IP アドレス。 任意の IP アドレスを表すには、アスタリスク (*) を使用する
PAP パスワードは、接続上をクリアテキストで (読み取り可能な ASCII 形式で) 送信されます。呼び出し元 (認証される側) では、PAP パスワードを次のどこかにクリアテキストで格納する必要があります。
/etc/ppp/pap-secrets ファイル内
別の外部ファイル内
pap-secrets @ 機能による名前付きパイプ内
pppd のオプションとして、コマンド行上または PPP 構成ファイル内のどちらか
+ua ファイルを介して
サーバー (認証する側) では、PAP パスワードは、次のどれかの方法で隠すことができます。
pap-secrets ファイル内で papcrypt を指定し、crypt(3C) によってハッシュ化されたパスワードを使用する
pppd に login オプションを指定し、パスワード列に二重引用符 ("") を入れることにより pap-secrets ファイルからパスワードを除外する。この場合、認証は UNIX の passwd データベースまたは pam(3PAM) メカニズムを利用して行われる。
呼び出し元 (認証される側) がリモートピア (認証する側) を呼び出し、接続ネゴシエーションの一環として PAP ユーザー名とパスワードを伝えます。
ピアは、/etc/ppp/pap-secrets ファイルで呼び出し元の識別情報を検証します。PAP の login オプションを使用する場合は、呼び出し元のユーザー名とパスワードの検証にパスワードデータベースが使用されます。
認証が成功すると、ピアは呼び出し元との接続ネゴシエーションを継続します。認証に失敗すると、接続は切られます。
(オプション) 呼び出し元がリモートピアからの応答を認証する場合は、リモートピアが自身の PAP 資格を呼び出し元に送信する必要があります。したがって、リモートピアは認証される側になり、呼び出し側は認証する側になります。
(オプション) 最初の呼び出し元が自身の /etc/ppp/pap-secrets を読み取り、リモートピアの識別情報を検証します。
最初の呼び出し元がリモートピアに認証資格を要求する場合は、手順 1 と手順 4 が並行して行われます。
ピアが認証されると、ネゴシエーションが継続されます。認証されない場合は、接続が切られます。
呼び出し元とピアのネゴシエーションは、接続の確立に成功するまで継続されます。
PAP 資格を認証するための login オプションを PPP 構成ファイルに追加できます。たとえば /etc/ppp/options で login を指定した場合、pppd は呼び出し元の PAP 資格が Solaris のパスワードデータベース内に存在するかどうかを検証します。次の表に、login オプションを追加した /etc/ppp/pap-secrets ファイルの形式を示します。
表 32–6 login オプションを追加した /etc/ppp/pap-secrets
呼び出し元 |
サーバー |
パスワード |
IP アドレス |
---|---|---|---|
joe |
* |
“ “ |
* |
sally |
* |
“ “ |
* |
sue |
* |
“ “ |
* |
パラメータの意味は次のとおりです。
すべての承認された呼び出し元の名前
アスタリスクは、任意のサーバー名が有効であることを示す。 name オプションは PPP 構成ファイルでは必須ではない
二重引用符は、任意のパスワードが有効であることを示す。
この列にパスワードがある場合、ピアからのパスワードは、PAP パスワードと UNIX passwd データベースの両方に一致しなければならない
アスタリスクは、任意の IP アドレスが許可されることを示す。
CHAP 認証は、チャレンジと応答という概念を使用します。つまり、ピア (認証する側) は識別情報を証明するために呼び出し元 (認証される側) にチャレンジします。チャレンジには、乱数、および認証する側によって生成された一意の ID が含まれます。呼び出し元は、ID、乱数、および呼び出し元の CHAP セキュリティ資格を使って適切な応答 (ハンドシェーク) を生成しピアに送信します。
CHAP セキュリティ資格には、CHAP ユーザー名と CHAP「シークレット」が含まれます。チャップシークレットは、PPP リンクネゴシエーションを行う前に、あらかじめ呼び出し元とピアの両方が知っている任意の文字列です。CHAP セキュリティ資格は、CHAP データベース /etc/ppp/chap-secrets 内で設定します。
CHAP データベースは、/etc/ppp/chap-secrets ファイルに実装されています。 認証が成功するためには、PPP リンクの両側にある各マシンで、/etc/ppp/chap-secrets ファイル内に互いのマシンの CHAP 資格が必要です。
PAP と異なり、共有シークレットは、両方のピアでクリアテキストでなければなりません。CHAP では、crypt、PAM、または PPP ログインオプションは使用できません。
/etc/ppp/chap-secrets ファイルの構文は、次のとおりです。
表 32–7 /etc/ppp/chap-secrets の構文
呼び出し元 |
サーバー |
CHAP シークレット |
IP アドレス |
---|---|---|---|
myclient |
myserver |
secret5748 |
* |
パラメータの意味は次のとおりです。
呼び出し元の CHAP ユーザー名。 呼び出し元の UNIX ユーザー名と同じ名前にすることも、違う名前にすることもできる
リモートマシンの名前。ダイアルインサーバーである場合がしばしばある
呼び出し元の CHAP シークレット
PAP パスワードと異なり、CHAP シークレットは送信されない。CHAP シークレットは、ローカルマシンが応答を処理するときに使用される
呼び出し元に関連付けられている IP アドレス。 任意の IP アドレスを表すには、アスタリスク (*) を使用する
通信を開始しようとする 2 つのピアが、PPP リンクのネゴシエーション時に認証に使用するシークレットについて合意します。
両方のマシンの管理者が、シークレット、CHAP ユーザー名、その他の CHAP 資格をそれぞれのマシンの /etc/ppp/chap-secrets データベースに追加します。
呼び出し元 (認証される側) がリモートピア (認証する側) を呼び出します。
認証する側が乱数と ID を生成し、それらを認証される側にチャレンジとして送信します。
認証される側は、/etc/ppp/chap-secrets データベース内でピアの名前とシークレットを調べます。
認証される側は、シークレットとピアの乱数チャレンジに MD5 計算アルゴリズムを適用することにより、応答を計算します。次に、認証される側は、認証する側に結果を応答として送信します。
認証する側は、/etc/ppp/chap-secrets データベース内で認証される側の名前とシークレットを調べます。
認証する側は、チャレンジとして生成された数値と /etc/ppp/chap-secrets 内の認証される側のシークレットに MD5 を適用することにより、自身の数値を計算します。
認証する側は、呼び出し元からの応答と結果を比較します。2 つの数字が同じ場合、ピアは、呼び出し元の認証に成功し、接続ネゴシエーションが続けられます。認証されない場合は、接続が切られます。
リモートユーザーごとに一意の IP アドレスを割り当てる代わりに、すべての着呼のために 1 つ以上の IP アドレスを作成することを考えます。専用 IP アドレスは、予想される呼び出し元の数が、ダイアルインサーバー上のシリアルポートとモデムの数を上回る場合、特に重要です。サイトの必要性に応じて、さまざまなシナリオを実現できます。さらに、シナリオは、相互に排他的ではありません。
動的アドレス指定は、/etc/ppp/options.ttyname で定義されている IP アドレスを各呼び出し元に割り当てます。動的アドレス指定は、シリアルポート単位で発生します。シリアル回線に呼が着信すると、呼び出しを処理するシリアルインタフェース用に /etc/ppp/options. ttyname ファイルで定義されている IP アドレスが呼び出し元に与えられます。
たとえば、ダイアルインサーバーに、着呼に対してダイアルアップサービスを提供するシリアルインタフェースが 4 つあると仮定します。
シリアルポート term/a 用に、次のエントリがある /etc/ppp/options.term.a ファイルを作成します。
:10.1.1.1 |
シリアルポート term/b 用に、次のエントリがある /etc/ppp/options.term.b ファイルを作成します。
:10.1.1.2 |
シリアルポート term/c 用に、次のエントリがある /etc/ppp/options.term.c ファイルを作成します。
:10.1.1.3 |
シリアルポート term/d 用に、次のエントリがある /etc/ppp/options.term.d ファイルを作成します。
:10.1.1.4 |
PPP ネットワークの使用状況をシリアルポートまで追跡できる
PPP 使用で割り当てる IP アドレスの数を最小限にできる
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 |
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 を取得し、以下同様に続きます。
PPPoE を使用することにより、1 台以上の DSL モデムを使用している複数のクライアントに PPP 超高速デジタルサービスを提供できます。PPPoE は、3 つの関係者、つまり企業、電話会社、サービスプロバイダを通して Ethernet トンネルを作成することにより、このサービスを実現します。
PPPoE の動作の概要と説明については、PPPoE の概要 を参照してください。
PPPoE トンネルの設定作業については、第 30 章「PPPoE トンネルの設定 (手順)」を参照してください。
この節では、PPPoE コマンドおよびファイルについて詳しく説明します。概要を次の表に示します。
表 32–8 PPPoE のコマンドと構成ファイル
ファイルまたはコマンド |
説明 |
参照先 |
---|---|---|
/etc/ppp/pppoe |
PPPoE がシステムに設定したすべてのトンネルに対してデフォルトで適用される特性を含むファイル | |
/etc/ppp/pppoe. device |
PPPoE がトンネルに使用する特定のインタフェースの特性を含むファイル | |
/etc/ppp/pppoe.if |
PPPoE が設定したトンネルが動作する Ethernet インタフェースをリストしたファイル | |
/usr/sbin/sppptun |
PPPoE トンネルに関係する Ethernet インタフェースを設定するためのコマンド | |
/usr/lib/inet/pppoed |
PPPoE を使ってトンネルを設定するためのコマンドとオプション |
PPPoE トンネルの両端で使用されるインタフェースは、トンネルが PPP 通信をサポートする前に、あらかじめ設定しておく必要があります。設定には、/usr/sbin/sppptun および /etc/ppp/pppoe.if ファイルを使用します。これらのツールを使用して、すべての Solaris PPPoE クライアントおよび PPPoE アクセスサーバー上の Ethernet インタフェースを設定する必要があります。
/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 コマンドを使用すると、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 |
上の 1 つめの sppptun コマンドを実行したときは、発見プロトコル pppoed がインタフェースに plumb されます。2 つめの sppptun を実行したときは、セッションプロトコル pppoe が plumb されます。sppptun は、plumb されたインタフェースの名前を表示します。必要な場合は、この名前を使ってインタフェースを unplumb します。
詳細は、sppptun(1M) のマニュアルページを参照してください。
次の例は、/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 |
# sppptun unplumb hme0:pppoed # sppptun unplumb hme0:pppoe |
DSL のサービスまたはサポートを顧客に提供するサービスプロバイダは、Solaris PPPoE を実行するアクセスサーバーを使用できます。PPPoE アクセスサーバーとクライアントは、従来のクライアントとサーバーの関係で機能します。この関係は、ダイアルアップリンクでのダイアルアウトマシンとダイアルインサーバーの関係に似ています。つまり、ある PPPoE システムが通信を開始し、別の PPPoE システムが応答します。これに対して、PPP プロトコルにはクライアントとサーバーの関係という概念はなく、両方のマシンが同等のピアとみなされます。
PPPoE アクセスサーバーを設定するコマンドおよびファイルには、以下が含まれます。
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 ファイルは、アクセスサーバーが提供するサービスと、PPP が PPPoE トンネル上でどのように実行するかを定義するオプションを説明します。 インタフェースごとに個別にサービスを定義することも、広域的にアクセスサーバー上のすべてのインタフェースに対してサービスを定義することもできます。アクセスサーバーは、将来の PPPoE クライアントからのブロードキャストに応答して、/etc/ppp/pppoe ファイル内の情報を送信します。
以下に、/etc/ppp/pppoe の基本的な構文を示します。
global-options service service-name service-specific-options device interface-name |
/etc/ppp/pppoe ファイルのデフォルトのオプションを設定する。このオプションには、pppoed または pppd で使用可能なオプションはすべて使用できる。オプションの完全なリストについては、pppoed(1M) および pppd(1M) のマニュアルページを参照
たとえば、グローバルオプションには、PPPoE トンネルで使用できる Ethernet インタフェースをリストする必要がある。/etc/ppp/pppoe でデバイスを定義しないと、インタフェースでサービスを提供できない
devices をグローバルオプションとして定義するには、次の形式を使用する
device interface <,interface> |
service-name というサービスの定義を開始する。service-name には、提供されるサービスに適した任意の文字列を指定できる
このサービスに固有の PPPoE および PPP のオプションを表示する
上記でリストしたサービスを利用できるインタフェースを指定する
/etc/ppp/pppoe のこの他のオプションについては、pppoed(1M) および pppd(1M) のマニュアルページを参照してください。
次に、典型的な /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" |
このファイルでは、以下の値が適用されています。
PPPoE トンネルに使用されるアクセスサーバー上の 3 つのインタフェース
将来のクライアントに対して internet というサービスを通知する。また、サービスを提供するプロバイダは internet の定義についても決定する。たとえば、プロバイダは、インターネットへのアクセスだけでなく、さまざまな IP サービスを意味する internet サービスを提供できる
呼び出し元が pppd を呼び出したときに使用されるコマンド行オプションを設定する。 "name internet-server" オプションは、ローカルマシン (アクセスサーバー) の名前を internet-server と付ける
intranet という別のサービスを想定クライアントに通知する
呼び出し元が pppd を呼び出したときに使用されるコマンド行オプションを設定する。 呼び出し元が pppd を呼び出すと、ローカルマシン (アクセスサーバー) の IP アドレスとして 192.168.1.1 が設定される
PPPoE 用に定義されているインタフェースに 3 番目のサービス、デバッグを通知する
PPPoE トンネルに対するデバッグを hme1 に限定する
呼び出し元が pppd を起動したときに使用されるコマンド行オプション、この場合は PPP デバッグをローカルマシン internet-server に設定する
/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 共有オブジェクトファイルで、PPPoE のアクセスサーバーおよびクライアントによって呼び出されます。 このファイルは、MTU および MRU を 1492 に制限し、ドライバからのパケットにフィルタをかけ、pppoed とともに PPPoE トンネルをネゴシエートします。 アクセスサーバー側では、pppoe.so は pppd デーモンによって自動的に呼び出されます。
ここでは、あるアクセスサーバーを構成するために使用するすべてのファイルのサンプルを紹介します。このアクセスサーバーはマルチホームで、3 つのサブネット、green、orange、および purple が接続されています。pppoed は、サーバー上で root として実行します。これはデフォルトの動作です。
PPPoE クライアントは、hme0 および hme1 インタフェースを通じて orange および purple ネットワークにアクセスできます。クライアントは、標準の UNIX ログインを使ってサーバーにログインします。サーバーは、クライアントを PAP を使って認証します。
green ネットワークは、クライアントに通知されません。クライアントが green にアクセスできるためには、直接「green-net」を指定し、CHAP 認証資格を提供しなければなりません。さらに、クライアント joe および mary だけが、静的 IP アドレスを使用して green ネットワークにアクセスできます。
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:" |
purple ネットワーク用の service 節は、ネットワーク名とサーバー名が異なる以外は、orange ネットワーク用の service 節と同じです。
次の service 節は、green ネットワークのサービスを説明します。
service green-net device hme1 pppd "require-chap name green-server green-server:" nowildcard |
このアクセスサーバーのシナリオでは、次のような /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 ファイルを使用します。
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 ファイルを示します。
* orange-server "" 172.16.0.2/16+ * purple-server "" 172.17.0.2/16+ |
次に、CHAP 認証に使用される /etc/ppp/chap-secrets ファイルを示します。joe および mary というクライアントだけがファイルにリストされていることに注意してください。
joe green-server "joe's secret" joes-pc mary green-server "mary's secret" marys-pc |
DSL モデム上で PPP を実行するには、マシンが PPPoE クライアントになる必要があります。PPPoE を実行するためにインタフェースを plumb し、次に pppoec ユーティリティを使ってアクセスサーバーの存在を「発見」する必要があります。その後、クライアントは DSL モデム上に PPPoE トンネルを作成し PPP を実行できます。
PPPoE クライアントは、従来のクライアント - サーバーモデルでアクセスサーバーに接続します。PPPoE トンネルはダイアルアップリンクではありませんが、ほぼ同じような方法で構成され、操作されます。
PPPoE クライアントを設定するコマンドおよびファイルには、以下が含まれます。
/usr/lib/inet/pppoec ユーティリティは、PPPoE トンネルのクライアント側をネゴシエーションします。 pppoec は、Solaris PPP 4.0 の chat ユーティリティに似て います。pppoec は直接起動しません。直接起動するのではなく、pppd の connect オプションの引数として /usr/lib/inet/pppoec を起動します。
pppoe.so は PPPoE 共有オブジェクトで、PPPoE によって読み込まれ、PPPoE 機能をアクセスサーバーとクライアントに提供します。 共有オブジェクト pppoe.so は、MTU および MRU を 1492 に制限し、ドライバからのパケットにフィルタをかけ、実行時 PPPoE メッセージを処理します。
クライアント側では、ユーザーが plugin pppoe.so オプションを指定すると、pppd が pppoe.so を読み込みます。
アクセスサーバーが pppoec によって発見されるように定義する場合は、 pppoec および pppd デーモンの両方に適用されるオプションを使用します。アクセスサーバーの /etc/ppp/peers/peer-name ファイルは次のパラメータを必要とします。
sppptun – PPPoE トンネルが使用するシリアルデバイスの名前
plugin pppoe.so – pppd に pppoe.so 共有オブジェクトを読み込むように指示する
connect "/usr/lib/inet/pppoec device" – 接続を開始する。次に、PPPoE にplumb されているインタフェース device 上で pppoec ユーティリティを起動する
/etc/ppp/peers/peer-name ファイル内の残りのパラメータは、サーバー上の PPP リンクに適用されます。ダイアルアウトマシン上の /etc/ppp/peers/peer-name と同じオプションを使用します。オプションの数を PPP リンクで必要な最小数に制限するようにしてください。
次の例は、PPPoE アクセスサーバーピアを定義する方法で紹介されています。
# 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 リンクを設定するときに使用するパラメータを定義します。オプションには、以下が含まれます。