この章では、Solaris PPP 4.0 について詳細で概念的な情報を提供します。トピックは次のとおりです。
Solaris PPP 4.0 には、PPP 構成の定義に使用するオプションが多数含まれます。これらのオプションは、PPP 構成ファイルまたはコマンド行で使用するほか、ファイルでの使用とコマンド行での使用を組み合わせることもできます。この節では、PPP オプションの構成ファイルでの使用と PPP コマンドの引数としての使用について詳細に説明します。
Solaris PPP 4.0 は柔軟に構成できます。PPP オプションを次の場所で定義できます。
PPP 構成ファイル
コマンド行で実行される PPP コマンド
前記 2 つの場所の組み合わせ
PPP ファイルの詳細は、pppd(1M) のマニュアルページを参照してください。pppd(1M) には、pppd で使用できるすべてのオプションに関する詳細な説明もあります。すべての PPP 構成ファイルのサンプルテンプレートは、/etc/ppp にあります。
pppd デーモンが次を構文解析する。
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 でなければ、特権が与えられません。
オプション |
状態 |
意味 |
---|---|---|
ドメイン |
特権がある |
使用には特権が必要です。 |
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 を起動したユーザーの特権で開かれます。 |
ローカルマシン上のすべての PPP 通信にグローバルオプションを定義するには、/etc/ppp/options ファイルを使用します。/etc/ppp/options は特権ファイルです。pppd によって強制される規則ではありませんが、/etc/ppp/options は root が所有する必要があります。/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 だけです。
How to Define Communications Over the Serial Lineの説明に従って、テキストエディタを使用して 「シリアル回線を介した通信を定義する方法」 を作成する必要があります。マシンがグローバルオプションを必要としない場合は、空の /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 サポート用は、「PPP 構成ファイルに PAP サポートを追加する方法 (ダイアルインサーバー)」を参照してください。
ダイアルアウトマシンでの PAP サポート用は、「PPP 構成ファイルに PAP サポートを追加する方法 (ダイアルアウトマシン)」を参照してください。
ダイアルインサーバーでの CHAP サポート用は、 「PPP 構成ファイルに 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 で指定する代表的なオプションを次に示します。
user user-name
PAP または CHAP 認証を行う場合に、ダイアルアウトマシンのログイン名として user-name をダイアルインサーバーに指定します。
remotename peer-name
peer-name をダイアルインマシンの名前として使用します。remotename は、/etc/ppp/pap-secrets または /etc/ppp/chap-secrets ファイルを走査するときに、PAP または CHAP 認証と連携して使用されます。
connect "chat chat_script ..."
chat スクリプト内の命令を使ってダイアルインサーバーへの通信を開きます。
noauth
通信開始時に、ピア peer-name の認証を行いません。
noipdefault
ピアとのネゴシエートに使用する初期 IP アドレスを 0.0.0.0 に設定します。ほとんどの ISP への接続を設定するときに noipdefault を使用すると、ピア間で容易に IPCP ネゴシエーションを行うことができます。
defaultroute
接続上で 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 |
標準出力ではなく、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 ファイルの例は、次の節を参照してください。
ダイアルアウトマシン用は、「個々のピアとの接続を定義する方法」を参照してください。
専用回線上のローカルマシン用は、「専用回線上のマシンの設定方法」を参照してください。
ダイアルアウトマシンでの PAP 認証のサポート用は、「PPP 構成ファイルに PAP サポートを追加する方法 (ダイアルアウトマシン)」を参照してください。
ダイアルアウトマシンでの CHAP 認証のサポート用は、「PPP 構成ファイルに CHAP サポートを追加する方法 (ダイアルアウトマシン)」を参照してください。
クライアントシステムでの PPPoE のサポート用は、「PPPoE クライアントの設定」を参照してください。
モデムの設定で重要なのは、モデムが動作する速度の指定です。Sun Microsystems のコンピュータで使用するモデムには、次のガイドラインを適用してください。
旧 SPARC システム – システムに添付されているハードウェアマニュアルを確認します。SPARCstation マシンの多くは、38400 bps を超えないモデム速度を要求します。
UltraSPARC マシン – モデム速度を 115200 bps に設定します。これは、最新のモデムで使用でき、ダイアルアップリンクに十分な速度です。デュアルチャネル ISDN TA を圧縮して使用する場合は、モデム速度を上げる必要があります。UltraSPARC での最大値は非同期接続で 460800 bps です。
ダイアルアウトマシンでは、/etc/ppp/peers/peer-name などの PPP 構成ファイルでモデム速度を設定するか、あるいは pppd のオプションとして速度を指定します。
ダイアルインサーバーでは、「ダイアルインサーバーにデバイスを構成する」で説明したように、ttymon 機能または Solaris 管理コンソールを使って速度を設定する必要があります。
ダイアルアウトマシンとそのリモートピアは、さまざまな命令をネゴシエーションしたり交換したりして 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 |
次の表では、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 コマンドを実行します。 |
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 メッセージを待ちます。 |
ダイアルアウトマシンから 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 |
次の表では、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 ユーザーアカウントを作成する方法については、「ダイアルインサーバーのユーザーを構成する方法」を参照してください。
次は、ダイアルアウトマシンから 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 スクリプトのパラメータを説明します。
chat スクリプトのオプションの説明およびその他の詳細な情報については、chat(1M) のマニュアルページを参照してください。expect-send 文字列の説明については、「/etc/uucp/Systems ファイルの Chat-Script フィールド」を参照してください。
数多くの Web サイトで、chat スクリプトのサンプルとスクリプト作成のヒントが提供されています。たとえば、http://ppp.samba.org/ppp/index.html を参照してください。
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 スクリプトの全会話を 1 つの行に入れることができます。
connect 'chat "" "AT&F1" OK ATDT5551212 CONNECT "\c"' |
chat スクリプトは、chat キーワードのあとに続きます。スクリプトは "\c"' で終了します。この形式は、pppd の引数として、PPP 構成ファイルまたはコマンド行で使用できます。
特定のピアで必要な 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 |
テキストエディタを使用して、前述の例のような実行可能な 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 ファイルの構文は、次のとおりです。
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 ファイルの形式を示します。
joe * "" * sally * "" * sue * "" * |
パラメータの意味は次のとおりです。
joe、sally、sue は、承認された呼び出し元の名前です。
アスタリスク (*) は、任意のサーバー名が有効であることを示します。name オプションは PPP 構成ファイルでは必須ではありません。
二重引用符は、任意のパスワードが有効であることを示します。
この列にパスワードがある場合、ピアからのパスワードは、PAP パスワードと UNIX passwd データベースの両方に一致しなければなりません。
アスタリスク (*) は、任意の IP アドレスが許可されることを示します。
CHAP 認証は、「チャレンジ」と「応答」という概念を使用します。つまり、ピア (認証する側) は識別情報を証明するために呼び出し元 (認証される側) にチャレンジします。チャレンジには、乱数、および認証する側によって生成された一意の ID が含まれます。呼び出し元は、ID、乱数、および呼び出し元の CHAP セキュリティー資格を使って適切な応答 (ハンドシェーク) を生成しピアに送信します。
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 ファイルの構文は、次のとおりです。
myclient myserver secret5748 * |
パラメータの意味は次のとおりです。
呼び出し元の CHAP ユーザー名。呼び出し元の UNIX ユーザー名と同じ名前にすることも、違う名前にすることもできます。
リモートマシンの名前。ダイアルインサーバーである場合がしばしばあります。
呼び出し元の CHAP シークレット。
PAP パスワードと異なり、CHAP シークレットは送信されません。CHAP シークレットは、ローカルマシンが応答を処理するときに使用されます。
呼び出し元に関連付けられている IP アドレス。任意の IP アドレスを表すには、アスタリスク (*) を使用します。
CHAP 認証は、次の順序で発生します。
通信を開始しようとする 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 |
この以前のアドレス指定スキーマでは、/dev/term/c のシリアルインタフェースに着信する呼び出しは、呼び出しを行なっている間中、IP アドレス 10.1.1.3 が与えられます。最初の呼び出し元が回線を切ったあと、次にシリアルインタフェース /dev/term/c に着信する呼も、IP アドレス 10.1.1.3 を与えられます。
動的アドレス指定には、次のような利点があります。
PPP ネットワークの使用状況をシリアルポートまで追跡できる
PPP 使用で割り当てる IP アドレスの数を最小限にできる
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 |
joe、sally、sue は、承認された呼び出し元の名前です。
myserver は、サーバーの名前を示します。
joepasswd、sallypasswd、suepasswd は、各呼び出し元のパスワードを示します。
10.10.111.240、10.10.111.241、10.10.111.242 は、各呼び出し元に割り当てられた IP アドレスです。
次に、静的 IP アドレスを定義した /etc/ppp/chap-secrets ファイルの例を示します。
account1 myserver secret5748 10.10.111.244 account2 myserver secret91011 10.10.111.245 |
account1 と account2 は、呼び出し元の名前を示します。
myserver は、各呼び出し元のサーバーの名前を示します。
secret5748 と secret91011 は、各呼び出し元の CHAP シークレットを示します。
10.10.111.244 と 10.10.111.245 は、各呼び出し元の IP アドレスです。
PAP 認証または CHAP 認証を使用している場合は、sppp ユニット番号を使って 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 トンネルの設定作業については、第 20 章PPPoE トンネルの設定 (手順)を参照してください。
この節では、PPPoE コマンドおよびファイルについて詳しく説明します。概要を次の表に示します。
表 22–2 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 |
この構文で、device-name は PPPoE に plumb されるデバイス名です。
上の 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 |
次の例は、インタフェースを unplumb する方法を示しています。
# 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) のマニュアルページを参照してください。
たとえば、この global-options には、PPPoE トンネルで使用できる Ethernet インタフェースを一覧表示する必要があります。/etc/ppp/pppoe でデバイスを定義しないと、インタフェースでサービスを提供できません。
devices をグローバルオプションとして定義するには、次の形式を使用します。
device interface <,interface> |
interface は、サービスが将来の PPPoE クライアントを待つインタフェースを指定します。複数のインタフェースがサービスに関連付けられている場合は、名前をコンマで区切って指定します。
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 の定義方法についても決定します。たとえば、プロバイダは、internet とは、インターネットへのアクセスだけでなく、さまざまな IP サービスを意味するものと解釈する場合があります。
呼び出し元が 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 アクセスサーバーの 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 共有オブジェクトファイルで、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:" |
クライアントは、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 ファイルを設定する場合があります。
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 アクセスサーバーピアを定義する方法」で紹介されています。
# 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 |
pppd に pppoe.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 クライアントの場合これにあてはまります。 |