PPP over Ethernet (PPPoE)

$Date: 2004/10/25 $


概要

BRIなどの回線インタフェース経由でLAN間接続をする場合、Point-to-Point Protocol(以下PPP,RFC1661)が使用されます。このPPPをイーサネット上で実現 するものがPPP over Ethernet(以下PPPoE,RFC2516)です。イーサネットを介し てISPなどに接続する場合に使用されます。例えばフレッツ・ADSLを利用する 場合、このPPPoEを使ってISPへの接続を行うことになります。

PPPoEでは、PPPとしての認証やIPアドレス割当てのプロトコルを使うことがで きます。例えば、イーサネット経由でPPPoEサーバ(アクセスコンセントレータ) にPPP接続してIPアドレスの割り当てやDNSサーバアドレスの通知を受け、その 割り当てられたIPアドレスを使ったIPマスカレード接続により、複数のLAN側 ホストが同時に通信することができます。

RTにPPPoEの設定を行うことで、アクセスコンセントレータとの対応とIP パケットのPPPoEへのカプセル化はRTが行うことになります。そのため、 LAN側のPC上ではPPPoEユーティリティツールの使用や設定の変更などは必要あ りません。

以下に接続の一例と各レイヤでの通信相手を示します。

┌─┐│                
│PC├┤   PPPoEクライアント                PPPoEサーバ
└─┘│  LAN側┌─┐WAN側  ┌─────┐  ┌───┐  ┌──┐
   ├────┤RT├────┤ADSLモデム├──┤DSLAM ├──┤BAS ├───
┌─┐│Ethernet└─┘Ethernet└─────┘ADSL└───┘OC-3└──┘Ethernet
│PC├┤                                                        
└─┘│                                                          
                                           <------------------> ATM
     <---------->    <------------------------------------------>   <--- … イーサネット
                   <----------------------------------------------> PPPoE
   <-------------------------------------------------------------------- … IP
※DSLAM:Digital Subscriber Line Access Multiplexer, この場合はADSL回線終端装置
※BAS:Broadband Access Server, この場合はアクセスコンセントレータ, ユーザ認証や接続管理などを行う
※IPの通信範囲に関しては、IPマスカレードを使わない場合を示しています。

RTに設定するconfigとしては、PPに対する設定となります。 PPPoEを使用するLANインタフェースの明示コマンド(pppoe useコマンド)の他は、従来のPPに対する設定と 基本的には同じです。ただし、MPと圧縮機能は使用できません。またパケット サイズのネゴシエーションについて設定する必要があります。

connect/disconnectコマンドによる手動接続/切断も可能です。切断タイマは デフォルトでは無効になっており、一度接続されると自動での切断は行いませ ん。切断の必要がある場合にはpppoe disconnect timeコマンドpppoe auto disconnectコマンドで設定します。

また設定によっては、PPPoEパケットを上図のLAN側に対して送出することも可 能です。しかしその場合、LAN側とWAN側とが同一物理セグメントとなり、WAN 側からもLAN側のパケットを観察できることになりますので、セキュリティ上 の問題が発生する可能性があります。

実装されているPPPoE機能はクライアントとして動作しますので、サーバに対 するアクセスは可能ですが、接続のない状態からPPPoEでのアクセスを受ける ことはできません。

なおこの機能は、Rev.5.01.21あるいはRev.6.01.06以降のファームウェアで 使用することができます。


設定のポイント

PPPを使用する場合、LCPでMRU(Maximum-Receive-Unit)オプションを使ってパ ケットサイズのネゴシエーションがなされます。RTでは、デフォルトでは MRUオプションの値を1792オクテットとしてネゴシエーションを行います。

BRIなどの回線インタフェースを使用する場合はこのデフォルト設定で問題あ りませんが、PPPoEとしてイーサネット上でPPPを使用する場合にはこれが問題 となります。イーサネットフレーム中のデータフィールドの最大長は1500オク テットとして規定されています。このサイズよりも大きなパケットは送信時に 分割転送(あるいは破棄)が発生し、これはスループットの低下など通信の異常 につながります。

このためRTでは、ppp lcp mruコマンドでネ ゴシエーションを行うMRUオプションの値(パケットサイズ)を制限する必要が あります。例えばフレッツ・ADSLでは、MRUオプションは1454オクテットとし てネゴシエーションを要求しますので、これに合わせるのがよいでしょう。こ の場合、コマンドはppp lcp mru on 1454となります。

設定すべき値が不明である場合には、1492(RFC2516で規定されているPPPoEでの MRUの最大値)以下の値を設定してください。通信に異常がある場合、この値を 小さく設定することで現象が改善されることがあります。

またRTでは、MTU(Maximum Transfer Unit)については接続先から通知され るMRUオプションのネゴシエーション結果を反映させます。接続先からMRUを通 知されない場合にはip pp mtuコマンドで明示する必要があります。その場合の 設定値はMRUオプションで通知する値(ppp lcp mruコマンドでの設定値)と同じ 値でよいでしょう。

なお、通信を行うPCのOS側で送出パケットサイズを調整することで、スループッ トの向上が見られることもあるようです。詳細はOSメーカーへ問い合わせてい ただくか、あるいはユーザの情報交換の場をご利用されるとよいでしょう。

対応していません。PPPoEを使用するPPでは、MPを使う(ppp mp use onコマン ド)設定をしてはいけません。

対応していません。RTでは、デフォルトでstac圧縮を使う設定になってい ますので、圧縮を使わないように設定する(ppp ccp type noneコマンド)必要 があります。

CHAP/PAP認証、IPCPによるIPアドレスやDNSサーバアドレスの取得、また NAT/IPマスカレードに関しては、従来のPP設定と同様に使うことができます。


設定例

例1.IPマスカレード機能を使ったPPPoE接続

[構成図]

 192.168.0.0/24        
┌─┐│                
│PC├┤  LAN側             WAN側
└─┘│    LAN1┌───┐LAN2   ┌───┐
   ├─────┤ルータ├─────┤モデム├─ ISP
┌─┐│ Ethernet └───┘ Ethernet └───┘
│PC├┤192.168.0.1/24           
└─┘│
           │
    private address │ global address
           │

[設定手順]

# ip lan1 address 192.168.0.1/24
# nat descriptor type 1 masquerade
# pp select 1
pp1# pppoe use lan2
pp1# pp auth accept chap pap
pp1# pp auth myname ID PASSWORD
pp1# ppp ipcp ipaddress on
pp1# ppp ipcp msext on
pp1# ip pp nat descriptor 1
pp1# ppp lcp mru on 1454
pp1# ip pp mtu 1454
pp1# ppp ccp type none
pp1# pp enable 1
pp1# pp select none
# ip route default gateway pp 1
# dns server pp 1
# dns private address spoof on
# dhcp service server
# dhcp scope 1 192.168.0.2-192.168.0.254/24
# save

[解説]

# ip lan1 address 192.168.0.1/24

LAN1側をプライベートアドレスネットワークとします。

# nat descriptor type 1 masquerade

pp1にIPマスカレード機能を適用するためのNATディスクリプタを定義します。

# pp select 1
pp1# pppoe use lan2

LAN2側に対してPPPoEを使用するよう設定します。この1行以外の設定は、基本 的にはダイヤルアップで端末型接続する場合と同じです。

pp1# pp auth accept chap pap
pp1# pp auth myname ID PASSWORD

PPPoEサーバとの認証情報を設定します。

pp1# ppp ipcp ipaddress on

接続時にサーバからアドレスを得るよう設定します。

pp1# ppp ipcp msext on

この設定により接続時にサーバからDNSサーバアドレスの通知を受けることが できます。

pp1# ip pp nat descriptor 1

IPマスカレード機能を定義したNATディスクリプタをpp1に適用します。

pp1# ppp lcp mru on 1454

LCPのネゴシエーションでMaximum-Receive-Unitオプションを使用し、パケッ トの最大長を制限します。

pp1# ip pp mtu 1454

このコマンドは、接続相手からLCPでMRUオプションを受ける場合には必要あ りません。pp1に対するMTU(Maximum Transfer Unit)を設定します。

pp1# ppp ccp type none

圧縮機能は使用できません。デフォルトではstac圧縮を使うようネゴシエーショ ンすることになりますので、noneに設定する必要があります。

pp1# pp enable 1
pp1# pp select none

# ip route default gateway pp 1

宛先がLAN外である全てのパケットを送るためのデフォルトルートをpp1に設定 します。

# dns server pp 1

DNSサーバアドレスは、pp1から取得するアドレスを使用します。

# dns private address spoof on

プライベートアドレスのDNSアドレス解決要求をDNSサーバに転送しないよう設 定します。

# dhcp service server
# dhcp scope 1 192.168.0.2-192.168.0.254/24

LAN1側のホストにプライベートアドレスをリースするためのDHCPサーバ機能を 設定します。

# save

例2.全ホストがグローバルアドレスを持つPPPoE接続

[構成図]

 172.16.128.0/29        
┌─┐│                
│PC├┤  LAN側             WAN側
└─┘│    LAN1┌───┐LAN2   ┌───┐
   ├─────┤ルータ├─────┤モデム├─ ISP
┌─┐│ Ethernet └───┘ Ethernet └───┘
│PC├┤172.16.128.1/29
└─┘│

[設定手順]

# ip lan1 address 172.16.128.1/29
# pp select 1
pp1# pppoe use lan2
pp1# pp auth accept chap pap
pp1# pp auth myname ID PASSWORD
pp1# ppp lcp mru on 1454
pp1# ip pp mtu 1454
pp1# ppp ccp type none
pp1# pp enable 1
pp1# pp select none
# ip route default gateway pp 1
# save

[解説]

# ip lan1 address 172.16.128.1/29

LAN1側アドレスを設定します。またLAN側の全てのホストは、このネットワー ク内のグローバルアドレスを持ちます。

# pp select 1
pp1# pppoe use lan2

LAN2側に対してPPPoEを使用するよう設定します。この1行以外の設定は、基本 的にはダイヤルアップでネットワーク型接続する場合と同じです。

pp1# pp auth accept chap pap
pp1# pp auth myname ID PASSWORD

PPPoEサーバとの認証情報を設定します。

pp1# ppp lcp mru on 1454

LCPのネゴシエーションでMaximum-Receive-Unitオプションを使用し、パケッ トの最大長を制限します。

pp1# ip pp mtu 1454

このコマンドは、接続相手からLCPでMRUオプションを受ける場合には必要あ りません。pp1に対するMTU(Maximum Transfer Unit)を設定します。

pp1# ppp ccp type none

圧縮機能は使用できません。デフォルトではstac圧縮を使うようネゴシエーショ ンすることになりますので、noneに設定する必要があります。

pp1# pp enable 1
pp1# pp select none
# ip route default gateway pp 1

宛先がLAN外である全てのパケットを送るためのデフォルトルートをpp1に設定 します。

# save


コマンド仕様

PPPoEで使用するLANインタフェース

[入力形式]
pppoe use INTERFACE
no pppoe use [INTERFACE]
[パラメータ]
INTERFACE ... PPPoEで使用するLANインタフェース
[説明]
選択されている相手に対して、PPPoEで使用するLANインタフェースを指定 する。設定がない場合は、PPPoEは使われない。

アクセスコンセントレータの名前の指定

[入力形式]
pppoe access concentrator NAME
no pppoe access concentrator [NAME]
[パラメータ]
NAME ... アクセスコンセントレータの名前を表す文字列(7bit US-ASCII、64文字以内)
[説明]
選択されている相手についてPPPoEで接続するアクセスコンセントレータ の名前を設定する。接続できるアクセスコンセントレータが複数ある場合 に、どのアクセスコンセントレータに接続するのかを指定する場合に使用 する。

PADIパケットの再送時間の初期値の設定

[入力形式]
pppoe padi restart TIME
[パラメータ]
TIME ... ミリ秒 (20..10000)
[説明]
PADIパケットの再送時間を設定する。
[デフォルト値]
3000

PADIパケットの最大再送回数の設定

[入力形式]
pppoe padi maxretry COUNT
パラメータ]
COUNT ... 回数 (1..10)
[説明]
PADIパケットの最大再送回数を設定する。
[デフォルト値]
5

PADRパケットの再送時間の初期値の設定

[入力形式]
pppoe padr restart TIME
[パラメータ]
TIME ... ミリ秒 (20..10000)
[説明]
PADRパケットの再送時間を設定する。
[デフォルト値]
3000

PADRパケットの最大再送回数の設定

[入力形式]
pppoe padr maxretry COUNT
[パラメータ]
COUNT ... 回数 (1..10)
[説明]
PADRパケットの最大再送回数を設定する。
[デフォルト値]
5

PPPoEセッションの自動接続の設定

[入力形式]
pppoe auto connect SW
[パラメータ]
SW
・on ... 自動接続する
・off ... 自動接続しない
[説明]
選択されている相手に対して、PPPoEセッションを自動で接続するか否か を選択する。
[デフォルト値]
on

PPPoEセッションの自動切断の設定

[入力形式]
pppoe auto disconnect SW
[パラメータ]
SW
・on ... 自動切断する
・off ... 自動切断しない
[説明]
選択されている相手に対して、PPPoEセッションを自動で切断するか否か を選択する。
[デフォルト値]
on

PPPoEセッションの切断タイマの設定

[入力形式]
pppoe disconnect time TIME
[パラメータ]
TIME
・秒数(1..21474836)
・off ... タイマを設定しない
[説明]
選択されている相手に対して、タイムアウトによりPPPoEセッションを自 動切断する時間を設定する。
[デフォルト値]
off

TCPパケットのMSSの制限の有無とサイズの指定

[入力形式]
pppoe tcp mss limit off
pppoe tcp mss limit auto
pppoe tcp mss limit LENGTH
[パラメータ]
off ... MSSを制限しない
auto ... MSSをMTUの値に応じて制限する
LENGTH
1240 〜1452 ... MSSオプションとして書き換える値
[説明]
PPPoEセッション上でTCPパケットのMSSを制限するかどうかを設定する。
[デフォルト値]
pppoe tcp mss limit auto
[ノート]
1452 = 1492(PPPoEのMTU) - 40(IPヘッダ長+TCPヘッダ長)
1414 = 1454(フレッツ・ADSLで指定可能なMRUの最小値) - 40(IPヘッダ長+TCPヘッダ長)
1240 = 1280(ppp lcp mru で指定可能な最小値) - 40(IPヘッダ長+TCPヘッダ長)
autoの場合、"MTUの値 - 40"を書き換えるべき値とする。

※以下のコマンドは、PPPoEに合わせて仕様が変更となる

Maximum Receive Unitオプション使用の設定

[入力形式]
ppp lcp mru SW [LENGTH]
[パラメータ]
SW
・on ... 使用する
・off ... 使用しない
LENGTH
1280 〜1792 ... MRU の値
※従来は1500と1792の2通りの値しか指定できなかった
[説明]
Maximum-Receive-Unitオプションを使用するか否かを選択する。
[デフォルト値]
SW = on
LENGTH = 1792

接続ログ例

接続時のログ及び状態表示の一例です。


関連リリースノート