この章では、Solstice PPP を使用して作成したネットワーク構成例を、構成ファイルとともに紹介します。
マシン上の Solstice PPP を構成するには、以下の手順を行なってください。
マシン上の同期 PPP リンクと非同期 PPP リンクの構成を指定するファイル ppp.conf と link.conf を作成します。
非同期接続を開始するには、リンク確立フェーズ時に送信するログイン識別子とログインパスワードを指定する CHAT スクリプトを作成します。
非同期接続を受信するには、リンク確立フェーズで要求されるログイン識別子とログインパスワードを指定するユーザーアカウントを作成します。
図 5-1 は、2 つのローカルエリアネットワーク (LAN) を接続する 1 つの同期 PPP リンクを示します。Solstice PPP を実装している 2 つのホスト (epic と odyssey) は、両ネットワーク間のルーティングゲートウェイとして動作します。両ホストは、パスワード認証プロトコル (PAP) による認証を要求します。

この単純で効率的な実装方法によって、epic と odyssey 間のポイントツーポイント IP 接続が確立されます。各ホストは、ポイントツーポイント IP インタフェースの発信元アドレスとしてプライマリ IP アドレスを使用することができます。
両ホストには、IP ルーターの役割があります。したがって、IP データグラムを正しく配信するには、ファイル /etc/gateways が各ホスト上に存在する必要があります。
この例では、ホストはいずれもオンボードシリアルポート (zsh) を使用してリンクを作成します。ただし、他のシリアルデバイスを使用しても同じリンクを確立することは可能です。
epic の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb
ifconfig ipdptp0 epic odyssey netmask 255.255.255.0 mtu 1500 up
sync_path
ip_interface ipdptp0
unix_device zsh0
expect_authentication pap
expect_pap_id odyssey_id
expect_pap_passwd odyssey_passwd
send_authentication pa
send_pap_id epic_id
send_pap_passwd epic_passwd
|
odyssey の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb
ifconfig ipdptp0 odyssey epic netmask 255.255.255.0 mtu 1500 up
sync_path
ip_interface ipdptp0
unix_device zsh0
expect_authentication pap
expect_pap_id epic_id
expect_pap_passwd epic_passwd
send_authentication pap
send_pap_id odyssey_id
send_pap_passwd odyssey_passwd
|
epic と odyssey のリンク構成ファイル (link.conf)
sync_device syncdev0
unix_device zsh0
line_speed 19200
tx_clock baud
rx_clock rxc
|
図 5-2 は、2 つのシリアル接続を使用して 2 つのローカルエリアネットワーク (LAN) 間に 1 つの同期 PPP リンクを確立する例を示しています。Solstice PPP を実装している 2 つのホスト (epic と odyssey) は、2 つのネットワーク間のルーティングゲートウェイとして動作します。いずれのホストも同位認証を要求しません。

この例は 「同期 LAN 対 LAN の構成」の基本同期リンクに似ていますが、負荷分散構成では両方のオンボードシリアルポートを使用することによって帯域幅を倍加します。
負荷分散は、標準のポイントツーポイントプロトコル (PPP) に対する Sun 独自の拡張機能です。両ホストが Solstice PPP を実装している必要があり、高性能を確保するには両方のシリアルデバイスが同じ回線速度で動作する必要があります。
両ホストは、IP ルーターの役割をします。したがって、IP データグラムを正しく配信するにはファイル /etc/gateways が各ホスト上に存在する必要があります。
epic の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb ifconfig ipdptp0 epic odyssey netmask 255.255.255.0 mtu 1500 up sync_path ip_interface ipdptp0 unix_device zsh0 sync_path ip_interface ipdptp0 unix_device zsh1 |
odyssey の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb ifconfig ipdptp0 odyssey epic netmask 255.255.255.0 mtu 1500 up sync_path ip_interface ipdptp0 unix_device zsh0 sync_path ip_interface ipdptp0 unix_device zsh1 |
epic と odyssey のリンク構成ファイル (link.conf)
sync_device syncdev0
unix_device zsh0
line_speed 19200
tx_clock baud
rx_clock rxc
sync_device syncdev1
unix_device zsh1
line_speed 19200
tx_clock baud
rx_clock rxc
|
図 5-3 は、非同期リンクを使用して 4 個のホスト間に仮想サブネットワークを作成する例を示します。各ホストは、ネットワーク内の任意のホストとの間で 1 度に 1 つのリンクを確立することができます。

非同期リンクを使用した仮想サブネットワークの作成には、ポイントツーマルチポイント IP インタフェースを使用します。一意の IP アドレスを各インタフェースに割り当てる必要があります。
各マシンの PPP 構成ファイル (ppp.conf) では、1 つのポイントツーマルチポイント IP インタフェースに関連付けられたダイヤルアップパスを定義する必要があります。リンク構成ファイル (link.conf) では、ネットワーク内の各リモートホストを定義します。この定義には、接続開始時に使用する電話番号と CHAT (接続) スクリプトの名前が含まれます。
接続を開始するには、リンク確立フェーズ時に送信される一意のログイン識別子とログインパスワードを指定する CHAT (接続) スクリプトを各ホストが使用します。
接続を受信するには、各ホストに対応するユーザーアカウントが必要です。このアカウントによって、リンク確立フェーズで要求される一意なログイン識別子とログインパスワードが指定されます。
epic の PPP 構成ファイル (ppp.conf)
ifconfig ipd0 plumb
ifconfig ipd0 epic-ppp netmask 255.255.255.0 mtu 1500 up
dialup_path
ip_interface ipd0
remote_host odyssey
remote_ip_addr odyssey-ppp
expect_login_id ppp1
dialup_path
ip_interface ipd0
remote_host papyrus
remote_ip_addr papyrus-ppp
expect_login_id ppp2
dialup_path
ip_interface ipd0
remote_host scribbler
remote_ip_addr scribbler-ppp
expect_login_id ppp3
|
epic のリンク構成ファイル (link.conf)
dialup_device pppdev0
unix_device ttya
line_speed 38400
modem BocaModem V.34 DataFax
call_setup both
remote_host odyssey
phone_number 1234561235
chat_script odyssey.script
remote_host papyrus
phone_number 1234561236
chat_script papyrus.script
remote_host scribble
phone_number 1234561237
chat_script scribbler.script
|
odyssey の PPP 構成ファイル (ppp.conf)
ifconfig ipd0 plumb
ifconfig ipd0 odyssey-ppp netmask 255.255.255.0 mtu 1500 up
dialup_path
ip_interface ipd0
remote_host epic
remote_ip_addr epic-ppp
expect_login_id ppp0
dialup_path
ip_interface ipd0
remote_host papyrus
remote_ip_addr papyrus-ppp
expect_login_id ppp2
dialup_path
ip_interface ipd0
remote_host scribbler
remote_ip_addr scribbler-ppp
expect_login_id ppp3
|
odyssey のリンク構成ファイル (link.conf)
dialup_device pppdev0
unix_device ttya
line_speed 38400
modem Cardinal V.34/V.FC 28.8 data/fax
call_setup both
remote_host epic
phone_number 1234561234
chat_script epic.script
remote_host papyrus
phone_number 1234561236
chat_script papyrus.script
remote_host scribbler
phone_number 1234561237
chat_script scribbler.script
|
epic が odyssey への発信に使用する CHAT スクリプト (odyssey.script)
# 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 send "ppp0" expect "word: " 40 # # Set the ppp password of the remote host here # send "epic-pass" |
epic からの呼の受信に使用する odyssey 上のユーザーアカウント

odyssey が epic への発信に使用する CHAT スクリプト (epic.script)
# 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 send "ppp1" expect "word: " 40 # # Set the ppp password of the remote host here # send "odyssey-pass" |
odyssey からの呼の受信に使用する epic 上のユーザーアカウント

図 5-4 は、非同期リンクを使用して少数のクライアントと 1 個のサーバーを接続する例を示します。クライアントはサーバーに対して発信し、サーバーはチャレンジハンドシェーク認証プロトコル (CHAP) による認証を要求します。

サーバーは、1 つのポイントツーマルチポイント IP インタフェースを使用して、複数のクライアントの仮想サブネットワークを作成します。各クライアントは、1 つのポイントツーポイント IP 接続をサーバーに対して確立します。
サーバーに対して発信するには、リンク確立フェーズで送信するログイン識別子とパスワードを指定する CHAT (接続) スクリプトを各クライアントが使用します。
クライアントからの呼を受信するには、サーバーに対応するユーザーアカウントが必要です。このアカウントによって、要求されるログイン識別子とログインのパスワードが指定されます。上記の簡単な例におけるサーバーは、モデムと IP インタフェースを 1 つずつしか持っていないため、1 度に受信できる呼は 1 個だけです。
papyrus の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb
ifconfig ipdptp0 papyrus server netmask 255.255.255.0 mtu 1500 up
dialup_path
ip_interface ipdptp0
remote_host server
send_authentication chap
send_chap_name chap-papyrus
chap_own_secret Secret*1
|
papyrus のリンク構成ファイル (link.conf)
dialup_device pppdev0
unix_device ttya
line_speed 38400
modem BocaModem V.34 DataFax
call_setup dial
remote_host server
phone_number 1234561000
chat_script server.script
|
papyrus が server への発信に使用する CHAT スクリプト (server.script)
# 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 send "ppp_log1" expect "word: " 40 # # Set the ppp password of the remote host here # send "papyrus-pass" |
scribbler の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb
ifconfig ipdptp0 scribbler server netmask 255.255.255.0 mtu 1500
up
dialup_path
ip_interface ipdptp0
remote_host server
send_authentication chap
send_chap_name chap-scribbler
chap_own_secret Secret*2
|
scribbler のリンク構成ファイル (link.conf)
dialup_device pppdev0
unix_device ttya
line_speed 38400
modem Practical 14400 V32bis
call_setup dial
remote_host server
phone_number 1234561000
chat_script server.script
|
scribber が server への発信に使用する CHAT スクリプト (server.script)
# 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 send "ppp_log2" expect "word: " 40 # # Set the ppp password of the remote host here # send "scribbler-pass" |
server の PPP 構成ファイル (ppp.conf)
ifconfig ipd0 plumb
ifconfig ipd0 papyrus netmask 255.255.255.0 mtu 1500 up
dialup_path
ip_interface ipd0
remote_ip_addr papyrus-ppp
expect_login_id ppp_log1
expect_authentication chap
expect_chap_name chap-papyrus
chap_peer_secret Secret*1
dialup_path
ip_interface ipd0
remote_ip_addr scribbler-ppp
expect_login_id ppp_log2
expect_authentication chap
expect_chap_name chap-scribbler
chap_peer_secret Secret*2
|
server のリンク構成ファイル (link.conf)
dialup_device pppdev0
unix_device ttya
line_speed 38400
modem Cardinal V.34/V.FC 28.8 data/fax
call_setup answer
dialup_device ppdev1
unix_device ttyb
line_speed 38400
modem Cardinal V.34/V.FC 28.8 data/fax
call_setup answer
|
papyrus からの呼の受信に使用する server 上のユーザーアカウント

scribbler からの呼の受信に使用する server 上のユーザーアカウント

図 5-5 は、非同期リンクを使用して多数のクライアントを 1 個のサーバーと接続する例を示します。クライアントはサーバーに対して発信し、接続に必要な IP アドレスを要求します。サーバーには、IP アドレスとモデムの各プールがあり、必要に応じてクライアントに割り当てます。この例のサーバーは、パスワード認証プロトコル (PAP) による認証を必要とします。
これは、クライアントと汎用インターネットサーバー間の代表的な接続構成です。

サーバーには、接続されているモデムと同じ数の IP アドレスが入ったプールがあります。モデムが存在するかぎり、サーバーは要求に応じて IP アドレスをリモートクライアントに割り当てます。クライアントは、pppconn(1M) を使用してサーバーとの PPP リンクを確立し、IP 接続に対する IP アドレスの回復を行います。
prompt# /usr/bin/pppconn server |
下記の例では、8 個のモデムが入ったプールを持つサーバーに対して、n 個のクライアントが接続可能です。つまり、8 個のクライアントが同時に接続することができます。
client_0 の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb
ifconfig ipdptp0 netmask 255.255.255.0 down
dialup_path
ip_interface ipdptp0
request_ip_addr on
remote_host server
send_authentication pap
send_pap_id pap_id0
send_pap_passwd pap_passwd0
|
client_0 のリンク構成ファイル (link.conf)
dialup_device pppdev0
unix_device ttya
line_speed 38400
modem BocaModem V.34 DataFax
call_setup dial
remote_host server
phone 1234561000
chat_script server.script
|
client_0 が server への発信に使用する CHAT スクリプト (server.script)
# 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 send "clnt_0" expect "word: " 40 # # Set the ppp password of the remote host here # send "clnt_0-pass" |
server の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb
ifconfig ipdptp0 local remote0 netmask 255.255.255.0 down
ifconfig ipdptp1 plumb
ifconfig ipdptp1 local remote1 netmask 255.255.255.0 down
ifconfig ipdptp2 plumb
ifconfig ipdptp2 local remote2 netmask 255.255.255.0 down
.
.
ifconfig ipdptp8 plumb
ifconfig ipdptp8 local remote8 netmask 255.255.255.0 down
dialup_path
ip_interface ipdptp*
expect_login_id clnt_0
expect_authentication pap
expect_pap_id pap-id0
expect_pap_passwd pap_passwd0
dialup_path
ip_interface ipdptp*
expect_login_id clnt_1
expect_authentication pap
expect_pap_id pap-id1
expect_pap_passwd pap_passwd1
dialup_path
ip_interface ipdptp*
expect_login_id clnt_2
expect_authentication pap
expect_pap_id pap-id2
expect_pap_passwd pap_passwd2
.
.
dialup_path
ip_interface ipdptp*
expect_login_id clnt_n
expect_authentication pap
expect_pap_id pap-idn
expect_pap_passwd pap_passwdn
|
server のリンク構成ファイル (link.conf)
dialup_device pppdev0
unix_device tty0
line_speed 38400
modem Cardinal V.34/V.FC 28.8 data/fax
call_setup answer
dialup_device pppdev1
unix_device tty1
line_speed 38400
modem Cardinal V.34/V.FC 28.8 data/fax
call_setup answer
dialup_device pppdev2
unix_device tty2
line_speed 38400
modem Cardinal V.34/V.FC 28.8 data/fax
call_setup answer
.
.
.
.
dialup_device pppdev10
unix_device tty8
line_speed 38400
modem Cardinal V.34/V.FC 28.8 data/fax
call_setup answer
|
client_0 からの呼の受信に使用する server 上のユーザーアカウント

2 つのホストを直結するには、ヌルモデム構成を使用します。この構成は、モデムを必要としません。この構成に使用できるヌルモデムケーブルについては、付録 B 「モデムケーブルとヌルモデムケーブル」 を参照してください。

この例では、2 つの非同期ヌルモデム接続によって、クライアント lab0251-ppp と lab0252-ppp がサーバーと接続されています。link.conf ファイルの modem キーワードを常に none に設定し、ダミー電話番号をサーバーに割り当てます。
このバージョンでは、電話番号をまったく使用しない場合にも、非同期接続を開始するための電話番号を必ず指定する必要があるという制限があります。
lab0251-ppp の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb
ifconfig ipdptp0 lab0251-ppp server netmask 255.255.255.0 down
dialup_path
ip_interface ipdptp0
remote_host server
inactivity_timeout 120
|
lab0251-ppp のリンク構成ファイル (link.conf)
dialup_device pppdev0
unix_device ttya
line_speed 38400
modem none
call_setup dial
remote_host server
phone 1001
chat_script server.script
|
lab0251-ppp が server への発信に使用する CHAT スクリプト (server.script)
# 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 send "lab0251" expect "word: " 40 # # Set the ppp password of the remote host here # send "lab0251-pass" |
lab0252-ppp の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb
ifconfig ipdptp0 lab0252-ppp server netmask 255.255.255.0 down
dialup_path
ip_interface ipdptp0
remote_host server
inactivity_timeout 120
|
lab0252-ppp のリンク構成ファイル (link.conf)
dialup_device pppdev0
unix_device ttya
line_speed 38400
modem none
call_setup dial
remote_host server
phone 1001
chat_script server.script
|
lab0252-ppp が server への発信に使用する CHAT スクリプト (server.script)
# 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 send "lab0252" expect "word: " 40 # # Set the ppp password of the remote host here # send "lab0252-pass" |
server の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb
ifconfig ipdptp0 server lab0251-ppp netmask 255.255.255.0 down
ifconfig ipdptp1 plumb
ifconfig ipdptp1 server lab0252-ppp netmask 255.255.255.0 down
dialup_path
ip_interface ipdptp0
expect_login_id lab0251
inactivity_timeout 0
dialup_path
ip_interface ipdptp1
expect_login_id lab0252
inactivity_timeout 0
|
server のリンク構成ファイル (link.conf)
dialup_device pppdev
unix_device tty0
line_speed 38400
modem none
call_setup answer
dialup_device pppdev1
unix_device tty1
line_speed 38400
modem none
call_setup answer
|
図 5-7 は、1 個のリモートホストを 1 個の同期 PPP リンクによってローカルエリアネットワーク (LAN) に接続する例を示します。この構成では、リモートホストがネットワークに直結しているように見えます。

この構成を作成するにはいくつかの方法があります。最も単純な方法の 1 つに、ルーター上に arp(1M) コマンドで ARP エントリを作成し、ルーターに ARP プロキシとして動作させ、リモートホストに代わって ARP 要求に応答させる方法があります。PPP リンクに関連付けられている IP インタフェースが up である場合は、ARP プロキシは IP データグラムを自動的にリモートホストに渡します。
この構成を実現するには、以下のようにリモートホストのホスト名 (または IP アドレス) と ARP プロキシの Ethernet アドレスを arp(1M) コマンドによって指定します。
prompt# arp -s hostname ether pub |
変更内容は保存されないので、ルーターをリブートするたびに arp(1M) コマンドを実行する必要があります。ルーターをリモートホストに代わって ARP プロキシとして確実に応答させるには、以下の内容を持つファイル /etc/rc2.d/S99arp を作成します。
#!/bin/sh
#
mode=$1
case "$mode" in
'start')
if [ -f /etc/arp.cf ]; then
echo "Setting proxy arp entries."
/usr/sbin/arp -f /etc/arp.cf
ndd -set /dev/ip ip_forwarding 1
fi
exit 0
;;
'stop')
exit 0
;;
esac
|
/etc/arp.cf ファイルを作成して、リモートホストのホスト名 (または IP アドレス) とルーターの Ethernet アドレスを以下のように定義します。
hostname ether pub |
ルーターをリブートするたびにファイル /etc/arp.cf の内容が読み取られ、リモートホストの ARP プロキシとしてルーターが自動的に構成されます。ファイル /etc/arp.cf にエントリを追加すれば、複数のホストの ARP プロキシとしてルーターを構成することができます。
ドメインネームサービス (DNS) は、ホスト名と IP アドレスを解釈処理するインターネット標準ネームサービスです。DNS を Solstice PPP とともに使用するには、ネームサーバーを指定し、ネームサービスとして DNS を使用可能にする必要があります。図 5-8 は、前節の例を使用した構成例です。

以下の例のように、すべてのネームサーバーのドメイン名と IP アドレスを定義するファイル /etc/resolv.conf を、クライアント上に作成します。
domain xyz.Company.COM nameserver 179.xxx.zzz.11 nameserver ... nameserver ... |
DNS をデフォルトネームサービスとして使用するには、ファイル /etc/nsswitch.conf に定義されている hosts エントリを以下のように編集します。
hosts: files dns |
変更結果は自動的に適用されるので、マシンをリブートする必要はありません。
PPP リンク上の全 IP アドレスを確実に解釈処理可能にするには、ルーターとの接続のダイヤルアップパス定義に default_route キーワードを使用します。この結果、送信経路がデフォルト宛先としてルーティングテーブルに追加されます。IP インタフェースに down のマークを付けると、送信経路は削除されます。
ルーターはネームサービスとして DNS を使用する必要はありませんが、使用してもかまいません。ルーター上では、PPP リンクの IP インタフェースを up と構成することも down と構成することもできます。
インタフェースが up である場合は、マシンのリブート時に IP ルーティングが構成されます。ファイル /etc/gateways が、ルーター上に存在する必要があります。このファイルは、ルーターがゲートウェイであることをネットワーク全体に通知します。
インタフェースが down である場合は、以下のようにルーティングを手動で構成する必要があります。
prompt# ndd -set /dev/ip_forwarding 1 |
リモートホストへの受動経路をルーティングテーブルに追加します。
prompt# route add host remote_host_addr router_addr 1 |
上記の例のリモートホストの送信経路を追加するには、以下のように入力します。
prompt# route add host 179.xxx.zzz.117 179.xxx.yyy.10 1 |
gated などのルーティングメカニズムを使用することによっても、Solstice PPP における IP ルーティングを構成することができます。
パケットアセンブラ/ディスアセンブラ (PAD) によって、マシンは X.25 パケット交換網 (PSDN) を通した交信を行うことができます。PAD は PSDN を通して送信できるように発信パケットをアセンブルし、リモートマシンが読み取ることができるように着信パケットをディスアセンブルします。
PAD 着信呼を受信するように Solstice PPP サーバーを構成することができます。以下は、Solstice PPP と 9.0 以降の SunLink X.25 を実装するサーバーが PAD エミュレータを使用して、PPP クライアントから送信されたパケットを受信する例です。

SunLink X.25 は特別な構成を必要としません。PAD 着信呼を受信できるように構成するだけです。この例では、SunLink X.25 のデフォルト X.3 プロファイルを使用します。
Solstice PPP は、PAD を通常のシリアル回線とみなします。PAD 構成がシリアル回線を構成するので、Solstice PPP に対してシリアル回線を構成する必要はありません。したがって、リンク構成ファイル (link.conf) に対応するエントリは必要ありません。ただし、Solstice PPP を正しく起動するには、リンク構成ファイルが必要です。
X.25 における IP の標準である最大受信ユニット(MRU) は、576 です。高性能を確保するには、PPP パス構成ファイル (ppp.conf) の dialup_path 定義に、lcp_mru キーワードを使用してこの値を設定します。
他の Solstice PPP サーバー構成と同様に、着信接続用のユーザーアカウントを作成する必要があります。
server の PPP 構成ファイル (ppp.conf)
ifconfig ipdptp0 plumb
ifconfig ipdptp0 server client netmask 255.255.255.0 down
dialup_path
ip_interface ipdptp0
expect_login_id clnt_0
lcp_mru 576
|
client からの呼の受信に使用する server 上のユーザーアカウント