この章では、Solstice PPP に関連する各構成ファイルの形式と構文について説明します。また、より複雑なネットワーク構成を生成するために構成ファイルを変更する方法について説明します。
Solstice PPP は、以下のファイルにある情報を使用して、同期/非同期 PPP リンクにおける IP 接続を確立します。
PPP パス構成ファイル (/etc/opt/SUNWconn/ppp/ppp.conf) は、Solstice PPP リンク上の IP 接続に使用する同期パスと非同期 (ダイヤルアップ) パスを定義します。このファイルには、Solstice PPP の論理 IP インタフェースを確立する ifconfig(1M) コマンドがあります。
このファイルに設定されているパラメータの詳細については、「PPP パス構成ファイル (ppp.conf) の編集」 を参照してください。
リンク構成ファイル (/etc/opt/SUNWconn/ppp/link.conf) は、PPP リンクの作成に使用する同期デバイスと非同期デバイスを定義します。このファイルには、リモートホストとの非同期リンクを開始するための発信情報があります。
このファイルに設定されているパラメータの詳細については、「リンク構成ファイル (link.conf) の編集」を参照してください。
モデムデータベースファイル (/etc/opt/SUNWconn/ppp/modems) には、Solstice PPP が認識するモデムが記述されています。また、着信接続と発信接続においてモデムを初期化するときに、Solstice PPP が使用する AT コマンドも記述されています。
このファイルに新しいモデムの記述を追加する方法については、「モデムデータベースファイル (modems) の編集」を参照してください。
CHAT (接続) スクリプトは、リンク確立フェーズで行われるエンドポイント間の情報交換を定義します。デフォルトでは、CHAT スクリプトはディレクトリ /etc/opt/SUNWconn/ppp/script に存在します。ファイル link.conf 中の定義を編集しファイルを移動して、スクリプトの場所を変更することができます。CHAT スクリプトには、非対話型 (交換すべき情報がすべてスクリプト中にある) と対話型 (スクリプトがユーザー入力を促すプロンプトを表示する) の 2 種類があります。
ローカルホストから発信対象の各リモートホストに、CHAT スクリプトを 1 個作成する必要があります。CHAT スクリプトの内容の一部は、リモートホストのオペレーティングシステムによって異なります。PPP 初期設定スクリプト (pppinit) は、Solaris 環境を実装するホストと接続するためのテンプレートファイルを作成することができます。Solaris 以外のオペレーティングシステム用にテンプレートファイルを変更する手順については、「CHAT (接続) スクリプトの編集」を参照してください。
リモートホストが開始した非同期 PPP 接続を受信するには、このリモートホストのユーザーアカウントがローカルマシン上に作成されている必要があります。admintool(1M) を使用し、図 4-1 に示すエントリをローカルユーザーアカウントファイル /etc/passwd、/etc/shadow に追加します。
図 4-2 は、ppp.conf と link.conf のファイルを組み合わせることによって、同期 PPP リンク上のポイントツーポイント IP 接続を定義する例を示しています。
図 4-3 は、非同期 PPP リンクにおけるリモートホストとのポイントツーポイント IP 接続の開始に使用する、ファイル ppp.conf、link.conf と CHAT スクリプトの関係を示しています。
図 4-4 は、非同期 PPP リンクにおけるリモートホストとのポイントツーポイント IP 接続の受信に使用する、ファイル ppp.conf、link.conf とユーザーアカウントの関係を示しています。
PPP パス構成ファイル (/etc/opt/SUNWconn/ppp/ppp.conf) には、Solstice PPP における IP に使用する同期パスと非同期 (ダイヤルアップ) パスが記述されます。また、Solstice PPP の論理 IP インタフェースを確立する ifconfig(1M) も記述されています。
PPP 構成ファイルにある ifconfig(1M) コマンドは、Solstice PPP のポイントツーポイント (ipdptpn) IP インタフェースとポイントツーマルチポイント (ipdn) IP インタフェースを確立します。これらのコマンドは Solstice PPP の起動時に実行され、各インタフェースにネットワークアドレスの割り当てとネットワークパラメータの構成を行います。
Solstice PPP の IP インタフェースを確立する ifconfig コマンドの形式は、以下のとおりです。
ifconfig interface plumb source [dest] netmask mask mtu mtu up |
interface
IP インタフェースの名前と種類。Solstice PPP の IP インタフェースは、ipdptpn (ポイントツーポイント) と ipdn (ポイントツーマルチポイント) です。n は、番号です。
通常、IP インタフェースには、ipdptp0、 ipdptp1、 ipdptp2 や ipd0、 ipd1、 ipd2 のように、ゼロから順に番号を付けます。
plumb
インタフェース名に関連するデバイスを開き、デバイスを使用するための TCP/IP を使用可能にする STREAMS を設定します。
source
ポイントツーポイント IP インタフェースとポイントツーマルチポイント IP インタフェースの発信元アドレス (アタッチメントポイント) を示す IP アドレス (ドット表記) またはホスト名。
dest
ポイントツーポイントインタフェース専用。ポイントツーポイント IP インタフェースの着信先アドレスを示す IP アドレス (ドット表記) またはホスト名。
netmask mask
ネットワークをサブネットワークに分割するときに予約する IP アドレス数を指定します。マスクは、ドット表記または 0x で始まる 16 進表記で入力します。
mtu mtu
インタフェースの最大伝送ユニット (MTU) を設定します。MTU は 60 〜 8232 バイトの範囲である必要があります。通常は Ethernet ネットワークにおける最適値の 1500 に設定されています。
up
インタフェースに up のマーク付け、つまりアクティブ状態にします。down を使用すると、インタフェースを一時的に使用禁止にすることができます。同期 PPP リンクに関連付けられている IP インタフェースは、デフォルト状態で up のマークが付けられます。非同期 PPP リンクに関連付けられている IP インタフェースに up のマークが付いている場合は、IP 層がインタフェースに IP データグラムを渡したときにリンクマネージャによってリンクが自動的に確立されます。
Solstice PPP のポイントツーマルチポイント IP インタフェースを確立するには、以下の形式の ifconfig コマンドを組み込みます。
ifconfig ipd0 plumb papyrus netmask 255.255.255.0 mtu 1500 up |
Solstice PPP のポイントツーポイント IP インタフェースを確立するには、以下の形式の ifconfig コマンドを組み込みます。
ifconfig ipdptp0 plumb ifconfig ipdptp0 papyrus epic netmask 255.255.255.0 mtu 1500 up |
上記の例のように複数の ifconfig コマンドを連結して、インタフェースを完全に定義することができます。
IP アドレスの動的割り当て機能をサポートするようにサーバーを構成するには、必要に応じてクライアントに割り当てられるポイントツーポイント IP インタフェースのプールを定義する必要があります。これらのインタフェースには、デフォルトで必ず down のマークが付いています。
以下の例は、IP アドレス動的割り当てに使用する n 個のポイントツーポイント IP インタフェースのプールを作成する方法です。
ifconfig ipdptp0 plumb ifconfig ipdptp0 local rem1 netmask 255.255.255.0 mtu 1500 down ifconfig ipdptp1 plumb ifconfig ipdptp1 local rem2 netmask 255.255.255.0 mtu 1500 down ifconfig ipdptp2 plumb ifconfig ipdptp2 local rem3 netmask 255.255.255.0 mtu 1500 down . . ifconfig ipdptpn plumb ifconfig ipdptpn local remn netmask 255.255.255.0 mtu 1500 down |
プール内のインタフェース数は、サーバーに接続する非同期デバイス (モデム) の数と等しい必要があり、プールに入れることができるインタフェースは最大 512 個です。サーバーは、この数よりはるかに多い数のクライアントをサポートすることができます。
クライアント数が少ない場合や、クライアント数とモデム数が等しい場合は、インタフェースを静的に割り当てることができます。この場合は、クライアントが IP アドレスを要求するときに、常に同じインタフェースがプールから割り当てられます。
クライアント数が多い場合や、モデム数よりクライアント数がはるかに多い場合は、インタフェースを動的に割り当てることができます。この場合は、クライアントが IP アドレスを要求するときに、プールから 1 つのインタフェースが割り当てられます。ただし、常に同じインタフェースが割り当てられるとはかぎりません。
静的 IP インタフェースと動的 IP インタフェースを割り当てる方法については、「非同期パス (dialup_path) の定義」 を参照してください。
同期パスはファイル ppp.conf に定義されており、各定義はキーワード sync_path で始まります。同期パスは、必ずポイントツーポイント IP インタフェースに関連付けられます。
同期パス定義の形式は、以下のとおりです。
sync_path ip_interface ipdptpn unix_device device_name . . . |
sync_path
同期パスの必須パラメータ。同期パス定義の始まりを示します。
同期パスの必須パラメータ。ファイルの ifconfig セクションに定義されているポイントツーポイント IP インタフェースのいずれかと同期パスを関連付けます。複数の同期パスが 1 つの IP インタフェースを共用する場合は、負荷分散機能が使用可能になります。
同期パスの必須パラメータ。ファイル link.conf に定義されている同期デバイスのいずれかと同期パスとを関連付けます。値 device は、マシンにインストールされている同期シリアルインタフェースを示している必要があります。
たとえば、zshn という形式のデバイス名は、オンボードシリアルインタフェースのいずれかとパスを関連付けます。hihn という形式のデバイス名は、高速シリアルインタフェース (HSI) とパスを関連付けます。
同期パスの省略可能パラメータ。送信経路をデフォルトの宛先としてルーティングテーブルに追加します。IP インタフェースに down のマークが付いている場合は、送信経路は削除されます。
同期パスの省略可能パラメータ。リモートホストからの IP アドレスを受け付けます。ローカルマシンのインタフェースに割り当てられている IP アドレスと異なる場合でも、受け付けます。
state 値は、on (使用可能) または off (使用不可) です。デフォルト値は off です。
同期パスの省略可能パラメータ。リンクモニターの現在の状態を示します。使用可能状態のリンクモニターは、定期的なエコー要求をリモートホストに送信します。指定した数の要求を行なってもリモートホストが応答しなかった場合、リンクモニターはリンクに障害が発生したと仮定します。このリンクにおける IP データグラムの伝送を停止するため、リンクモニターは同期パスに関連付けられている IP インタフェースに down のマークを付けます。
state 値は、on (使用可能) または off (使用不可) です。デフォルト値は off です。
同期パスの省略可能パラメータ。リンクモニターが生成する連続的エコー要求の時間間隔を秒数で指定します。
seconds 値は、ゼロより大きい任意の整数です。デフォルト値は 5 秒です。
link_monitor_retries max_retries
同期パスの省略可能パラメータ。リモートホストが接続不可とみなされ IP インタフェースが使用禁止されるまでにリンクモニターが生成する未応答エコー要求の数を指定します。
max_retries 値は、ゼロより大きい任意の整数です。デフォルト値は 12 です。
同期パスと非同期パスの省略可能パラメータ。ppptrace と pppstat がリンクの識別に使用する名前を割り当てます。name 値は、任意の文字列です。
同期パスと非同期パスの省略可能パラメータ。低速リンクにおける性能を Van Jacobson 圧縮方式によって高めるヘッダー圧縮機能の現在状態を示します。
state 値は、vj (使用可能) または off (使用不可) です。デフォルト値は vj です。
同期パスと非同期パスの省略可能パラメータ。ローカルマシンの最大受信ユニット (MRU) を指定します。このパラメータは LCP Configure-request フレームで配信され、リモートホストの最大伝送ユニット (MTU) を設定します。詳細については、付録 A 「PPP リンクの動作」 を参照してください。
デフォルトでは、mru 値は Ethernet ネットワーク用の 1500 バイトに設定されています。
同期パスと非同期パスの省略可能パラメータ。連続的 LCP Configure-request フレームの時間間隔を秒数で指定します。衛星接続など遅延時間が長いネットワークを使用して接続する場合は、LCP 再起動タイマー値を上げる必要が生じることがあります。詳細については、付録 A 「PPP リンクの動作」 を参照してください。
seconds 値は、ゼロより大きい任意の整数です。デフォルト値は 3 秒です。
同期パスと非同期パスの省略可能パラメータ。エンドポイントが接続不可とみなされ、IP インタフェースに down のマークが付けられるまでに生成される未応答 LCP Configure-request フレームの数を指定します。詳細については、付録 A 「PPP リンクの動作」 を参照してください。
max_restart 値は、1 〜 255 の任意の整数です。デフォルト値は 10 です。max_restart 値が 255 に設定されている場合は、リモートホストが応答するまで LCP Configure-request フレームが定期的に生成されます。
同期パスと非同期パスの省略可能パラメータ。ローカルホストがリモートホストによる認証を要求すること、および認証プロトコルを使用することを指定します。認証機能が使用可能のときにリモートホストが自分自身を認証しなかった場合は、接続が切断されます。
mode 値は、off (認証なし)、pap (PAP による認証)、chap (CHAP による認証)、または pap|chap (PAP と CHAP による認証) です。デフォルト値は off です。
PAP と CHAP の両方が使用可能の場合は、CHAP 認証が最初に行われます。CHAP 認証をサポートしないリモートホストは、PAP 認証だけを行うことができます。
ローカルホストが PAP 認証を要求する場合の必須パラメータ。リモートホストから希望の PAP 識別子を指定します。pap_id 値は、0 〜 255 文字の任意の文字列です。ゼロ長の値は、expect_pap_id "" によって表します。
ローカルホストが PAP 認証を要求する場合の必須パラメータ。リモートホストから希望の PAP パスワードを指定します。pap_passwd 値は、0 〜 255 文字の任意の文字列です。ゼロ長の値は、expect_pap_passwd "" によって表します。
ローカルホストが CHAP 認証を要求する場合の必須パラメータ。リモートホストから希望の CHAP 名を指定します。chap_name 値は、1 〜 255 文字の任意の文字列です。
ローカルホストが CHAP 認証を要求する場合の必須パラメータ。リモートホストから希望の応答を生成するために、チャレンジ値とともに使用する CHAP シークレットを指定します。chap_secret 値は、1 〜 255 文字の任意の文字列です。
省略可能パラメータ。リモートホストが要求した認証ネゴシエーションをローカルホストが行なったかどうか、および認証プロトコルを使用するかどうかを指定します。
mode 値は、off (認証なし)、pap (PAP による認証)、chap (CHAP による認証)、または pap|chap (PAP と CHAP による認証) です。デフォルト値は off です。
リモートホストが PAP 認証を要求する場合の必須パラメータ。認証を要求するときに、リモートホストに送信する PAP 識別子を指定します。pap_id 値は、0 〜 255 文字の任意の文字列です。
ゼロ長の値は、expect_pap_id "" によって表します。
リモートホストが PAP 認証を要求する場合の必須パラメータ。認証を要求するときにリモートホストに PAP パスワードが送信されます。pap_passwd 値は、0 〜 255 文字の任意の文字列です。
ゼロ長の値は、expect_pap_passwd "" によって表わします。
リモートホストが CHAP 認証を要求する場合の必須パラメータ。認証を要求するときにリモートホストに送信する CHAP 名を指定します。chap_name 値は、1 〜 255 文字の任意の文字列です。
リモートホストが CHAP 認証を要求する場合の必須パラメータ。リモートホストに送信する応答を生成するチャレンジ値とともに使用する CHAP シークレットを指定します。chap_secret 値は、1 〜 255 文字の任意の文字列です。
以下の同期パス定義では、ローカルホストがリモートホストから PAP 認証と CHAP 認証を要求します。ただし、リモートホストによって認証が要求されたとき、ローカルホストは PAP ネゴシエーションだけを行います。
sync_path ip_interface ipdptp0 unix_device zsh0 expect_authentication pap|chap expect_pap_id epic_id expect_pap_passwd epic_passwd expect_chap_name epic_name chap_peer_secret epic_secret send_authentication pap send_pap_id papyrus_id send_pap_passwd papyrus_passwd |
以下の同期パス定義では、1 つの IP インタフェースを使用する 2 つの同期パスにおいて負荷分散機能を使用可能にします。
sync_path ip_interface ipdptp2 unix_device hih0 sync_path ip_interface ipdptp2 unix_device hih1 |
非同期パスはファイル ppp.conf に定義されており、各定義はキーワード dialup_path で始まります。非同期パスは、ポイントツーポイント IP インタフェースとポイントツーマルチポイント IP インタフェースに関連付けることができます。IP アドレスの動的割り当て機能は、非同期パスに対してだけサポートされます。
非同期パス定義の形式は、以下のとおりです。
# Dialup path using static point-to-point IP interface dialup_path ip_interface ipdptpn expect_login_id user_name . . # Dialup path using dynamic point-to-point IP interface dialup_path ip_interface ipdptp* expect_login_id user_name . . # Dialup path using point-to-multipoint IP interface dialup_path ip_interface ipdn expect_login_id user_name remote_ip_addr ip_addr . . |
非同期パスの必須パラメータ。非同期 (ダイヤルアップ) パス定義の始まりを示します。
非同期パスの必須パラメータ。ファイルの ifconfig セクションに定義されているポイントツーポイント (ipdptpn) IP インタフェースまたはポイントツーマルチポイント (ipdn) IP インタフェースのいずれかと非同期パスとを関連付けます。
ポイントツーポイント IP インタフェースには、静的なものと動的なものとの 2 種類があります。静的なポイントツーポイント IP インタフェースは番号によって識別され (ipdptp0、ipdptp1、...、ipdptpn)、以下のように 1 組の発信元 IP アドレスと宛先 IP アドレスをダイヤルアップパスと関連付けます。
dialup_path ip_interface ipdptp0 |
動的 IP インタフェースはサーバー側の IP アドレス動的割り当てに使用され、アスタリスクによって識別されます (ipdptp*)。プールの中にインタフェースが存在するかぎり、必要に応じてインタフェースが割り当てられます。たとえば、以下のように割り当てられます。
dialup_path ip_interface ipdptp* |
発信に使用する非同期パスの必須パラメータ。ファイル link.conf に定義されているリモートホストのいずれかと非同期パスとを関連付けます。name 値は、任意の文字列です。
ポイントツーマルチポイント接続の必須パラメータ。ポイントツーポイント接続の場合は不要です。非同期パスに関連しているリモートホストの IP アドレスを指定します。ip_addr 値は、ファイル /etc/hosts に定義されているホスト名または IP アドレス (ドット表記による) です。
着信呼の受信に使用する非同期パスの必須パラメータ。リモートホストが要求するログイン識別子を指定します。このパラメータは着信呼を特定の非同期パスと関連付けるので、各リモートホストが一意のログイン識別子を持っている必要があります。
login 値は、1 〜 8 文字の任意の小文字の文字列です。リモートホスト上の関連する接続スクリプトに定義されているログイン識別子と等しい必要があります。
admintool(1M) を使用して、このログイン識別子を持つユーザーアカウントを作成することも必要です。詳しい手順については、「着信接続のためのユーザーアカウントの追加」を参照してください。
ポイントツーポイント IP インタフェースの省略可能パラメータ。IP インタフェースに up のマークが付いている場合は、デフォルトの宛先として送信経路がルーティングテーブルに自動的に追加されます。IP インタフェースに down のマークが付いている場合は、送信経路はルーティングテーブルから削除されます。これはクライアント構成、つまり発信呼専用のリンクで使用することが多いパラメータです。ルーティングデーモンがマシン上で実行されているときにこのパラメータを使用すると、ネットワークトラフィックが必要以上に増大するため、このデーモンとの併用は避けてください。
非同期パスの省略可能パラメータ。非同期接続が自動的に切断されるまでの非活動時間を秒数で指定します。
seconds 値は、任意の整数です。デフォルト値は 120 秒 (2 分) です。seconds 値がゼロに設定されている場合は、明示的に切断されるまで接続はオープン状態のままとなります。
非同期パスの省略可能パラメータ。クライアント側に対してだけ、IP アドレス動的割り当て機能を有効にします。state 値が on に設定されている場合は、サーバー側で割り当てられているインタフェースプールにある IP アドレスをクライアントが要求します。
state 値は、on (使用可能) または off (使用不可) です。デフォルト値は off です。
非同期パスの省略可能パラメータ。サーバー側の IP アドレス動的割り当て用に定義されているインタフェースプールからの指定 IP インタフェースを隠ぺいします。同期接続に使用することを目的としたポイントツーポイント IP インタフェースの予約に使用することができます。
非同期パスの省略可能パラメータ。リモートホストからの IP アドレスを受け付けます。ローカルマシンのインタフェースに割り当てられている IP アドレスと異なる場合でも、受け付けます。
state 値は、on (使用可能) または off (使用不可) です。デフォルト値は off です。
非同期パスの省略可能パラメータ。リモートホストが使用する LCP 非同期マップを指定します。LCP 非同期マップは、PPP フレームを使用した送信においてどの制御文字を転置するかを定義する、ネゴシエーション用のパラメータです。
一部のデバイスでは、CTRL-S や CTRL-Q などの 0x00 〜 0x1f の範囲にある制御文字をソフトウェアのフロー制御に使用します。これらのデバイスは PPP フレームで送信する制御文字を解釈し、その結果リンクを切断する場合があります。この問題を避けるには、32 個のすべての制御文字を自動的に転置させ、上記の範囲に該当しないようにします。制御文字のコード化や符号化を行うと、リンクの両端に処理オーバーヘッドがかかります。
LCP 非同期マップは、どの制御文字をリモートホストに転置させるかを定義します。mask 値で 1 に設定されているビットは制御文字を転置することをリモートホストに指示し、ゼロに設定されているビットは制御文字を転置しないことをリモートホストに指示します。リンク内の各デバイスが PPP フレームで受信する制御文字に対してどのように応答するかを予測できる場合は、特定の mask 値を指定することによって一部の制御文字だけをリモートホストに転置させることができます。たとえば、0x0000ffff の mask 値は、最初の 16 個の制御文字だけを転置することをリモートホストに指示します。
デフォルトの mask 値は 0xffffffff です。これによって、32 個のすべての制御文字が転置することがリモートホストに指示されます。mask 値が 0x0 の場合は、制御文字はすべて変更されません。
非同期パスの省略可能パラメータ。PPP フレームのアドレスフィールドとプロトコルフィールドを圧縮するかどうかを指定します。詳細については、付録 A 「PPP リンクの動作」 を参照してください。
state 値は、on (使用可能) または off (使用不可) です。デフォルト値は on です。
同期パスと非同期パスの省略可能パラメータ。ローカルマシンの最大受信ユニット (MRU) を指定します。このパラメータは LCP Configure-request フレームで配信され、リモートホストの最大伝送ユニット (MTU) を設定します。詳細については、付録 A 「PPP リンクの動作」 を参照してください。
デフォルトでは、mru 値は Ethernet ネットワーク用の 1500 バイトに設定されています。
同期パスと非同期パスの省略可能パラメータ。連続的 LCP Cofigure-Request フレームの経過時間を秒数で指定します。衛星接続など遅延時間が長いネットワークを使用して接続する場合は、LCP 再起動タイマー値を上げる必要があることがあります。詳細については、付録 A 「PPP リンクの動作」 を参照してください。
seconds 値は、ゼロより大きい任意の整数です。デフォルト値は 3 秒です。
同期パスと非同期パスの省略可能パラメータ。エンドポイントに接続不可とみなされ、IP インタフェースに down のマークが付けられるまでに生成される未応答 LCP Configure-request フレームの数を指定します。詳細については、付録 A 「PPP リンクの動作」 を参照してください。
max_restart 値は、1 〜 255 の任意の整数です。デフォルト値は 10 です。max_restart 値が 255 に設定されている場合は、リモートホストが応答するまで LCP Configure-Request フレームが定期的に出力されます。
同期パスと非同期パスの省略可能パラメータ。ppptrace と pppstat が使用するリンク名を割り当てます。name 値は、任意の文字列です。
同期パスと非同期パスの省略可能パラメータ。低速リンクにおける性能を Van Jacobson 圧縮方式によって高めるヘッダー圧縮機能の現在状態を示します。詳細については、 付録 A 「PPP リンクの動作」 を参照してください。
state 値は、vj (使用可能) または off (使用不可) です。デフォルト値は vj です。
expect_authentication mode
同期パスと非同期パスの省略可能パラメータ。ローカルホストがリモートホストによる認証を要求すること、および認証プロトコルを使用することを指定します。認証機能が使用可能のときにリモートホストが自分自身を認証しなかった場合は、接続が切断されます。
mode 値は、off (認証なし)、pap (PAP による認証)、chap (CHAP による認証)、または pap|chap (PAP と CHAP による認証) です。デフォルト値は off です。
PAP と CHAP の両方が使用可能の場合は、CHAP 認証が最初に行われます。CHAP 認証をサポートしないリモートホストは、PAP 認証だけを行うことができます。
expect_pap_id pap_id
ローカルホストが PAP 認証を要求する場合の必須パラメータ。リモートホストが要求する PAP 識別子を指定します。pap_id 値は、0 〜 255 文字の任意の文字列です。ゼロ長の値は、expect_pap_id "" によって表します。
expect_pap_passwd pap_passwd
ローカルホストが PAP 認証を要求する場合の必須パラメータ。リモートホストが要求する PAP パスワードを指定します。pap_passwd 値は、0 〜 255 文字の任意の文字列です。ゼロ長の値は、expect_pap_passwd "" によって表します。
expect_chap_name chap_name
ローカルホストが CHAP 認証を要求する場合の必須パラメータ。リモートホストが要求する CHAP 名を指定します。chap_name 値は、1 〜 255 文字の任意の文字列です。
chap_peer_secret chap_secret
ローカルホストが CHAP 認証を要求する場合の必須パラメータ。リモートホストが要求する応答を生成するために、チャレンジ値とともに使用する CHAP シークレットを指定します。chap_secret 値は、1 〜 255 文字の任意の文字列です。
send_authentication mode
省略可能パラメータ。リモートホストが要求する認証ネゴシエーションをローカルホストが行うかどうか、および認証プロトコルを使用するかどうかを指定します。
mode 値は、off (認証なし)、pap (PAP による認証)、chap (CHAP による認証)、または pap|chap (PAP と CHAP による認証) です。デフォルト値は off です。
send_pap_id pap_id
リモートホストが PAP 認証を要求する場合の必須パラメータ。認証を要求したリモートホストに送信する PAP 識別子を指定します。pap_id 値は、0 〜 255 文字の任意の文字列です。
ゼロ長の値は、expect_pap_id "" によって表します。
send_pap_passwd pap_passwd
リモートホストが PAP 認証を要求する場合の必須パラメータ。認証を要求したリモートホストに送信する PAP パスワードを指定します。pap_passwd 値は、0 〜 255 文字の任意の文字列です。
ゼロ長の値は、expect_pap_passwd "" によって表します。
send_chap_name chap_name
リモートホストが CHAP 認証を要求する場合の必須パラメータ。認証を要求したリモートホストに送信する CHAP 名を指定します。chap_name 値は、1 〜 255 文字の任意の文字列です。
chap_own_secret chap_secret
リモートホストが CHAP 認証を要求する場合の必須パラメータ。リモートホストに対する応答を生成するためにチャレンジ値とともに使用する CHAP シークレットを指定します。chap_secret 値は、1 〜 255 文字の任意の文字列です。
以下の非同期パス定義は、ローカルホストがリモートホスト odyssey から CHAP 認証を要求するポイントツーマルチポイント IP インタフェースを示します。
dialup_path ip_interface ipd0 expect_login_id odyssey-login remote_host odyssey remote_ip_addr 129.xxx.xxx.119 inactivity_timeout 120 expect_authentication chap expect_chap_name odyssey_name chap_peer_secret odyssey_secret |
以下の非同期パス定義では、IP アドレス動的割り当て機能がクライアント側で有効です。
dialup_path ip_interface ipdptp0 remote_host odyssey request_ip_addr on |
以下の非同期パス定義では、動的 IP インタフェースが 3 つのダイヤルアップパスに設定されています。
dialup_path ip_interface ipdptp* expect_login_id remote1 dialup_path ip_interface ipdptp* expect_login_id remote2 dialup_path ip_interface ipdptp* expect_login_id remote3 |
同期パス定義と非同期パス定義のすべてに対して適用するデフォルトパラメータリストを、キーワード defaults を使用して定義します。デフォルトリストには、省略可能パラメータをすべて含めることができます。ip_interface や unix_device などの必須パラメータや remote_host や expect_login_id などのファイル間の関連付けの作成に使用するパラメータをデフォルトとして使用することはできません。
同期パスと非同期パスの両方に適用するデフォルトは、慎重に定義してください。特に、同期パスに対して IP アドレスの動的割り当てを定義しないでください。それぞれの種類専用に個別のデフォルトを定義してください。
以下の例では、同期パスと非同期パスに対して個別のデフォルトを定義します。
defaults link_monitor on lcp_mru 4352 sync_path ip_interface ipdptp0 unix_device hih0 sync_path ip_interface ipdptp1 unix_device hih1 defaults inactivity_timeout 180 request_ip_addr on dialup_path ip_interface ipdptp2 remote_host server0 dialup_path ip_interface ipdptp3 remote_host server1 |
リンク構成ファイル (/etc/opt/SUNWconn/ppp/link.conf) は、PPP リンクの確立に使用する同期デバイスと非同期デバイスを定義します。このファイルには、非同期リンクにおける発信情報があります。
リンク構成ファイルの最初のセクションでは、モデム構成ファイルの位置と接続 (CHAT) スクリプトが存在するディレクトリを定義します。デフォルトでは、モデム構成ファイルは、/etc/opt/SUNWconn/ppp/modems です。接続 (CHAT) スクリプトは、ディレクトリ /etc/opt/SUNWconn/ppp/script にあります。
同期デバイスはファイル link.conf に定義されており、各定義はキーワード sync_device で始まります。
同期デバイス定義の形式は、以下のとおりです。
sync_device syncdevn unix_device device_name line_speed line_speed tx_clock txc rx_clock rxc |
同期デバイスの必須パラメータ。同期デバイス定義の始まりを示し、デバイス名を割り当てます。
同期デバイスの必須パラメータ。同期通信に使用するシリアルポートを指定し、ファイル ppp.conf に定義されている同期パスのいずれかと同期デバイスとを関連付けます。device_name 値は、マシンにインストールされている同期シリアルインタフェースを示している必要があります。
たとえば、zshn という形式のデバイス名は、オンボードシリアルインタフェースのいずれかとパスを関連付けます。hihn という形式のデバイス名は、高速シリアルインタフェース (HSI) とパスを関連付けます。
内部クロックが選択されている場合の同期デバイスの必須パラメータ。最適回線速度は、シリアルデバイスによって異なります。デフォルト値は、オンボードシリアルインタフェース (zsh) の最適回線速度です。その他のシリアルデバイスを使用している場合は、デバイスのマニュアルを参照してください。
同期デバイスの必須パラメータ。送信クロック信号のソースを指定します。txc 値は、baud (システムボーレートを使用する内部クロック)、txc (送信ピン上の信号を使用する外部クロック)、または rxc (受信ピン上の信号を使用する外部クロック) です。一般的には、baud (内部クロック) または txc (外部クロック) を送信クロックとして設定します。
同期デバイスの必須パラメータ。受信クロック信号のソースを指定します。rxc 値は、baud (システムボーレートを使用する内部クロック)、txc (送信ピン上の信号を使用する外部クロック)、または rxc (受信ピン上の信号を使用する外部クロック) です。一般的には、内部クロックと外部クロックの両方に rxc を受信クロックとして設定します。
以下の同期デバイス定義では、高速シリアルインタフェース (hih) と外部クロックを使用します。
sync_device syncdev0 qqunix_devicee hih0 line_speed 0 tx_clock txc rx_clock rxc |
以下の同期デバイス定義では、オンボードシリアルインタフェース (zsh) のいずれかと内部クロックを使用します。
sync_device syncdev0 unix_device zsh0 line_speed 19200 tx_clock baud rx_clock rxc |
非同期デバイスはファイル link.conf に定義されており、各定義はキーワード dialup_device で始まります。
非同期デバイス定義の形式は、以下のとおりです。
dialup_device pppdevn unix_device device_name line_speed speed modem modem_id calls call_type |
非同期デバイスの必須パラメータ。非同期定義の始まりを示し、デバイス名を割り当てます。
非同期デバイスの必須パラメータ。ホストとモデムの接続に使用するシリアルポートを指定します。
非同期デバイスの必須パラメータ。ホストとモデムの接続の回線速度を指定します。高性能を確保するには、モデムのボーレート以上の回線速度を使用します。オプション ctsrts は、送信可信号と送信要求信号によるソフトウェアフロー制御を使用可能にします。
非同期デバイスの必須パラメータ。シリアルポートに接続するモデムの種類を指定し、モデムデータベースにある定義のいずれかと非同期デバイスを関連付けます。デフォルトでは、この定義はファイル /etc/opt/SUNWconn/ppp/modems になります。ヌルモデム構成の場合は、このパラメータは none に設定されます。
非同期デバイスの必須パラメータ。呼設定フェーズにおけるデバイスの動作を指定します。call_type 値は、answer (受信専用デバイス)、dial (発信専用デバイス)、または both (送受信デバイス) です。
以下の非同期デバイス定義では、BocaModem V.34 DataFax モデムを使用し、回線速度は 38400 です。最初のデバイスは送受信を行い、2 番目のデバイスは発信だけを行います。
dialup_device pppdev0 unix_device ttya line_speed 38400 modem BocaModem V.34 DataFax call_setup both dialup_device pppdev1 unix_device ttyb line_speed 38400 modem BocaModem V.34 DataFax call_setup dial |
以下の非同期デバイス定義では、ヌルモデム構成において呼を受信します。
dialup_device pppdev0 unix_device ttya line_speed 38400 modem none call_setup answer |
複数の非同期デバイス定義をファイル link.conf に作成した場合は、非同期デバイスのプールを定義することができます。
デバイスプールは、個々のデバイスの場合とまったく同じように 1 個以上のリモートホストと関連付けられます。このようなホストのいずれかに対する着信接続要求や発信接続要求の処理では、プールにデバイスが存在するかぎり、プールから 1 個の非同期デバイスが自動的に選択されます。
デバイスプール定義の形式は、以下のとおりです。
pool_device pooln pppdevn pppdevn+1 ... |
pool_device pooln
デバイスのプールを使用可能にする必須パラメータ。デバイスプール定義の始まりを示し、デバイス名を割り当てます。
pppdevn pppdevn+1 ...
デバイスのプールを使用可能にする必須パラメータ。デバイスプールに含める非同期デバイスのリストを指定します。空白文字またはコンマでデバイス名を区切る必要があります。
以下は、4 個の非同期デバイスで構成するデバイスプールの例です。
pool_device pool0 pppdev0 pppdev1 pppdev2 pppdev3 |
リンク構成ファイル (link.conf) には、ローカルホストからの非同期接続先のリモートホストのリストもあります。リモートホスト定義はすべて、同期デバイスと非同期デバイスの定義の後に入力する必要があります。
リモートホスト定義の形式は、以下のとおりです。
remote_host name phone_number number chat_script filename use_device pppdevn |
リモートホスト定義の必須パラメータ。リモートホスト定義の始まりを示し、PPP パス構成ファイル (ppp.conf) に定義されている非同期パスのいずれかとリモートホストを関連付けます。
リモートホスト定義の必須パラメータ。リモートホストへの発信に使用する電話番号を指定します。構内交換機内への発信の場合は、内線番号を指定することができます。ヌルモデム構成の場合は、ダミーの電話番号を割り当てます。数字以外に # や * などの特殊文字を含む文字を電話番号に使用することができます。一時停止を挿入するには、コンマ (,) を使用します。一時停止は通常 2 秒間ですが、ほとんどのモデムでは一時停止時間を設定することができます。文字 P で始まる電話番号の場合は、パルスダイヤルモードが使用されます。
リモートホスト定義の必須パラメータ。接続の設定ダイアログを定義する CHAT スクリプトがあるファイルの名前を指定します。
リモートホストの省略可能パラメータ。リモートホストが使用するデバイスまたはデバイスプールを指定します。
モデムデータベースファイル (デフォルトでは /etc/opt/SUNWconn/ppp/modems) は、Solstice PPP が認識するモデムを定義します。このファイルには、Solstice PPP が使用する AT コマンド、および着信接続と発信接続においてモデムを初期化するための pppsetmod(1M) コマンドもあります。
モデムの構成情報は、モデムデータベースファイル /etc/opt/SUNWconn/ppp/modems にあります。
pppsetmod(1M) コマンドは、モデム構成ファイルの内容を走査し、あるサーバー構成に合わせてモデムを初期化する、つまり着信呼を待機させる AT コマンドを送信します。クライアント構成で使用するモデムは、発信されるたびにリンクマネージャによって初期化されます。
デフォルトでは、モデムはいったん停止された後、起動されるたびにデフォルトモードにリセットされます。構成内容をモデムに保存すると、再起動時にモデムをサーバーモードに再初期化することができます。
構成内容を保存しないでモデムを初期化するには、以下のように入力します。
prompt# /usr/bin/pppsetmod |
構成内容を保存してモデムを初期化するには、以下のように入力します。
prompt# /usr/bin/pppsetmod -s |
モデムデータベースファイルを変更して、まだサポートされていない専用のモデムの構成情報を追加することができます。モデム構成用 AT コマンドの詳細については、モデムのマニュアルを参照してください。
発信 (クライアント) 接続の場合は、以下を使用可能にする必要があります。
着信 (サーバー) 接続の場合は、以下を使用可能にする必要があります。
新しいモデム定義をモデム構成ファイルに追加する手順は、以下のとおりです。
標準モデムリストを編集することによって、モデムのコマンド定義を指すポインタを追加します。
init コマンド (発信接続用)、reset コマンド、server コマンド (着信接続用) が入ったコマンド定義を追加します。
USRobotics Sporter 288 などのショートバッファーモデムの中には、各 AT コマンドで限定数の文字を受け付けるものがあります。以下のようにコマンドを連結することができます。
server = AT command1 AT command2 AT command3 ... AT commandN |
CHAT (接続) スクリプトは、リンク確立フェーズのときに、各エンドポイント間の情報交換を定義します。デフォルトでは、CHAT スクリプトはディレクトリ /etc/opt/SUNWconn/ppp/script に存在します。ファイル link.conf にある位置定義を編集してファイルを移動することによって、スクリプトの位置を変更することができます。
ローカルホストからの発信先の各リモートホストに、CHAT スクリプトを 1 つ作成する必要があります。CHAT スクリプトには、リモートマシン上のユーザーアカウントを示す一意のログイン識別子を定義します。リモートホストが Solstice PPP を実装している場合、そのログイン識別子は、パラメータ expect_login_id の値としても定義されている必要があります。このパラメータは、マシン上のファイル ppp.conf のダイヤルアップパスのいずれかと関連付けられています。
CHAT スクリプトには、非対話型 (交換すべき情報すべてがスクリプトにある) と対話型 (スクリプトがユーザー入力をプロンプトする) の 2 種類があります。
以下は、Solaris オペレーティングシステムを実装するリモートホストにログインするための簡単な CHAT スクリプトです。この例は、Solstice PPP に添付されている CHAT テンプレートスクリプトをもとに作成されています。
# Chat script for ppp login # # Set the line regarding the remote site configuration # Due to UUCP limitations some systems only accept cs7 # setline cs7 parodd # Start dialog with the remote host send RETURN # Set expected response, retry 3 times at 10 second intervals expect "ogin:" 10 onerror send BREAK repeat 3 # Set login id sent to remote host send "ppp1" # Set response expected from remote host expect "word: " 40 # Set the login password sent to the remote host send "okppp1" |
ログイン識別子とログインパスワードは、リモートホストにおけるログインシーケンスで使用されます。このシーケンスとログインダイアログにおける制限は、オペレーティングシステムによって異なります。
リモートホストが Solaris 環境を実装している場合は、ログイン識別子は 1 〜 8 文字の小文字である必要があります。ログインパスワードには、大文字と小文字の両方を使用することができます。パスワードのサイズは 6 文字以上ですが、最初の 6 文字だけが認識されます。
呼を受信するには、ログイン識別子とログインパスワードを持つユーザーアカウントがリモートホスト上に必要です。リモートホストが Solstice PPP を実装している場合は、ファイル ppp.conf に定義されているダイヤルアップパスのいずれかの expect_login_id パラメータの値としてログイン識別子が定義されている必要があります。
デフォルト CHAT スクリプトを編集して、ログイン識別子とログインパスワードをリモートホストが要求する文字列と置き換えます。以下の CHAT スクリプト例では、ログイン識別子 mylogin とログインパスワード mypasswd を使用してリンクを確立します。
# Chat script for ppp login # # Set the line regarding the remote site configuration # Due to UUCP limitations some systems only accept cs7 # setline cs7 parodd # Start dialog with the remote host send RETURN # Set expected response, retry 3 times at 10 second intervals expect "ogin:" 10 onerror send BREAK repeat 3 # Set login id (mylogin) sent to remote host send "mylogin" # Set response expected from remote host, wait up to 40 seconds expect "word: " 40 # # Set the login password (my passwd) of the remote host send "mypasswd" |
ローカルホストが発信を行うと、ログインシーケンスを開始する前にリモートホストの応答が待機されます。ローカルホストの待機時間とローカルホストの発信試行数は、以下のエントリによって定義されます。
expect "ogin:" 10 onerror send BREAK repeat 3 |
最初の数字 10 は待機時間、2 番目の数字 3 は発信試行数を示します。これらのパラメータは、いずれも変更可能です。
たとえば、5 秒ごとに 10 回発信試行するには、以下のようにエントリを変更します。
expect "ogin:" 5 onerror send BREAK repeat 10 |
デフォルトの CHAT スクリプトでは、2 つの Solaris システム間でリンクを確立すると仮定します。Solaris 以外のオペレーティングシステムを使用しているマシンと接続するには、ログインダイアログを変更する必要がある場合があります。
たとえば、PPP を実装している OpenVMS システムと接続するには、以下のように接続スクリプトを変更します。
send RETURN # Change "ogin:" to "name:" for OpenVMS expect "name:" 10 onerror send BREAK repeat 3 send "ppp" expect "word:" 40 # # Set the ppp password of the remote host here # send "xxxxx" |
CHAT テンプレートスクリプトは、単純な方法によってリモートホストにログインします。CHAT スクリプトを変更し拡張して、より複雑なログインダイアログを作成することができます。ただし、Solstice PPP を実装するリモートホストへの接続を開始するには、リモートホストが認識するログイン識別子を定義し、Solstice PPP ログインサービスを起動する手段を用意する必要があります。
次に示す CHAT スクリプト例は、Solaris 環境を実装するリモートホストにログインし、動作が正常終了したことを示す電子メールメッセージを mailx(1) を起動して送信し、Solstice PPP ログインサービスを起動します。この場合は、スクリプトが送信するログイン識別子に該当するリモートホスト上のユーザーアカウントは、デフォルトシェルとして /usr/bin/csh を使用する必要があります。
# Chat script to invoke mailx on remote # # Set the line regarding the remote site configuration # Due to UUCP limitations some systems only accept cs7 # setline cs7 parodd # Start dialog with the remote host send RETURN # Set expected response, retry 3 times at 10 second intervals expect "ogin:" 10 onerror send BREAK repeat 3 # Set login id (mylogin) sent to remote host send "mylogin" # Set response expected from remote host, wait up to 40 seconds expect "word: " 40 # # Set the login password (my passwd) of the remote host send "mypasswd" # Set response expected from remote host (C-shell prompt) expect "%" # Set command sent to invoke mailx send "echo Login to remote successful | /usr/bin/mailx alias" # Set response expected from remote host (C-shell prompt) expect "%" # Start PPP login service (pppls) on remote send "/usr/sbin/pppls" |
以下の CHAT スクリプトは、telnet ターミナルサーバーへのログインを行います。
# Chat script to login to telnet server # # Set the line regarding the remote site configuration # Due to UUCP limitations some systems only accept cs7 # setline cs7 parodd send RETURN expect "sername:" 10 onerror send RETURN repeat 5 send "your_username" expect "assword:" 35 send "your_password" expect "pc>" 10 onerror send RETURN repeat 2 send "terminal flowcontrol hardware" expect "pc>" 10 onerror send RETURN repeat 2 send "terminal databits 8" expect "pc>" 10 onerror send RETURN repeat 2 send "terminal parity none" expect "pc>" 10 onerror send RETURN repeat 2 send "terminal escape-character 0" expect "pc>" 10 onerror send RETURN repeat 2 send "terminal telnet-transparent" expect "pc>" 10 onerror send RETURN repeat 2 send "telnet your_own_machine" expect "ogin:" onerror send RETURN repeat 5 send "your_login_for_PPP" expect "assword:" 35 send "your_password _for_PPP" |
対話型 CHAT スクリプトでは、echo と read のキーワードを使用して、プロンプトの表示とユーザー入力の取得を行います。ユーザー入力は、接頭辞 $ によって識別される変数として格納されます。以下は、前項で紹介したスクリプトの対話型バージョンの例です。
# Interactive Chat Script Example 1 # # Set the line regarding the remote site configuration # Due to UUCP limitations some systems only accept cs7 # setline cs7 parodd send RETURN expect "ogin:" 10 onerror send BREAK repeat 3 # Display prompt for login id echo "Enter your PPP login id: " # Read the login id from standard input and store in $login read $login # Send the login id to the remote host send "$login" # Set expected response, wait up to 40 seconds expect "word: " 40 # Display prompt for password echo "Enter your PPP password: " # Read the password from standard input and store in $password read $password # Send the password to the remote host send "$password" |
次の例は、ユーザーと動的チャレンジ応答認証システムの対話を管理する、より複雑な CHAT スクリプトです。
# Interactive Chat Script Example 2 # # Set the line regarding the remote site configuration # Due to UUCP limitations some systems only accept cs7 # setline cs7 parodd send RETURN expect "ID:" 10 onerror send BREAK repeat 3 # Display prompt for user number id echo "Enter your user ID number: " # Read the user number id from standard input and store in $id read $id # Send the user number id to the remote host send "$id" # Set expected response, wait up to 10 seconds # Receive the 6 character challenge code expect "Challenge: ${challenge,6}" 10 # Display prompt for the challenge response echo "Enter the response for Challenge ${challenge}: " # Read the user number id from standard input # and store in $response read $response # Send the challenge response to the remote host send "$response" # Set expected response, wait up to 20 seconds expect "${host}:" 20 # Display status and name of remote host on successful connection echo "Connected to ${host}¥n" # Start dialog with remote PPP send "ppp" |
この例では、スクリプトはユーザー識別子を読み取ってサーバーに送信します。文字列 Challenge: で始まるサーバーの応答が 10 秒間待機され、チャレンジ値の次の 6 文字を読み取ります。
次に、スクリプトはチャレンジ値を表示し、ユーザーの応答を待機し、この応答をサーバーに送信します。応答が受け付けられると、接続が確立されます。
中括弧 ({}) は、文字列の一部として他の文字とともに示される変数を区切るために使用します。
BNF を使用して記述する CHAT スクリプトの構文は、次のとおりです。
<chat_script> ::= <script_cmd> | <chat_script> <script_cmd> <script_cmd> ::= <send_cmd> | <expect_cmd> | <echo_cmd> | <read_cmd> <send_cmd> ::= "send" <quoted_string> | "send RETURN" | "send BREAK" <expect_cmd> ::= "expect" <quoted_string> <number> <expect_error> <expect_error> ::= "" | "onerror" <send_repeat> <send_repeat> ::= <send_cmd> <repeat> | <send_cmd> | <repeat> <repeat> ::= "repeat" <number> | "repeat" <echo_cmd> ::= "echo" <quoted_string> <read_cmd> ::= "read" <string> <quoted_string> ::= "((<string>|<number>)[ ]*)+" <string> ::= ([a-zA-Z/_-&.%#@‾+*¥(){}$;:?><!]+[0-9"']*)+ <number> ::= ([0-9,@*#$]*.)?[0-9,@*#$]+ |