構成図
要件
- CiscoのIOSで設定
- 端末型払い出し(一つのIPが割り当てられる)
- IPは固定で指定する
- 認証はPPPoEサーバ側でローカル認証で行う
user | password | IPアドレス | |
---|---|---|---|
Router-A (PPPoEクライアント) | user-a@izuminmin.com | user123 | 30.1.1.1/32 |
R2 (PPPoEサーバ) | – | – | 10.1.1.1/32 (Loopback) |
設定
特権モードのパスワードやSSH設定など基本的な部分は完了している状態からスタート。
PPPoEサーバー設定(R2)
ユーザーの作成
まずはユーザを作成
(config)#username user-a@izuminmin.com password 0 user123
IPアドレスの設定
LoopbackにIPアドレスを指定する。
ここはLoopbackなので/32で問題ない。
(config)#int lo 0
(config-if)#ip add 10.1.1.1 255.255.255.255
(config-if)#no shut
(config-if)#exit
PPPoEクライアントに渡すIPアドレスを設定
プールには「USER-A」と名前をつけた。
(config)#ip local pool USER-A-POOL 30.1.1.1
PPPoEサーバの仮想インターフェースの設定
下のリンクにあるように、PPPoEを利用するには8byteのヘッダの付与が必要。
MTUは1500byteであるため、1492byteにする。
しかし、プロバイダ側にてL2TPを利用しているBフレッツではMTUが異なり1454byteにする。
プロバイダによって異なるため、確認を取ることが重要。
今回は、フレッツである1454を採用する。
(config)#int Virtual-Template1
(config-if)#mtu 1454 //フレッツのMTU
(config-if)#ip unnumbered lo0 //lo0のIPを使う
(config-if)#peer default ip address pool USER-A-POOL //割り当てるIPプールを指定
(config-if)#ppp authentication chap //認証にCHAPを利用
(config-if)#ppp ipcp dns 8.8.8.8 //DNSをIPCPで渡す
(config-if)#exit
bba-groupの設定
bba-groupは仮想インターフェースと物理インターフェースをつなげる役割。
(config)#bba-group pppoe BBA-USER-A
(config-bba-group)#virtual-template 1 //仮想インターフェースを割り当てる。
(config-bba-group)#exit
インターフェースに適用
bba-groupを適用する。
(config)#interface g0/1
(config-if)#pppoe enable group BBA-USER-A //bba-groupを割り当てる。
(config-if)#no shut
(config-if)#exit
PPPoEクライアント設定(Router-A)
こちらも特権モードのパスワードやSSH設定など基本的な部分は完了している状態からスタート。
まずはPPPoEクライアントの設定から。
ダイヤラインターフェースの作成
Dialerインターフェースは認証に成功したらリンクアップするインターフェース。
(config)#interface dialer 1 //番号は自由
(config-if)#ip add negotiated //IPアドレスをIPCPで取得する
(config-if)#ip mtu 1454 //プロバイダに合わせる。今回はサーバ側で1454を採用している
(config-if)#encapsulation ppp //PPPでカプセル化する。
(config-if)#dialer pool 1 //番号は自由だが、この番号をインターフェースで適用する
(config-if)#dialer-group 1 //番号は自由だが、後述するダイヤラグループとマップする
(config-if)#ppp authentication chap callin // クライアントからサーバに対して認証を要求しない
(config-if)#ppp chap hostname user-a@izuminmin.com
(config-if)#ppp chap password user123
(config-if)#ppp ipcp dns accept //DNSをIPCPで取得する
(config-if)#exit
ダイヤラリストの作成
ダイヤラインターフェースで入力した「dialer-group」と紐づく。
ここで定義する通信が行われる場合に、PPPoEのセッション確立要求が行われる。
ここではIPを指定している。
dialer-list <==> dialer-group
(config)#dialer-list 1 protocol ip permit
物理インターフェースにてPPPoEの有効化
(config)#int g0/0
(config-if)#pppoe enable
//バージョンによりpppoe enable group globalと表示される場合もある。globalはデフォルトグループ名
(config-if)#pppoe-client dial-pool-number 1 //ダイヤラインターフェースで作成した「dialer pool 1」とマップ
(config-if)#no shut
(config-if)#exit
デフォルトルートの設定
(config)#ip route 0.0.0.0 0.0.0.0 dialer 1
PPPoEセッションの確認
ここまで設定することで、PPPoEによるセッションが確立される。
うまく行っていない場合はユーザー名やパスワードに間違いはないか、
chapにcallinは付けているか、usernameはsecretではなくpassword。
など色々考えられるのでレッツトラシュー
#show pppoe session
#show ppp all
#show ip route
NAPT(PAT)設定
PPPoEセッションは確立されたが、Ubuntuからインターネットにはアクセスできない。
まだNAPT設定を行っていないため。
設定を行い、この備忘録が見えるようになったら完成。
(config)#int g0/1
(config-if)#ip add 192.168.1.254 255.255.255.0
(config-if)#ip tcp adjust-mss 1414 //本来は1452だが、フレッツの場合1414
(config-if)#no shut
(config-if)#ip nat inside
(config-if)#exit
(config)#int dialer 1
(config-if)#ip nat outside
(config-if)#exit
(config)#ip access-list standard ALLOW_NAPT
(config-std-nacl)#10 permit 192.168.1.0 0.0.0.255
(config-std-nacl)#exit
(config)#ip nat inside source list ALLOW_NAPT interface 1 overload
以上の設定を入れ、
Ubuntuから確認してみると…
しっかりネットに繋がった。
tracerouteしてみると無事に外に出ている。
以上でPPPoEの基本設定完了。
次は実機でマルチベンダーで試して見る予定。
ハマったポイント
ハマったポイントがあります。(config)#username user-a@izuminmin.com password 0 user123
の部分を(config)#username user-a@izuminmin.com secret user123
にしていたところ、接続が完了せずに少し戸惑いました。
secretで作った場合md5でハッシュ化されるため、
CHAPの際にうまく行かないのだと思います。
確証を持てていないですが、試してみてください。