PPPOE(8) PPPOE(8)
名前
pppoe - ユーザー空間 PPPoE クライアント
書式
pppd pty ’pppoe [pppoe_options]’ [pppd_options]
pppoe -A [pppoe_options]
説明
pppoe は、PPPoE (Point-to-Point Protocol over Ethernet) のユーザー空間
クライアントであり、 Linux やその他の UNIX 系システムで利用 で き る 。
pppoe は、イーサーネット上で PPP 接続を提供する PPP デーモン pppd と関
連して動作する。このような pppd は多くの ADSL サービス提供業者で使わ れ
ている。
オプション
-I interface
-I オプションは、使用するイーサーネットインターフェースを指定す
る。 Linux 上では、eth0 や eth1 が一般的である。インターフェース
は pppoe を開始する前に「アップ (起動)」しておかなければならない
が、 IP アドレスを設定してはならない。
-T timeout
-T オプションを用いると、セッション中に timeout 秒間データのやり
と りがない場合に pppoe を終了する。このオプションはおまけの安全
装置として用いることを薦める。ただし利用する場合は、PPP がたくさ
んのトラフィックを通していて、通常はタイムアウトが起こらないであ
ろう事を確認しておくように。一番良い方法は lcp-echo-interval オ
プ ションをつけて pppd を実行することである。 PPPoE タイムアウト
は LCP echo interval の 4 倍程度に設定するのが良い。
-D file_name
-D オプションを用いると、全てのパケットが指 定 し た フ ァ イ ル
file_name に書き出される。このオプションはデバッグ専用のものであ
る。このオプションを用いると、大量の出力が行われて、非常に性能が
下がる。
-V -V オプションを用いると、 pppoe はバージョン番号を表示して終了す
る。
-A -A オプションを用いると、 pppoe は PADI パケットを送信して、 (返
信されてきた) 受信 PADO パケットにあったアクセス集信装置の名前を
表示する。このオプションを pppd と組み合わせて使ってはならない。
-A オプションは、アクセス集信装置についての重要な情報を対話的に
取得することを目的としている。
-S service_name
使いたいサービスの名前を指定する。 pppoe は、指定したサービス を
提供するアクセス集信装置とのセッションを初期化するだけである。多
くの場合、このオプションを指定するべきではない。複数のアクセス集
信装置があることが解っている場合や、特別なサービス名が必要である
ことが解っている場合にのみ、このオプションを使うべきである。
-C ac_name
使いたいアクセス集信装置の名前を指定する。 pppoe は、アクセス 集
信装置とのセッションを初期化するだけである。多くの場合、このオプ
ションを指定するべきではない。複数のアクセス集信装置があることが
解っている場合にのみ、このオプションを使うべきである。 -S オプシ
ョンと -C オプションを両方指定した場合、 pppoe が接続を初期化 す
るためには、両方にマッチする必要がある。
-U こ の オ プションを指定すると、 pppoe は discovery パケット中の
Host-Uniq タグを使う。これを用いると複数の pppoe デーモンを起 動
し 、それぞれの discovery パケットが混信しないようにできる。複数
の pppoe デーモンを同時に実行しようとする場合には、全ての pppoe
デーモンにこのオプションを付けなければならない。
-s このオプションを指定すると、pppoe は 同期 PPP カプセル化を使う。
このオプションを使う場合、 pppd に sync オプションをつけなければ
ならない。もし動作するならば、 pppoe の CPU オーバーヘッドを減ら
すことができるので、このオプションを用いることを推奨する。しかし
、 遅いマシンでは信頼性がないかもしれない -- pppd によるデータの
書き込みと pppoe によるデータの読み込みに、競合状態が起こるか も
しれない。のこのような理由により、デフォルトの設定は非同期である
。同期 PPP でバグがあったりクラッシュしたりしたら、同期をオフ に
す ること -- 同期のサポートについて私に E メールを送らないこと !
-m MSS このオプションを指定すると、 pppoe は TCP maximum segment size (
最大セグメントサイズ) を指定した値に固定 (clamp) する。 PPPoE の
オーバーヘッドにより、PPPoE の最大セグメントサイズは通常のイーサ
ーネットカプセル化のものより小さい。このため、PPPoE を使ったゲー
トウェイの後にある LAN 上のマシンで問題が発生する。ゲートウェ イ
の後ろに LAN があり、ゲートウェイが PPPoE を使ってインターネット
に接続されている場合、 -m 1412 オプションを使うことを強く推奨 す
る 。これにより、LAN 上の全てのホストが MTU を設定するのを避けら
れる。
-p file
このオプションを指定すると、 pppoe はプロセス ID を指定したフ ァ
イ ルに書き出す。 pppoe のプロセス ID を取得したり kill したりす
るのに使うことができる。
-e sess:mac
このオプションを指定すると、 pppoe は発見 (discovery) の段階を省
略して、セッションの段階に移る。セッションは sess で指定され、接
続先の MAC アドレスは mac で指定される。このモードは通常の使用を
意 図したものではない。これは pppoe-server(8) のために設計されて
いる。
-n このオプションを指定すると、 pppoe は discovery ソケットをオープ
ン し ない。このモードは通常の使用を意図したものではない。これは
pppoe-server(8) のために設計されている。
-k このオプションを指定すると、 pppoe はセッションを終了して自ら も
終了するために、 PADT フレームを送って終了する。このオプションは
、kill するセッションを指定するために -e オプションと組み合わ せ
て使わなければならない。このオプションは、バグのある接続先がセッ
ションを終了できない場合に役立つ。
-d このオプションを指定すると、 pppoe はセッション情報を標準出力 に
書き出した後に、発見を行って終了する。表示されるセッション情報は
、 -e オプションで用いられる形式と全く同じである。このオプション
は PPPoE の発見を初期化して、その他の処理を行った後で、実際の
PPP セッションを開始する。注意して使うこと。このオプションをルー
プ中で使うと、接続先を悩ませるような多くのセッションを作ってしま
う。
-f disc:sess
-f オプションは、PPPoE の discovery フレームと session フレー ム
で使うイーサーネットフレームタイプを設定する。タイプはコロンで区
切られた 16 進数で指定する。標準的な PPPoE では、フレームタイ プ
8863:8864 を使う。接続先が標準的でないフレームタイプを使っている
ことがはっきり解っている場合以外は、このオプションを使うべきでは
ない。使用している ISP (インターネットサービス提供業者) が標準的
でないフレームタイプを使っている場合は、苦情を言った方がよい !
-h -h オプションを指定すると、 pppoe は使用法を表示して終了する。
PPPOE の背景
PPPoE (Point-to-Point Protocol over Ethernet) は RFC 2516 に記述され て
い る。このプロトコルは、ブリッジしたイーサーネットワーク上でセッション
を抽象化して維持できる。
PPPoE は PPP フレームをイーサーネットフレームでカプセル化することにより
動作する。このプロトコルには、発見とセッションという 2 つの異なるステー
ジがある。
発見ステージでは、ホストはアクセス集信装置を発見するために特別 な PADI
(PPPoE Active Discovery Initiation) フレームをブロードキャストする。 (
一般的には、ただ 1 つの) アクセス集信装置が PADO (PPPoE Active Discov-
ery Offer) パケットを返し、集信装置が存在することとサービスを提供するこ
とを知らせる。ホストはアクセス集信装置を 1 つ選び、セッションを開いても
らうために PADR (PPPoE Active Discovery Request) パケットを送る。アクセ
ス集信装置は PADS (PPPoE Active Discovery Session-Confirmation) パケ ッ
トで応答する。この後、プロトコルはセッションステージに移行する。
セ ッションステージでは、ホストとアクセス集信装置の間でイーサーネットフ
レームに埋め込まれた PPP フレームがやりとりされる。通常のイーサーネット
MTU は 1500 バイトであるが、 PPPoE のオーバーヘッドに加え、カプセル化さ
れた PPP フレームによる 2 バイトのオーバーヘッドがあるので、 PPP インタ
ー フェースの MTU は最大 1492 バイトになる。 Linux マシンをファイアーウ
ォールとして使用しており、ファイアーウォールの背後にあるインターフェ ー
スの MTU が 1492 より大きいと、あらゆる問題が発生しうる。実際、安全のた
めにファイアーウォールの後ろのマシンの MTU を 1412 に指定しておくことを
推奨する。これにより、ヘッダに TCP オプションと IP オプションが入るとい
う最悪の場合も許容できる。
通常 PPP は接続をシャットダウンするために Link Control Protocol (LCP)
を 使 う。しかし PPPoE の仕様では、接続をシャットダウンするために特別な
PADT (PPPoE Active Discovery Terminate) パケットを使うことも許されて い
る 。 こ のクライアントは、PPP セッションに対する終了要求を受け取ると、
PADT パケットを認識して正しくセッションを終了する。
設計の目標
この PPPoE クライアントの設計目標は以下の通りである。重要なものから順に
並べてある:
o 動作すること。
o ユーザー空間のプログラムであり、カーネルへのパッチにはしない。
o コードを読みやすくメンテナンスしやすくする。
o 提案されている PPPoE 規格、RFC 2516 に完全に準拠する。
o 絶対にハングアップしない -- 接続が切れた場合でも、検知して終了す
る。接続を再開するラッパースクリプトを使えるようにする。
o 能率を高くする。
これらの目標をすべて達成していると考えているが、指摘・パッチ・アイデ ィ
ア などがあれば (もちろん) 受け入れる。連絡を取るための情報については、
私のホームページ http://www.roaringpenguin.com を参照すること。
注意
最良の結果を得るためには、pppd の mtu オプションを 1492 にしなければ な
ら ない。このオプションを設定しなかった場合、非常に大きなフレームを受け
取るといった問題があった。さらに、pppoe がファイアーウォール上で動作 し
ている場合、ファイアウォールの背後のマシンは MTU を 1412 にしておくべき
である。
問題がある場合は、システムログをチェックすること。 pppoe は重要なことを
syslog に記録している。診断を完全にするためには、debug レベルのメッセー
ジを記録できるようにしておいた方がよい。
著者
pppoe は、Luke Stras による初期のバージョンに示唆を受けて 、 David F.
Skoll
コロナウイルスの日ごとの感染者数・死者数をグラフ化してみました。どの国が増加傾向にあり、どの国が終息に向かっているかを視覚化しています。
Copyright(C) linux-cmd.com All Rights Reserved. Author Takayuki Yukawa