Cisco IOS Layer2 – PPPの設定

スポンサーリンク

PPPの設定方法についてまとめます。実践では使用頻度は低いですが、PPPoE接続をする時に必要になる知識ですので、頭の片隅程度には置いておきましょう。

PPP over Serial

必須設定

Serial link上でPPP接続するのは非常に簡単です。以下のように”encapsulation”のみを設定すれば事足ります。

        s0/0      s0/0
  +------+.1      .2+------+
  |  R1  +----------+  R2  |
  +------+          +------+
       192.168.12.0/24
 [R1]
interface Serial0/0
 ip address 192.168.12.1 255.255.255.0
 encapsulation ppp

 [R2]
interface Serial0/0
 ip address 192.168.12.2 255.255.255.0
 encapsulation ppp

PAP

以下のコマンドでclientに対してPAP認証を求める事ができます。

Router(config-if)# ppp authentication pap

認証を求められたclientは、以下のコマンドでserverに伝えるユーザ名とパスワードを定義する事ができます。

Router(config-if)# ppp pap sent-username <username> password <password>

serverは、以下のように定義されたlocal databaseに存在するユーザならばPPP接続を許可します。

Router(config)# username <username> password <password>

PAPの設定例は以下の通りです。

        s0/0      s0/0
  +------+.1      .2+------+
  |  R1  +----------+  R2  |
  +------+          +------+
       192.168.12.0/24
 [R1]
interface Serial0/0
 ip address 192.168.12.1 255.255.255.0
 encapsulation ppp
 ppp authentication pap
!
username R2PPP password CISCO

 [R2]
interface Serial0/0
 ip address 192.168.12.2 255.255.255.0
 encapsulation ppp
 ppp pap sent-username R2PPP password CISCO

CHAP

PAPと同様に以下のコマンドでclientに対して認証を求める事ができます。なお、以下のように”pap chap”と指定した場合は、clientがPAPによる認証に応じた場合はPAPで認証し、clientがPAPを拒否した場合はCHAPによる認証を試みます。

Router(config-if)# ppp authentication pap chap

client側は以下のコマンドでPAPによる認証を拒否する事ができます。PAPは平文でユーザ名とパスワードを送信する仕様であるため、PAPは嫌われる傾向があります。

Router(config-if)# ppp pap refuse

認証を求められたclientは、以下のコマンドでserverに伝えるパスワードとホスト名を定義する事ができます。なお、ホスト名はalter hostnameと呼ばれる設定で必須設定ではありません。デフォルトでは”hostname”コマンドで設定されたホスト名がserverに伝えられますが、serverに伝えたいホスト名を変更したい場合は以下のコマンドを使用して下さい。

Router(config-if)# ppp chap <password>
Router(config-if)# ppp chap hostname <password>

serverは、以下のように定義されたlocal databaseにホスト名とパスワードが存在するならば、PPP接続を許可します。なお、“username secret “コマンドは使用する事ができません。CHAPは乱数とパスワードのハッシュ値を計算する仕様なので、パスワードを平文で保存しなければなりません。

Router(config)# username <hostname> password <password>

CHAPの設定例は以下の通りです。

        s0/0      s0/0
  +------+.1      .2+------+
  |  R1  +----------+  R2  |
  +------+          +------+
       192.168.12.0/24
 [R1]
interface Serial0/0
 ip address 192.168.12.1 255.255.255.0
 encapsulation ppp
 ppp authentication pap chap
!
username R2CHAP password CISCO

 [R2]
interface Serial0/0
 ip address 192.168.12.2 255.255.255.0
 encapsulation ppp
 ppp chap hostname R2CHAP
 ppp chap password CISCO
 ppp pap refuse

CHAP 処理順序

CHAPはパスワードを平文で伝えません。CHAPの処理順序および認証過程のパケットキャプチャは以下の通りです。

  • serverはclientに対して、ホスト名とchallengeと呼ばれる乱数を送信します。
  • client側は受信したホスト名を元にlocal databaseからパスワードを探します。もしlocal databseからパスワードがみつからなかった場合は、”ppp chap password”コマンドで設定されたパスワードを使用します。clientはserverに、ホスト名とresponse(challengeとパスワードのハッシュ値)を返信します。
  • server側は受信したホスト名を元にlocal databaseからパスワードを探します。challengeとパスワードのハッシュ値を計算し、その値がresponseと一致していれば接続を認めます。
Frame 9 (27 bytes on wire, 27 bytes captured)
Point-to-Point Protocol
PPP Challenge Handshake Authentication Protocol
    Code: Challenge (1)
    Identifier: 2
    Length: 23
    Data (19 bytes)
        Value Size: 16
        Value: CC61D0BAB0436ABECDA522D4FEE8E8A3
        Name: R1

Frame 10 (31 bytes on wire, 31 bytes captured)
Point-to-Point Protocol
PPP Challenge Handshake Authentication Protocol
    Code: Response (2)
    Identifier: 2
    Length: 27
    Data (23 bytes)
        Value Size: 16
        Value: C50EC6624FA20B885DDF04FEC7B0F2D0
        Name: R2CHAP

Frame 11 (8 bytes on wire, 8 bytes captured)
Point-to-Point Protocol
PPP Challenge Handshake Authentication Protocol
    Code: Success (3)
    Identifier: 2
    Length: 4

繰り返しになりますが、clientはserverから受信したホスト名を元にlocal databseからパスワードを探します。つまり”ppp chap password”コマンドは使用しなくても接続を確立する事ができます。Cisco公式ドキュメントを見ると、”ppp chap password”コマンドを使用する例は少ないようです。以下のように”username”コマンドのみを使用する方法が多数派のようです。

        s0/0      s0/0
  +------+.1      .2+------+
  |  R1  +----------+  R2  |
  +------+          +------+
       192.168.12.0/24
 [R1]
interface Serial0/0
 ip address 192.168.12.1 255.255.255.0
 encapsulation ppp
 ppp authentication chap
!
username R2 password CISCO

 [R2]
interface Serial0/0
 ip address 192.168.12.2 255.255.255.0
 encapsulation ppp
!
username R1 password CISCO

PPP over Frame Relay

必須設定

PPP over Frame Relayを定義するには、以下のようにDLCIとVirtual-Templateに対する紐づけを定義します。

Router(config-if)# frame-relay interface-dlci <dlci> ppp Virtual-Template <num>

DLCIとVirtual-Templateの紐づけが完了したら、以下のようにVirtual-Templateに対してIPアドレスを付与します。

Router(config)# Virtual-Template <num>
Router(config-if)# ip address <addr> <mask>
              192.168.12.0/24
                         
+------+.1      +--------+      .2+------+
|  R1  +--------+  FRSW  +--------+  R2  |
+------+s0/0   1+--------+2   s0/0+------+
               1:102 = 2:201

PPP over Frame Relayの設定例は以下の通りです。

 [R1]
interface Serial0/0
 encapsulation frame-relay
 frame-relay interface-dlci 102 ppp Virtual-Template1
!
interface Virtual-Template1
 ip address 192.168.12.1 255.255.255.0

 [R2]
interface Serial0/0
 encapsulation frame-relay
 frame-relay interface-dlci 201 ppp Virtual-Template1
!
interface Virtual-Template1
 ip address 192.168.12.2 255.255.255.0

Virtual-Accessがup状態になっている事を確認し、R1, R2が互いに疎通可能である事を確認します。

R1#show ip interface brief
Interface                  IP-Address      OK? Method Status                Protocol
Serial0/0                  unassigned      YES unset  up                    up  
Serial0/1                  unassigned      YES unset  administratively down down
Serial0/2                  unassigned      YES unset  administratively down down
Serial0/3                  unassigned      YES unset  administratively down down
Virtual-Access1            192.168.12.1    YES TFTP   up                    up  
Virtual-Template1          192.168.12.1    YES manual down                  down
Virtual-Access2            unassigned      YES unset  down                  down
R1#
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 = 4/43/96 ms
R1#

IPCP

基本設定

PPPには、IPCP (Internet Protocol Control Protocol) というIPアドレス等を対向に割り当てる機能が備わっています。

対向に割り当てるアドレスを定義するには以下のコマンドを使用します。

Router(config-if)# peer default ip address <addr>

IPCPによって割り当てられたIPアドレスを使用するには、以下のコマンドを使用します。

Router(config-if)# ip address negotiated

設定例は以下の通りです。

        s0/0      s0/0
  +------+.1      .2+------+
  |  R1  +----------+  R2  |
  +------+          +------+
       192.168.12.0/24
 [R1]
interface Serial0/0
 ip address 192.168.12.1 255.255.255.0
 encapsulation ppp
 peer default ip address 192.168.12.2

 [R2]
interface Serial0/0
 ip address negotiated
 encapsulation ppp

R2, R1間で疎通可能である事を確認します。また、R2のルーティングテーブルを見ると、R1 s0/0があたかも接続されているかのように見えます。なお、IPCPによって割り当てられたアドレスはsubnet maskが32bitになっている事に注意して下さい

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 = 24/50/108 ms
R2#

R2#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     192.168.12.0/32 is subnetted, 2 subnets
C       192.168.12.1 is directly connected, Serial0/0
C       192.168.12.2 is directly connected, Serial0/0
R2#

あたかも対向が接続されているかのように扱われる挙動を打ち消すには、以下のコマンドを入力します。

Router(config-if)# no peer neighbor-route

設定例および動作確認は以下の通りです。

 [R2]
interface Serial0/0
 ip address negotiated
 encapsulation ppp
 no peer neighbor-route

R2#show ip route

 <omitted>

Gateway of last resort is not set

     192.168.12.0/32 is subnetted, 1 subnets
C       192.168.12.2 is directly connected, Serial0/0
R2#

IPCP RIP併用環境

IPCP RIP併用環境はやや工夫が必要です。簡単な設定例を以下に示します。

        s0/0      s0/0
  +------+.1      .2+------+
  |  R1  +----------+  R2  |
  +------+          +------+
       192.168.12.0/24
 [R1]
interface Loopback0
 ip address 10.1.1.1 255.255.255.0
!
interface Serial0/0
 ip address 192.168.12.1 255.255.255.0
 encapsulation ppp
 peer default ip address 192.168.12.2
!
router rip
 version 2
 network 10.0.0.0
 network 192.168.12.0
 no auto-summary

 [R2]
interface Loopback0
 ip address 10.2.2.2 255.255.255.0
!
interface Serial0/0
 ip address negotiated
 encapsulation ppp
 no peer neighbor-route
!
router rip
 version 2
 network 10.0.0.0
 network 192.168.12.0
 no auto-summary

R2のルーティングテーブルを見ると、RIPが正常に機能していないように見えます。

R2#show ip route

 <omitted>

Gateway of last resort is not set

     192.168.12.0/32 is subnetted, 1 subnets
C       192.168.12.2 is directly connected, Serial0/0
     10.0.0.0/24 is subnetted, 1 subnets
C       10.2.2.0 is directly connected, Loopback0
R2#

原因を究明するためにdebug messageを表示させます。”bad source”と記載されている事から、validate-update-sourceという機能に起因する事が分かります。

validate-update-sourceは、RIP updateの送信元を検証する機能です。この場合では、R2 s0/0 (192.168.12.2/32 )でrip packetを受信します。rip packetの送信元は192.168.12.1ですので、R2は送信元が偽装されているのではないかと判断してしまいます。

R2#debug ip rip events
RIP event debugging is on
R2#
*Mar  1 00:06:14.455: RIP: sending v2 update to 224.0.0.9 via Serial0/0 (192.168.12.2)
*Mar  1 00:06:14.459: RIP: Update contains 1 routes
*Mar  1 00:06:14.459: RIP: Update queued
*Mar  1 00:06:14.463: RIP: Update sent via Serial0/0
*Mar  1 00:06:18.399: RIP: sending v2 update to 224.0.0.9 via Loopback0 (10.2.2.2)
*Mar  1 00:06:18.403: RIP: Update contains 2 routes
*Mar  1 00:06:18.403: RIP: Update queued
*Mar  1 00:06:18.407: RIP: Update sent via Loopback0
*Mar  1 00:06:18.415: RIP: ignored v2 packet from 10.2.2.2 (sourced from one of our addresses)
*Mar  1 00:06:20.399: RIP: ignored v2 update from bad source 192.168.12.1 on Serial0/0
R2#

この送信元検証機能validate-update-sourceを無効化するには、以下のコマンドを入力します。

Router(config-router)# no validate-update-source

R2でvalidate-update-sourceを無効化します。その後、RIPによる経路交換が正常に行われている事が確認できます。

R2(config)# router rip
R2(config-router)# no validate-update-source

R2#show ip route

 <omitted>

Gateway of last resort is not set

     192.168.12.0/32 is subnetted, 1 subnets
C       192.168.12.2 is directly connected, Serial0/0
     10.0.0.0/24 is subnetted, 2 subnets
C       10.2.2.0 is directly connected, Loopback0
R       10.1.1.0 [120/1] via 192.168.12.1, 00:00:01
R2#

subnet maskの伝搬

基本的な設定ではIPCPでIPアドレスのみを伝えます。この場合は、subnet maskは32bitとして扱われます。しかし、設定によってはsubnetmaskやDNS serverをIPCPによって伝える事ができます。

以下のコマンドで、PPP ServerにsubnetmaskやDNS server等の情報を要求する事ができます。

Router(config-if)# ppp ipcp [ dns | mask | route | username | wins ] request

以下のコマンドで、PPP Clientに割り当てるDNS server, subnetmaskを定義する事ができます。

Router(config-if)# ppp ipcp dns <address>
Router(config-if)# ppp ipcp mask <mask>
Router(config-if)# ppp ipcp route <address>

以下はあやふやな情報なので、誤りがございましたらご指摘下さい。

IPCPでsubnet maskを取得するには”ip address negotiated”では不十分です。デフォルトの挙動ではDHCPでsubnetmaskを取得しようと試みるため、IPCPでsunbet mask等を取得するには、以下のようなDHCP poolを使用します。

Router(config)# ip dhcp pool <pool>
Router(dhcp-config)# origin ipcp
Router(dhcp-config)# import all
Router(config)# interface <interface>
Router(config-if)# ip address pool <pool>

設定例は以下の通りです。

        s0/0      s0/0
  +------+.1      .2+------+
  |  R1  +----------+  R2  |
  +------+          +------+
       192.168.12.0/24
 [R1]
interface Serial0/0
 ip address 192.168.12.1 255.255.255.0
 encapsulation ppp
 peer default ip address 192.168.12.2
 ppp ipcp dns 192.168.12.1
 ppp ipcp mask 255.255.255.0

 [R2]
ip dhcp pool IPCP
   import all
   origin ipcp
!
interface Serial0/0
 ip address pool IPCP
 encapsulation ppp
 ppp ipcp dns request
 ppp ipcp mask request

subnetmaskおよびDNS Serverが割り当てられている事を確認します。DNS Serverは適当な文字列を入力した時に名前解決をどのサーバに要求するかによって確認する事ができます。

R2#show ip interface Serial 0/0
Serial0/0 is up, line protocol is up
  Internet address is 192.168.12.2/24
  Broadcast address is 255.255.255.255

 <omitted>

R2#
R2#
R2#tmp
Translating "tmp"...domain server (192.168.12.1)
 (192.168.12.1)
Translating "tmp"...domain server (192.168.12.1)
% Unknown command or computer name, or unable to find computer address
R2#
タイトルとURLをコピーしました