この章では、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 上のユーザーアカウント