Cisco IOS Layer2 – PPPoEの設定

スポンサーリンク

PPPoE設定についてまとめます。PPPoEはCHAP Authentication, IPCP等のトピックと絡めた複雑な設定を紹介します。

概要

PPPoEの設定方法についてまとめます。なお、IPCP, On-Demand Address Poolなどの他のトピックに関連する説明は省略します。

コマンド一覧

このシナリオで重要なコマンド一覧は以下の通りです。

Router(config)# interface <interface>
Router(config-if)# pppoe enable group <bba>
Router(config)# bba-group pppoe <bba>
Router(config-bba-group)# virtual-template <num>
Router(config-bba-group)# sessions [ per-mac | per-vc | per-vlan ] limit <count>
Router(config-bba-group)# sessions [ per-mac | per-vc | per-vlan ] throttle <count> <within> <block_time>
Router(config)# interface Virtual-Template <num>
Router(config-if)# ip address <addr>

Router(config)# interface <interface>
Router(config-if)# pppoe-client dial-pool-number <num>
Router(config)# interface <dialer-interface>
Router(config-if)# ip address <addr>
Router(config-if)# encapsulation ppp
Router(config-if)# dialer pool <num>
Router(config-if)# dialer idle-timeout <min>

構成図

以下の環境で動作確認を行います。

         e0/0    e0/0
 +--------+.1    .2+--------+
 |   R1   +--------+   R2   |
 +--------+        +--------+
        192.168.12.0/24

  Loopback0         Loopback0
  10.1.1.1/32       10.2.2.2/32
 [R1]
router ospf 1
 network 10.1.1.1 0.0.0.0 area 0
 network 192.168.12.1 0.0.0.0 area 0

 [R2]
router ospf 1
 network 10.2.2.2 0.0.0.0 area 0
 network 192.168.12.2 0.0.0.0 area 0

設定全文は下記ファイルです。詳細設定は下記を参照ください。

R1
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255
!
interface Ethernet0/0
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 network 10.1.1.1 0.0.0.0 area 0
 network 192.168.12.1 0.0.0.0 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R2
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
!
interface Ethernet0/0
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 network 10.2.2.2 0.0.0.0 area 0
 network 192.168.12.2 0.0.0.0 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

仕様説明

PPPoE Server

PPPoE Serverの設定は以下のとおりです。BBA(Broad Band Access) groupという単位を用いて、物理interfaceとvirtual-templateを紐づけます。

Router(config)# interface <interface>
Router(config-if)# pppoe enable group <bba>

Router(config)# bba-group pppoe <bba>
Router(config-bba-group)# virtual-template <num>

Router(config)# interface Virtual-Template <num>
Router(config-if)# ip address <addr>

PPPoE Client

PPPoE Clientの設定は以下の通りです。dialer poolという単位を用いて、物理interfaceとdialer interfaceを紐づけます。なお、dialer interfaceの設定は以下を誤りやすいので注意して下さい。

  • dialer interfaceのデフォルトのカプセル化設定はHDLCです。“encapsulation ppp”コマンドでカプセル化タイプを変更して下さい。
  • 検索エンジンを用いてPPPoE設定を検索すると、”dialer-group”というコマンドがヒットします。これはレガシーコマンドなので、最近のIOSでは使用する必要はございません。
  • PPPoEはPPPoE header 6 byteとPPP header 2 byteを考慮する必要があります。PPPoE Client側にip mtu 1492との設定を投入しないと、size 1500のpingが疎通不能になったり、OSPF neighborが確立できなかったりのトラブルが発生します。
Router(config)# interface <interface>
Router(config-if)# pppoe-client dial-pool-number <num>

Router(config)# interface <dialer-interface>
Router(config-if)# ip address <addr>
Router(config-if)# encapsulation ppp
Router(config-if)# dialer pool <num>

PPPoE header, PPP headerのsize指定に迷ったときは、PPPoE Server側のshow ip interfaceコマンドで調査する事もできます。

R1#show ip interface Virtual-Access 1.1
Virtual-Access1.1 is up, line protocol is up
  Internet address is 192.168.12.1/24
  Broadcast address is 255.255.255.255
  Address determined by configuration file
  Peer address is 192.168.12.2
  MTU is 1492 bytes

PPPoE Clientは無通信状態が続くと接続を切断するという仕様があります。以下のコマンドでタイムアウト時間(分)を指定する事ができます。なお、0を指定した場合は無通信状態が続いても切断しないという意味になります。

Router(config)# interface <dialer-interface>
Router(config-if)# dialer idle-timeout <min>

アクセス制限

PPPoE Server側で、最大セッション数<count>を定義する事ができます。なお、セッション数はMACアドレス毎かVC毎かVLAN毎かを指定する事ができます。

Router(config)# bba-group pppoe <bba>
Router(config-bba-group)# sessions [ per-mac | per-vc | per-vlan ] limit <count>

一定時間<within>に閾値を超えるアクセス<count>を受けた場合、一定時間<block_time>のアクセスを禁止します。なお、セッション数はMACアドレス毎かVC毎かVLAN毎かを指定する事ができます。

Router(config)# bba-group pppoe <bba>
Router(config-bba-group)# sessions [ per-mac | per-vc | per-vlan ] throttle <count> <within> <block_time>

基本設定

設定投入

R1をPPPoE Server、R2をPPPoE Clientとして設定します。

 [R1]
interface Ethernet 0/0
 pppoe enable group BBA
 no shutdown
!
bba-group pppoe BBA
 virtual-template 1
!
interface Virtual-Template 1
 ip address 192.168.12.1 255.255.255.0

 [R2]
interface Ethernet 0/0
 pppoe-client dial-pool-number 1
 no shutdown
!
interface Dialer 0
 dialer pool 1
 ip address 192.168.12.2 255.255.255.0
 encapsulation ppp

動作確認

疎通可能になった事を確認します。

 [R1]
R1#ping 192.168.12.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/41/116 ms
R1#

DHCP, IPCP

設定投入

PPPoE Clientは、DHCP, IPCPなどで動的にIPアドレスが割り当てられる事が一般的です。R1がR2にIPCPによってアドレスを割り当てる設定について考察します。

 [R1]
interface Virtual-Template 1
 peer default ip address pool R2
!
ip local pool R2 192.168.12.2

 [R2]
interface Dialer0
 ip address negotiated

動作確認

debugを有効にした後に、dialer interfaceをshut/no shutします。IPアドレスが動的に割り当てられた様子を観察します。

 [R2]
R2#debug ppp negotiation
PPP protocol negotiation debugging is on
R2#
R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#int di 0
R2(config-if)#shut
R2(config-if)#no shut
*Mar  1 00:32:49.839: Di0 DDR: dialer shutdown complete
R2(config-if)#
*Mar  1 00:32:53.971: %LINK-3-UPDOWN: Interface Dialer0, changed state to up
R2(config-if)#
*Mar  1 00:33:10.351: %DIALER-6-BIND: Interface Vi1 bound to profile Di0

 <omitted>

*Mar  1 00:33:10.731: Vi1 IPCP: O CONFREQ [ACKsent] id 2 len 10
*Mar  1 00:33:10.731: Vi1 IPCP:    Address 192.168.12.2 (0x0306C0A80C02)
*Mar  1 00:33:10.743: Vi1 IPCP: I CONFACK [ACKsent] id 2 len 10
*Mar  1 00:33:10.747: Vi1 IPCP:    Address 192.168.12.2 (0x0306C0A80C02)
*Mar  1 00:33:10.747: Vi1 IPCP: State is Open
*Mar  1 00:33:10.751: Di0 IPCP: Install negotiated IP interface address 192.168.12.2
*Mar  1 00:33:10.775: Di0 IPCP: Install route to 192.168.12.1
*Mar  1 00:33:10.795: Vi1 IPCP: Add link info for cef entry 192.168.12.1
*Mar  1 00:33:11.495: %LINEPROTO-5-UPDOWN: Line protocol on Interface Virtual-Access1, changed state to up
*Mar  1 00:33:12.475: Vi1 CDPCP: Timeout: State REQsent
*Mar  1 00:33:12.479: Vi1 CDPCP: O CONFREQ [REQsent] id 2 len 4
*Mar  1 00:33:12.523: Vi1 LCP: I PROTREJ [Open] id 3 len 10 protocol CDPCP (0x820701020004)
*Mar  1 00:33:12.527: Vi1 CDPCP: State is Closed
*Mar  1 00:33:12.527: Vi1 CDPCP: State is Listen
R2(config-if)#
R2(config-if)#
R2(config-if)#do show ip int bri di 0
Interface                  IP-Address      OK? Method Status                Protocol
Dialer0                    192.168.12.2    YES IPCP   up                    up  
R2(config-if)#

基本設定

設定投入

PPPoEは認証設定と併用される事が多いです。設定例として、PPPoE Server側はpap, chapを許可し、PPPoE Clientはpapを拒否しchapのみ受け付けるように設定します。

 [R1]
username R2 password CISCO
!
interface Virtual-Template1
 ppp authentication pap chap

 [R2]
username R1 password CISCO
!
interface Dialer0
 ppp pap refuse

動作確認

疎通可能である事を確認します。

 [R2]
R2#ping 192.168.12.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/35/56 ms
R2#

OSPF併用

src not on the same network

疎通可能になったにも関わらずOSPF neighborが確立されません。原因を追究するために、debug ip ospfを観察します。

 [R2]
R2#debug ip ospf events
OSPF events debugging is on
R2#
*Mar  1 00:41:19.511: OSPF: Send hello to 224.0.0.5 area 0 on Dialer0 from 192.168.12.2
*Mar  1 00:41:19.639: OSPF: Rcv pkt from 192.168.12.1, Dialer0, area 0.0.0.0 : src not on the same network
*Mar  1 00:41:21.255: OSPF: Rcv pkt from 192.168.12.1, Dialer0, area 0.0.0.0 : src not on the same network
R2#

このメッセージは、192.168.12.2/32であるdialer 0で192.168.12.1のパケットを受信しているため、同一ネットワークではないと見なしている事を意味しています。RIPならば”no validate-update-source”コマンドで回避できますが、OSPFにはこれと同等の機能を提供するコマンドはありません。

DHCPを用いてアドレス割り当てを行うか、IPCPを用いてsubnet maskをadvertiseするかでこのトラブルを回避できます。IPCPでsubnet maskを割り当てるのは、On-Demand Poolというやや難しい方法を用いるしかありませんが、今回は敢えてこの方法に挑戦してみましょう。設定例は以下の通りです。

 [R1]
interface Virtual-Template1
 ppp ipcp mask 255.255.255.0

 [R2]
ip dhcp pool IPCP
 import all
 origin ipcp
!
interface Dialer0
 ip address pool IPCP
 ppp ipcp mask request

想定通りのsubnet maskが割り当てられた事を確認します。

 [R2]
R2#show ip interface dialer 0
Dialer0 is up, line protocol is up
  Internet address is 192.168.12.2/24
  Broadcast address is 255.255.255.255

IP MTU

subnet maskによる問題を解消しても、未だOSPF neighborが確立されません。debug messageを観察するとMTU sizeが異なるようです。

 [R2]
R2#debug ip ospf events
OSPF events debugging is on
R2#
*Mar  1 00:51:11.931: OSPF: Send hello to 224.0.0.5 area 0 on Dialer0 from 192.168.12.2
*Mar  1 00:51:11.955: OSPF: Rcv hello from 10.1.1.1 area 0 from Dialer0 192.168.12.1
*Mar  1 00:51:11.959: OSPF: End of hello processing
*Mar  1 00:51:11.995: OSPF: Send DBD to 10.1.1.1 on Dialer0 seq 0xF7F opt 0x52 flag 0x7 len 32
*Mar  1 00:51:11.999: OSPF: Retransmitting DBD to 10.1.1.1 on Dialer0 [10]
*Mar  1 00:51:12.099: OSPF: Rcv DBD from 10.1.1.1 on Dialer0 seq 0x10B4 opt 0x52 flag 0x7 len 32  mtu 1492 state EXSTART
*Mar  1 00:51:12.099: OSPF: Nbr 10.1.1.1 has smaller interface MTU
*Mar  1 00:51:12.103: OSPF: First DBD and we are not SLAVE

PPPoE Server側はheader sizeを考慮してIP MTUが1492 byteとなっていますが、PPPoE ClientのIP MTU sizeは1500 byteのままです。PPPoE ClientであるR2にIP MTUの設定を投入します。

 [R2]
interface Dialer0
 ip mtu 1492

動作確認

OSPF neighborが確立された事を確認します。

 [R2]
R2#show ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
10.1.1.1          0   FULL/  -        00:00:39    192.168.12.1    Dialer0
R2#
タイトルとURLをコピーしました