Solstice PPP 3.0.1 管理者ガイド

第 4 章 構成ファイルの編集

この章では、Solstice PPP に関連する各構成ファイルの形式と構文について説明します。また、より複雑なネットワーク構成を生成するために構成ファイルを変更する方法について説明します。

Solstice PPP の構成ファイル

Solstice PPP は、以下のファイルにある情報を使用して、同期/非同期 PPP リンクにおける IP 接続を確立します。

PPP パス構成ファイル (ppp.conf)

PPP パス構成ファイル (/etc/opt/SUNWconn/ppp/ppp.conf) は、Solstice PPP リンク上の IP 接続に使用する同期パスと非同期 (ダイヤルアップ) パスを定義します。このファイルには、Solstice PPP の論理 IP インタフェースを確立する ifconfig(1M) コマンドがあります。

このファイルに設定されているパラメータの詳細については、「PPP パス構成ファイル (ppp.conf) の編集」 を参照してください。

リンク構成ファイル (link.conf)

リンク構成ファイル (/etc/opt/SUNWconn/ppp/link.conf) は、PPP リンクの作成に使用する同期デバイスと非同期デバイスを定義します。このファイルには、リモートホストとの非同期リンクを開始するための発信情報があります。

このファイルに設定されているパラメータの詳細については、「リンク構成ファイル (link.conf) の編集」を参照してください。

モデムデータベースファイル (modems)

モデムデータベースファイル (/etc/opt/SUNWconn/ppp/modems) には、Solstice PPP が認識するモデムが記述されています。また、着信接続と発信接続においてモデムを初期化するときに、Solstice PPP が使用する AT コマンドも記述されています。

このファイルに新しいモデムの記述を追加する方法については、「モデムデータベースファイル (modems) の編集」を参照してください。

CHAT (接続) スクリプト

CHAT (接続) スクリプトは、リンク確立フェーズで行われるエンドポイント間の情報交換を定義します。デフォルトでは、CHAT スクリプトはディレクトリ /etc/opt/SUNWconn/ppp/script に存在します。ファイル link.conf 中の定義を編集しファイルを移動して、スクリプトの場所を変更することができます。CHAT スクリプトには、非対話型 (交換すべき情報がすべてスクリプト中にある) と対話型 (スクリプトがユーザー入力を促すプロンプトを表示する) の 2 種類があります。

ローカルホストから発信対象の各リモートホストに、CHAT スクリプトを 1 個作成する必要があります。CHAT スクリプトの内容の一部は、リモートホストのオペレーティングシステムによって異なります。PPP 初期設定スクリプト (pppinit) は、Solaris 環境を実装するホストと接続するためのテンプレートファイルを作成することができます。Solaris 以外のオペレーティングシステム用にテンプレートファイルを変更する手順については、「CHAT (接続) スクリプトの編集」を参照してください。

ユーザーアカウントファイル (/etc/passwd/etc/shadow)

リモートホストが開始した非同期 PPP 接続を受信するには、このリモートホストのユーザーアカウントがローカルマシン上に作成されている必要があります。admintool(1M) を使用し、図 4-1 に示すエントリをローカルユーザーアカウントファイル /etc/passwd/etc/shadow に追加します。

図 4-1 /etc/passwd の PPP ログインエントリ

Graphic

構成ファイルの組み合わせ例

図 4-2 は、ppp.conflink.conf のファイルを組み合わせることによって、同期 PPP リンク上のポイントツーポイント IP 接続を定義する例を示しています。

図 4-2 同期接続に使用する構成ファイル

Graphic

図 4-3 は、非同期 PPP リンクにおけるリモートホストとのポイントツーポイント IP 接続の開始に使用する、ファイル ppp.conflink.conf と CHAT スクリプトの関係を示しています。

図 4-4 は、非同期 PPP リンクにおけるリモートホストとのポイントツーポイント IP 接続の受信に使用する、ファイル ppp.conflink.conf とユーザーアカウントの関係を示しています。

図 4-3 非同期接続を開始する構成ファイル

Graphic

図 4-4 非同期接続を受信する構成ファイル

Graphic

PPP パス構成ファイル (ppp.conf) の編集

PPP パス構成ファイル (/etc/opt/SUNWconn/ppp/ppp.conf) には、Solstice PPP における IP に使用する同期パスと非同期 (ダイヤルアップ) パスが記述されます。また、Solstice PPP の論理 IP インタフェースを確立する ifconfig(1M) も記述されています。

ifconfig による IP インタフェースの定義

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 インタフェースには、ipdptp0ipdptp1ipdptp2ipd0ipd1ipd2 のように、ゼロから順に番号を付けます。

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 インタフェースプールの定義

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) の定義」 を参照してください。

同期パス (sync_path) の定義

同期パスはファイル ppp.conf に定義されており、各定義はキーワード sync_path で始まります。同期パスは、必ずポイントツーポイント IP インタフェースに関連付けられます。

形式

同期パス定義の形式は、以下のとおりです。


sync_path
     ip_interface      ipdptpn
     unix_device       device_name
	.
	.
	.

キーワード

sync_path

同期パスの必須パラメータ。同期パス定義の始まりを示します。

ip_interface ipdptpn

同期パスの必須パラメータ。ファイルの ifconfig セクションに定義されているポイントツーポイント IP インタフェースのいずれかと同期パスを関連付けます。複数の同期パスが 1 つの IP インタフェースを共用する場合は、負荷分散機能が使用可能になります。

unix_device device

同期パスの必須パラメータ。ファイル link.conf に定義されている同期デバイスのいずれかと同期パスとを関連付けます。値 device は、マシンにインストールされている同期シリアルインタフェースを示している必要があります。

たとえば、zshn という形式のデバイス名は、オンボードシリアルインタフェースのいずれかとパスを関連付けます。hihn という形式のデバイス名は、高速シリアルインタフェース (HSI) とパスを関連付けます。

default_route

同期パスの省略可能パラメータ。送信経路をデフォルトの宛先としてルーティングテーブルに追加します。IP インタフェースに down のマークが付いている場合は、送信経路は削除されます。

accept_any_ip_addr state

同期パスの省略可能パラメータ。リモートホストからの IP アドレスを受け付けます。ローカルマシンのインタフェースに割り当てられている IP アドレスと異なる場合でも、受け付けます。

state 値は、on (使用可能) または off (使用不可) です。デフォルト値は off です。

link_monitor state

同期パスの省略可能パラメータ。リンクモニターの現在の状態を示します。使用可能状態のリンクモニターは、定期的なエコー要求をリモートホストに送信します。指定した数の要求を行なってもリモートホストが応答しなかった場合、リンクモニターはリンクに障害が発生したと仮定します。このリンクにおける IP データグラムの伝送を停止するため、リンクモニターは同期パスに関連付けられている IP インタフェースに down のマークを付けます。

state 値は、on (使用可能) または off (使用不可) です。デフォルト値は off です。

link_monitor_timer seconds

同期パスの省略可能パラメータ。リンクモニターが生成する連続的エコー要求の時間間隔を秒数で指定します。

seconds 値は、ゼロより大きい任意の整数です。デフォルト値は 5 秒です。

link_monitor_retries max_retries

同期パスの省略可能パラメータ。リモートホストが接続不可とみなされ IP インタフェースが使用禁止されるまでにリンクモニターが生成する未応答エコー要求の数を指定します。

max_retries 値は、ゼロより大きい任意の整数です。デフォルト値は 12 です。

ppp_link_name name

同期パスと非同期パスの省略可能パラメータ。ppptracepppstat がリンクの識別に使用する名前を割り当てます。name 値は、任意の文字列です。

ipcp_compression state

同期パスと非同期パスの省略可能パラメータ。低速リンクにおける性能を Van Jacobson 圧縮方式によって高めるヘッダー圧縮機能の現在状態を示します。

state 値は、vj (使用可能) または off (使用不可) です。デフォルト値は vj です。

lcp_mru mru

同期パスと非同期パスの省略可能パラメータ。ローカルマシンの最大受信ユニット (MRU) を指定します。このパラメータは LCP Configure-request フレームで配信され、リモートホストの最大伝送ユニット (MTU) を設定します。詳細については、付録 A 「PPP リンクの動作」 を参照してください。

デフォルトでは、mru 値は Ethernet ネットワーク用の 1500 バイトに設定されています。

lcp_restart_timer seconds

同期パスと非同期パスの省略可能パラメータ。連続的 LCP Configure-request フレームの時間間隔を秒数で指定します。衛星接続など遅延時間が長いネットワークを使用して接続する場合は、LCP 再起動タイマー値を上げる必要が生じることがあります。詳細については、付録 A 「PPP リンクの動作」 を参照してください。

seconds 値は、ゼロより大きい任意の整数です。デフォルト値は 3 秒です。

lcp_max_restart max_restart

同期パスと非同期パスの省略可能パラメータ。エンドポイントが接続不可とみなされ、IP インタフェースに down のマークが付けられるまでに生成される未応答 LCP Configure-request フレームの数を指定します。詳細については、付録 A 「PPP リンクの動作」 を参照してください。

max_restart 値は、1 〜 255 の任意の整数です。デフォルト値は 10 です。max_restart 値が 255 に設定されている場合は、リモートホストが応答するまで LCP Configure-request フレームが定期的に生成されます。

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 文字の任意の文字列です。

以下の同期パス定義では、ローカルホストがリモートホストから 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

非同期パス (dialup_path) の定義

非同期パスはファイル 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
	.
	.

キーワード

dialup_path

非同期パスの必須パラメータ。非同期 (ダイヤルアップ) パス定義の始まりを示します。

ip_interface interface

非同期パスの必須パラメータ。ファイルの ifconfig セクションに定義されているポイントツーポイント (ipdptpn) IP インタフェースまたはポイントツーマルチポイント (ipdn) IP インタフェースのいずれかと非同期パスとを関連付けます。

ポイントツーポイント IP インタフェースには、静的なものと動的なものとの 2 種類があります。静的なポイントツーポイント IP インタフェースは番号によって識別され (ipdptp0ipdptp1、...、ipdptpn)、以下のように 1 組の発信元 IP アドレスと宛先 IP アドレスをダイヤルアップパスと関連付けます。


dialup_path
    ip_interface        ipdptp0

動的 IP インタフェースはサーバー側の IP アドレス動的割り当てに使用され、アスタリスクによって識別されます (ipdptp*)。プールの中にインタフェースが存在するかぎり、必要に応じてインタフェースが割り当てられます。たとえば、以下のように割り当てられます。


dialup_path
    ip_interface        ipdptp*

remote_host name

発信に使用する非同期パスの必須パラメータ。ファイル link.conf に定義されているリモートホストのいずれかと非同期パスとを関連付けます。name 値は、任意の文字列です。

remote_ip_addr ip_addr

ポイントツーマルチポイント接続の必須パラメータ。ポイントツーポイント接続の場合は不要です。非同期パスに関連しているリモートホストの IP アドレスを指定します。ip_addr 値は、ファイル /etc/hosts に定義されているホスト名または IP アドレス (ドット表記による) です。

expect_login_id login

着信呼の受信に使用する非同期パスの必須パラメータ。リモートホストが要求するログイン識別子を指定します。このパラメータは着信呼を特定の非同期パスと関連付けるので、各リモートホストが一意のログイン識別子を持っている必要があります。

login 値は、1 〜 8 文字の任意の小文字の文字列です。リモートホスト上の関連する接続スクリプトに定義されているログイン識別子と等しい必要があります。

admintool(1M) を使用して、このログイン識別子を持つユーザーアカウントを作成することも必要です。詳しい手順については、「着信接続のためのユーザーアカウントの追加」を参照してください。

default_route

ポイントツーポイント IP インタフェースの省略可能パラメータ。IP インタフェースに up のマークが付いている場合は、デフォルトの宛先として送信経路がルーティングテーブルに自動的に追加されます。IP インタフェースに down のマークが付いている場合は、送信経路はルーティングテーブルから削除されます。これはクライアント構成、つまり発信呼専用のリンクで使用することが多いパラメータです。ルーティングデーモンがマシン上で実行されているときにこのパラメータを使用すると、ネットワークトラフィックが必要以上に増大するため、このデーモンとの併用は避けてください。

inactivity_timeout seconds

非同期パスの省略可能パラメータ。非同期接続が自動的に切断されるまでの非活動時間を秒数で指定します。

seconds 値は、任意の整数です。デフォルト値は 120 秒 (2 分) です。seconds 値がゼロに設定されている場合は、明示的に切断されるまで接続はオープン状態のままとなります。

request_ip_addr state

非同期パスの省略可能パラメータ。クライアント側に対してだけ、IP アドレス動的割り当て機能を有効にします。state 値が on に設定されている場合は、サーバー側で割り当てられているインタフェースプールにある IP アドレスをクライアントが要求します。

state 値は、on (使用可能) または off (使用不可) です。デフォルト値は off です。

private ip_interface

非同期パスの省略可能パラメータ。サーバー側の IP アドレス動的割り当て用に定義されているインタフェースプールからの指定 IP インタフェースを隠ぺいします。同期接続に使用することを目的としたポイントツーポイント IP インタフェースの予約に使用することができます。

accept_any_ip_addr state

非同期パスの省略可能パラメータ。リモートホストからの IP アドレスを受け付けます。ローカルマシンのインタフェースに割り当てられている IP アドレスと異なる場合でも、受け付けます。

state 値は、on (使用可能) または off (使用不可) です。デフォルト値は off です。

lcp_async_map mask

非同期パスの省略可能パラメータ。リモートホストが使用する LCP 非同期マップを指定します。LCP 非同期マップは、PPP フレームを使用した送信においてどの制御文字を転置するかを定義する、ネゴシエーション用のパラメータです。

一部のデバイスでは、CTRL-SCTRL-Q などの 0x000x1f の範囲にある制御文字をソフトウェアのフロー制御に使用します。これらのデバイスは PPP フレームで送信する制御文字を解釈し、その結果リンクを切断する場合があります。この問題を避けるには、32 個のすべての制御文字を自動的に転置させ、上記の範囲に該当しないようにします。制御文字のコード化や符号化を行うと、リンクの両端に処理オーバーヘッドがかかります。

LCP 非同期マップは、どの制御文字をリモートホストに転置させるかを定義します。mask 値で 1 に設定されているビットは制御文字を転置することをリモートホストに指示し、ゼロに設定されているビットは制御文字を転置しないことをリモートホストに指示します。リンク内の各デバイスが PPP フレームで受信する制御文字に対してどのように応答するかを予測できる場合は、特定の mask 値を指定することによって一部の制御文字だけをリモートホストに転置させることができます。たとえば、0x0000ffffmask 値は、最初の 16 個の制御文字だけを転置することをリモートホストに指示します。

デフォルトの mask 値は 0xffffffff です。これによって、32 個のすべての制御文字が転置することがリモートホストに指示されます。mask 値が 0x0 の場合は、制御文字はすべて変更されません。

lcp_compression state

非同期パスの省略可能パラメータ。PPP フレームのアドレスフィールドとプロトコルフィールドを圧縮するかどうかを指定します。詳細については、付録 A 「PPP リンクの動作」 を参照してください。

state 値は、on (使用可能) または off (使用不可) です。デフォルト値は on です。

lcp_mru mru

同期パスと非同期パスの省略可能パラメータ。ローカルマシンの最大受信ユニット (MRU) を指定します。このパラメータは LCP Configure-request フレームで配信され、リモートホストの最大伝送ユニット (MTU) を設定します。詳細については、付録 A 「PPP リンクの動作」 を参照してください。

デフォルトでは、mru 値は Ethernet ネットワーク用の 1500 バイトに設定されています。

lcp_restart_timer seconds

同期パスと非同期パスの省略可能パラメータ。連続的 LCP Cofigure-Request フレームの経過時間を秒数で指定します。衛星接続など遅延時間が長いネットワークを使用して接続する場合は、LCP 再起動タイマー値を上げる必要があることがあります。詳細については、付録 A 「PPP リンクの動作」 を参照してください。

seconds 値は、ゼロより大きい任意の整数です。デフォルト値は 3 秒です。

lcp_max_restart max_restart

同期パスと非同期パスの省略可能パラメータ。エンドポイントに接続不可とみなされ、IP インタフェースに down のマークが付けられるまでに生成される未応答 LCP Configure-request フレームの数を指定します。詳細については、付録 A 「PPP リンクの動作」 を参照してください。

max_restart 値は、1 〜 255 の任意の整数です。デフォルト値は 10 です。max_restart 値が 255 に設定されている場合は、リモートホストが応答するまで LCP Configure-Request フレームが定期的に出力されます。

ppp_link_name name

同期パスと非同期パスの省略可能パラメータ。ppptracepppstat が使用するリンク名を割り当てます。name 値は、任意の文字列です。

ipcp_compression state

同期パスと非同期パスの省略可能パラメータ。低速リンクにおける性能を 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_interfaceunix_device などの必須パラメータや remote_hostexpect_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

リンク構成ファイル (link.conf) の編集

リンク構成ファイル (/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

キーワード

sync_device syncdevn

同期デバイスの必須パラメータ。同期デバイス定義の始まりを示し、デバイス名を割り当てます。

unix_device device_name

同期デバイスの必須パラメータ。同期通信に使用するシリアルポートを指定し、ファイル ppp.conf に定義されている同期パスのいずれかと同期デバイスとを関連付けます。device_name 値は、マシンにインストールされている同期シリアルインタフェースを示している必要があります。

たとえば、zshn という形式のデバイス名は、オンボードシリアルインタフェースのいずれかとパスを関連付けます。hihn という形式のデバイス名は、高速シリアルインタフェース (HSI) とパスを関連付けます。

line_speed line_speed

内部クロックが選択されている場合の同期デバイスの必須パラメータ。最適回線速度は、シリアルデバイスによって異なります。デフォルト値は、オンボードシリアルインタフェース (zsh) の最適回線速度です。その他のシリアルデバイスを使用している場合は、デバイスのマニュアルを参照してください。

tx_clock txc

同期デバイスの必須パラメータ。送信クロック信号のソースを指定します。txc 値は、baud (システムボーレートを使用する内部クロック)、txc (送信ピン上の信号を使用する外部クロック)、または rxc (受信ピン上の信号を使用する外部クロック) です。一般的には、baud (内部クロック) または txc (外部クロック) を送信クロックとして設定します。

rx_clock rxc

同期デバイスの必須パラメータ。受信クロック信号のソースを指定します。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

キーワード

dialup_device pppdevn

非同期デバイスの必須パラメータ。非同期定義の始まりを示し、デバイス名を割り当てます。

unix_device device_name

非同期デバイスの必須パラメータ。ホストとモデムの接続に使用するシリアルポートを指定します。

line_speed speed [ctsrts]

非同期デバイスの必須パラメータ。ホストとモデムの接続の回線速度を指定します。高性能を確保するには、モデムのボーレート以上の回線速度を使用します。オプション ctsrts は、送信可信号と送信要求信号によるソフトウェアフロー制御を使用可能にします。

modem modem_id

非同期デバイスの必須パラメータ。シリアルポートに接続するモデムの種類を指定し、モデムデータベースにある定義のいずれかと非同期デバイスを関連付けます。デフォルトでは、この定義はファイル /etc/opt/SUNWconn/ppp/modems になります。ヌルモデム構成の場合は、このパラメータは none に設定されます。

call_setup call_type

非同期デバイスの必須パラメータ。呼設定フェーズにおけるデバイスの動作を指定します。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

キーワード

remote_host name

リモートホスト定義の必須パラメータ。リモートホスト定義の始まりを示し、PPP パス構成ファイル (ppp.conf) に定義されている非同期パスのいずれかとリモートホストを関連付けます。

phone_number number

リモートホスト定義の必須パラメータ。リモートホストへの発信に使用する電話番号を指定します。構内交換機内への発信の場合は、内線番号を指定することができます。ヌルモデム構成の場合は、ダミーの電話番号を割り当てます。数字以外に #* などの特殊文字を含む文字を電話番号に使用することができます。一時停止を挿入するには、コンマ (,) を使用します。一時停止は通常 2 秒間ですが、ほとんどのモデムでは一時停止時間を設定することができます。文字 P で始まる電話番号の場合は、パルスダイヤルモードが使用されます。

chat_script filename

リモートホスト定義の必須パラメータ。接続の設定ダイアログを定義する CHAT スクリプトがあるファイルの名前を指定します。

use_device pppdev n または pooln

リモートホストの省略可能パラメータ。リモートホストが使用するデバイスまたはデバイスプールを指定します。

モデムデータベースファイル (modems) の編集

モデムデータベースファイル (デフォルトでは /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 コマンドの詳細については、モデムのマニュアルを参照してください。

発信 (クライアント) 接続の場合は、以下を使用可能にする必要があります。

着信 (サーバー) 接続の場合は、以下を使用可能にする必要があります。

新しいモデム定義をモデム構成ファイルに追加する手順は、以下のとおりです。

  1. 標準モデムリストを編集することによって、モデムのコマンド定義を指すポインタを追加します。

    Graphic
  2. init コマンド (発信接続用)、reset コマンド、server コマンド (着信接続用) が入ったコマンド定義を追加します。

    Graphic

    USRobotics Sporter 288 などのショートバッファーモデムの中には、各 AT コマンドで限定数の文字を受け付けるものがあります。以下のようにコマンドを連結することができます。


    server = AT command1 AT command2  AT command3 ...  AT commandN
    

CHAT (接続) スクリプトの編集

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 スクリプト

対話型 CHAT スクリプトでは、echoread のキーワードを使用して、プロンプトの表示とユーザー入力の取得を行います。ユーザー入力は、接頭辞 $ によって識別される変数として格納されます。以下は、前項で紹介したスクリプトの対話型バージョンの例です。


# 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 文字を読み取ります。

次に、スクリプトはチャレンジ値を表示し、ユーザーの応答を待機し、この応答をサーバーに送信します。応答が受け付けられると、接続が確立されます。

中括弧 ({}) は、文字列の一部として他の文字とともに示される変数を区切るために使用します。

CHAT スクリプト構文

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,@*#$]+