$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設定と同様に使うことができます。
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
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
SW | |
・on ... 自動接続する | |
・off ... 自動接続しない |
SW | |
・on ... 自動切断する | |
・off ... 自動切断しない |
TIME | |
・秒数(1..21474836) | |
・off ... タイマを設定しない |
off ... MSSを制限しない | |
auto ... MSSをMTUの値に応じて制限する | |
LENGTH | |
1240 〜1452 ... MSSオプションとして書き換える値 |
※以下のコマンドは、PPPoEに合わせて仕様が変更となる
SW | |
・on ... 使用する | |
・off ... 使用しない | |
LENGTH | |
1280 〜1792 ... MRU の値 | |
※従来は1500と1792の2通りの値しか指定できなかった |
接続時のログ及び状態表示の一例です。
console info on ip lan1 address 192.168.0.1/24 pp select 1 pppoe use lan2 pp auth accept pap chap pp auth myname ID PASSWORD ppp lcp mru on 1454 ppp ipcp ipaddress on ppp ipcp msext on ppp ccp type none ip pp mtu 1454 ip pp nat descriptor 1 pp enable 1 ip route default gateway pp 1 nat descriptor type 1 masquerade syslog debug on tftp host any dhcp service server dhcp scope 1 192.168.0.2-192.168.0.254/24 dns server pp 1 dns private address spoof on
2001/04/18 19:18:09: PPPOE[01] Connecting to PPPoE server 2001/04/18 19:18:09: PPPOE[01] SEND PADI 2001/04/18 19:18:09: 11 09 00 00 00 0e 01 01 00 00 01 03 00 06 59 e1 2001/04/18 19:18:09: 93 41 04 82 2001/04/18 19:18:09: PPPOE[01] RECV PADO 2001/04/18 19:18:09: 11 07 00 00 00 2b 01 02 00 05 ** ** ** ** ** 01 2001/04/18 19:18:09: 01 00 00 01 04 00 10 29 3e ea ff 0a aa e8 f6 13 2001/04/18 19:18:09: 01 60 d6 9c ad a5 ba 01 03 00 06 59 e1 93 41 04 2001/04/18 19:18:09: 82 2001/04/18 19:18:09: PPPOE[01] SEND PADR 2001/04/18 19:18:09: 11 19 00 00 00 2b 01 01 00 00 01 02 00 05 ** ** 2001/04/18 19:18:09: ** ** ** 01 04 00 10 29 3e ea ff 0a aa e8 f6 13 2001/04/18 19:18:09: 01 60 d6 9c ad a5 ba 01 03 00 06 59 e1 93 41 04 2001/04/18 19:18:09: 82 2001/04/18 19:18:09: PPPOE[01] RECV PADS 2001/04/18 19:18:09: 11 65 00 03 00 0e 01 01 00 00 01 03 00 06 59 e1 2001/04/18 19:18:09: 93 41 04 82
ここまでがPPPoEのディスカバリステージと呼ばれる段階で、PPPoEサーバ(アクセスコンセントレータ)を識別しています。 以降はPPPセッションステージとなりPPPのネゴシエーションが行われます。
2001/04/18 19:18:09: PPPOE[01] PPPoE Connect 2001/04/18 19:18:09: 02 a0 de ff fe 00 4c c3 2001/04/18 19:18:09: PP[01] SEND LCP ConfReq in STARTING 2001/04/18 19:18:09: c0 21 01 01 00 0e 01 04 05 ae 05 06 00 e7 50 ec 2001/04/18 19:18:10: PP[01] RECV LCP ConfReq in REQSENT 2001/04/18 19:18:10: c0 21 01 01 00 12 01 04 05 ae 03 04 c0 23 05 06 2001/04/18 19:18:10: 5d 4e 66 f6 ff 0a aa e8 f6 13 01 60 d6 9c ad a5 2001/04/18 19:18:10: ba 01 03 00 06 59 e1 93 2001/04/18 19:18:10: PP[01] SEND LCP ConfAck in REQSENT 2001/04/18 19:18:10: c0 21 02 01 00 12 01 04 05 ae 03 04 c0 23 05 06 2001/04/18 19:18:10: 5d 4e 66 f6 2001/04/18 19:18:12: PP[01] SEND LCP ConfReq in ACKSENT 2001/04/18 19:18:12: c0 21 01 01 00 0e 01 04 05 ae 05 06 00 e7 50 ec 2001/04/18 19:18:12: PP[01] RECV LCP ConfAck in ACKSENT 2001/04/18 19:18:12: c0 21 02 01 00 0e 01 04 05 ae 05 06 00 e7 50 ec 2001/04/18 19:18:12: 5d 4e 66 f6 ff 0a aa e8 f6 13 01 60 d6 9c ad a5 2001/04/18 19:18:12: ba 01 03 00 06 59 e1 93 2001/04/18 19:18:12: PP[01] SEND UPAP AuthReq in CS_CLOSED/SS_CLOSED 2001/04/18 19:18:12: c0 23 01 01 00 14 05 ** ** ** ** ** 09 ** ** ** 2001/04/18 19:18:12: ** ** ** ** ** ** 2001/04/18 19:18:12: PP[01] RECV UPAP AuthAck in CS_AUTHREQ/SS_CLOSED 2001/04/18 19:18:12: c0 23 02 01 00 0d 08 4c 6f 67 69 6e 20 6f 6b 16 2001/04/18 19:18:12: 5d 4e 66 f6 ff 0a aa e8 f6 13 01 60 d6 9c ad a5 2001/04/18 19:18:12: ba 01 03 00 06 59 e1 93 2001/04/18 19:18:12: PP[01] SEND IPCP ConfReq in STARTING 2001/04/18 19:18:12: 80 21 01 01 00 16 03 06 00 00 00 00 81 06 00 00 2001/04/18 19:18:12: 00 00 83 06 00 00 00 00 2001/04/18 19:18:12: PP[01] RECV IPCP ConfReq in REQSENT 2001/04/18 19:18:12: 80 21 01 01 00 0a 03 06 ** ** ** ** 74 69 63 61 2001/04/18 19:18:12: 74 69 6f 6e 20 66 61 69 6c 65 64 00 eb c5 fd a1 2001/04/18 19:18:12: e0 01 03 00 06 59 e1 93 2001/04/18 19:18:12: PP[01] SEND IPCP ConfAck in REQSENT 2001/04/18 19:18:12: 80 21 02 01 00 0a 03 06 ** ** ** ** 2001/04/18 19:18:12: PP[01] RECV IPCP ConfNak in ACKSENT 2001/04/18 19:18:12: 80 21 03 01 00 16 03 06 ** ** ** ** 81 06 ** ** 2001/04/18 19:18:12: ** ** 83 06 ** ** ** ** f6 13 01 60 d6 9c ad a5 2001/04/18 19:18:12: ba 01 03 00 06 59 e1 93 2001/04/18 19:18:12: PP[01] SEND IPCP ConfReq in ACKSENT 2001/04/18 19:18:12: 80 21 01 02 00 16 03 06 ** ** ** ** 81 06 ** ** 2001/04/18 19:18:12: ** ** 83 06 ** ** ** ** 2001/04/18 19:18:12: PP[01] RECV IPCP ConfAck in ACKSENT 2001/04/18 19:18:12: 80 21 02 02 00 16 03 06 ** ** ** ** 81 06 ** ** 2001/04/18 19:18:12: ** ** 83 06 ** ** ** ** f6 13 01 60 d6 9c ad a5 2001/04/18 19:18:12: ba 01 03 00 06 59 e1 93 2001/04/18 19:18:12: PP[01] PPP/IPCP up 2001/04/18 19:18:12: PP[01] Local PP IP address ***.***.***.*** 2001/04/18 19:18:12: PP[01] Remote PP IP address ***.***.***.***
pp1# show status pp 1 PP[01]: PPPoEセッションは接続されています 接続相手: ***** 通信時間: 16秒 受信: 9 パケット [417 オクテット] 負荷: 0.0% 送信: 10 パケット [267 オクテット] 負荷: 0.0% PPPオプション LCP Local: Magic-Number MRU, Remote: PAP Magic-Number MRU IPCP Local: IP-Address Primary-DNS(***.***.***.***) Secondary-DNS(***.***.***.***), Remote: IP-Address PP IP Address Local: ***.***.***.***, Remote: ***.***.***.*** CCP: None 送ったUserId: ***** pp1# show nat descriptor address 参照NATディスクリプタ : 1, 適用インタフェース : PP[01](1) Masqueradeテーブル 外側アドレス: ipcp/***.***.***.*** プロトコル 内側アドレス 宛先 マスカレード TTL(秒) --------------------- - --- 有効なNATディスクリプタテーブルが1個ありました
2001/04/18 19:18:43: PP[01] SEND LCP TermReq in OPENED 2001/04/18 19:18:43: c0 21 05 02 00 04 2001/04/18 19:18:43: PP[01] RECV LCP TermAck in CLOSING 2001/04/18 19:18:43: c0 21 06 02 00 04 03 06 ** ** ** ** 81 06 ** ** 2001/04/18 19:18:43: ** ** 83 06 ** ** ** ** f6 13 01 60 d6 9c ad a5 2001/04/18 19:18:43: ba 01 03 00 06 59 e1 93 2001/04/18 19:18:43: PPPOE[01] Disconnecting, cause [No error.] 2001/04/18 19:18:43: PPPOE[01] SEND PADT 2001/04/18 19:18:43: 11 a7 00 03 00 00 2001/04/18 19:18:44: PPPOE[01] Disconnected, cause [No error.]