アスタリスク インフラTECH wiki

PPP

最終更新:

ootaka

- view
メンバー限定 登録/ログイン
PPPの概要

PPP(Point-to-Point Protocol)は、主としてシリアルインターフェイスを利用してネットワーク接続を行うプロトコル。
主に電話回線を用いてインターネットへダイヤルアップ接続する形態で利用される。PPPに似たプロトコルとしては
SLIP(Serial Line Internet Protocol)があるが、SLIPがTCP/IP専用であるのに対し、PPPではIPX/SPXなどのプロトコルも利用することができる。

PPPはピアツーピアのプロトコルであり、モデムと電話回線を用いて、もしくはシリアルクロスケーブルを用いて、1対1の接続を行う。
接続された双方は対等だが、ここでは説明をわかりやすくするために、PPP接続される側を「PPPサーバ」、PPP接続をする側を「PPPクライアント」と
呼ぶことにします。PPPを処理するpppdデーモンは、基本的なリンクの確立、認証、IPによる接続の確立を提供します。
サーバ、クライアントの双方でpppdデーモンなどのソフトウェアが必要。

接続に必要な機器

電話回線を経由してほかのネットワークやコンピュータに接続するには、アナログ回線の場合はモデムが、デジタル回線(ISDN)の場合はターミナルアダプタ(TA)が必要。
またxDSL、たとえばADSLの場合はADSLモデムが必要です。アナログモデムやTAは通常、シリアルポートに接続されます。
シリアルポートへ接続する外付けの機器ばかりでなく、内蔵するものもありますが、データの送受信はいずれもシリアルポートが使われます。
シリアルポートは、デバイスファイル/dev/ttyS0などで表されます。

認証プロトコル

PPPで利用される認証方法には、次のようなものがある。

  • PAP(Password Authentication Protocol)
クライアントからユーザ名とパスワードの組を送信することで認証を行う。
ユーザ名とパスワードがそのままネットワーク上を流れるため、回線を盗聴されるとすぐにパスワードが分かってしまう危険性がある。
認証に必要なユーザ名やパスワードなどの情報は、/etc/ppp/pap-secretsファイルに格納される。/etc/ppp/pap-secretsファイルは通常、rootだけが読み書きできる。

  • CHAP(Challenge Handshake Authentication Protocol)
チャレンジ/レスポンス方式を用いて認証を行う。この方式では、まずPPPサーバからクライアントに対して、チャレンジコードという乱数を返す。
クライアント側では、チャレンジコード、ユーザ名、パスワードを元に関数値を計算し、それをサーバに送り返す。
サーバ側でも同様の計算を行い、その結果を受け取った値と比較して、同じなら接続が許可される。チャレンジコードは毎回異なるので、万一途中で回線が盗聴されていても、
パスワードが判明してしまう可能性は低くなる。
認証に必要なユーザ名やパスワードなどの情報は、/etc/ppp/chap-secretsファイルに格納される。/etc/ppp/chap-secretsファイルは通常、rootだけが読み書きできる。

PPP接続の流れとchatスクリプト
  • PPP接続の手順
  PPP接続の一般的な手順は、次のとおり。
 1、PPPサーバへの接続
  モデムからPPPサーバに電話をかけ、相手のモデムが応答すると、双方の間で電話回線品質などを考慮して、最適の接続速度が設定される。
 2、ユーザ認証
  PAPもしくはCHAPを用いてユーザアカウントの認証を行う。
 3、接続の確立
  認証が成功すると、PPPサーバはクライアントにIPアドレスを割り当てて、クライアントはインターフェイスppp0を使って必要な経路を設定する。

この手順を自動的に行うため、chatスクリプトが使われる。chatスクリプトは、コンピュータとモデムの間のメッセージ交換を制御し、
サーバ側pppdとクライアント側pppdの接続を確立する。
chatスクリプトには、モデムやPPPサーバから送られてくることが期待されるメッセージと、それに対する応答が記述されている。
次に示すのは、chatスクリプトの設定例である。

chatスクリプト
ABORT BUSY
ABORT ERROR
ABORT 'NO CARREER'
ABORT 'NO DIALTONE'
'' ATZ
OK ADTP775012345
CONNECT ' '
ogin: lpic
ssword: lpic_jp8

1行目から4行目までに指定されているメッセージがモデムから返された場合は、スクリプトの実行は中止される。
5行目以降は、左側に期待されるメッセージ、右側にその際の応答を記述している。
たとえば5行目では、無応答であればモデムに「ATZ」というコマンドを送る。
6行目では、「OK」のメッセージが帰ってきたときには「ADTP775012345」というコマンドをモデムに送る。
8、9行目のメッセージは、最初の1文字もしくは2文字が省略されているが、これは万一メッセージが送られてくる途中で
データの戦闘が壊れてしまっても対応できるようにするためである。
chatスクリプトの実行結果は、/var/log/messages
目安箱バナー