HOME > コンテンツリスト > ラボ・シナリオ for CCNA > [ < 前へ 次へ > ]

PPPのCHAP認証を確認する

ネットワーク構成図

  1. RT-A、RT-B をネットワーク構成図に示す通り設定しなさい。
  2. < RT-A >
    Router# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)# host RT-A
    RT-A(config)# int s0/0/0
    RT-A(config-if)# ip add 192.168.2.1 255.255.255.0
    RT-A(config-if)# clock rate 64000
    RT-A(config-if)# no shut
    RT-A(config-if)#
    
    < RT-B >
    Router# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)# host RT-B
    RT-B(config)# int s0/0/0
    RT-B(config-if)# ip add 192.168.2.2 255.255.255.0
    RT-B(config-if)# no shut
    RT-B(config-if)#
    
  3. RT-A と RT-B で、sh int s0/0/0 を行い、カプセル化タイプを確認しなさい。
  4. < RT-A >
    RT-A(config-if)# do sh int s0/0/0
    Serial0/0/0 is up, line protocol is up
      Hardware is GT96K Serial
      Internet address is 192.168.2.1/24
      MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec,
         reliability 255/255, txload 1/255, rxload 1/255
      Encapsulation HDLC, loopback not set   ← カプセル化タイプは HDLC
      Keepalive set (10 sec)
          ・
          ・
          ・
    
    < RT-B >
    RT-B(config-if)# do sh int s0/0/0
    Serial0/0/0 is up, line protocol is up
      Hardware is GT96K Serial
      Internet address is 192.168.2.2/24
      MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec,
         reliability 255/255, txload 1/255, rxload 1/255
      Encapsulation HDLC, loopback not set   ← カプセル化タイプは HDLC
      Keepalive set (10 sec)
          ・
          ・
          ・
    
    Cisco ルータのシリアルインターフェイスのデフォルトのカプセル化タイプは HDLC です。
    他に PPP や frame-relay、x25 など、さまざまなカプセル化タイプを指定できます。
    RT-B(config-if)# encapsulation ?
      bstun           Block Serial tunneling (BSTUN)
      frame-relay     Frame Relay networks
      hdlc            Serial HDLC synchronous
      lapb            LAPB (X.25 Level 2)
      ppp             Point-to-Point protocol
      sdlc            SDLC
      sdlc-primary    SDLC (primary)
      sdlc-secondary  SDLC (secondary)
      smds            Switched Megabit Data Service (SMDS)
      stun            Serial tunneling (STUN)
      x25             X.25
    
    RT-B(config-if)#
    
  5. RT-A と RT-B のカプセル化タイプを PPP に変更し、カプセル化タイプが PPP になっていることを確認しなさい。
  6. < RT-A >
    RT-A(config-if)# encapsulation ppp  ← カプセル化タイプを ppp に変更
    RT-A(config-if)# do sh int s0/0/0 | include Encap
      Encapsulation PPP, LCP Open       ← カプセル化タイプが PPP に変更されている
    RT-A(config-if)#
    
    < RT-B >
    RT-B(config-if)# encapsulation ppp  ← カプセル化タイプを ppp に変更
    RT-B(config-if)# do sh int s0/0/0 | include Encap
      Encapsulation PPP, LCP Open       ← カプセル化タイプが PPP に変更されている
    RT-B(config-if)#
    
    カプセル化タイプとは、相手に送りたいデータをどのように包むかで、包み方と開き方 (送信側と受信側) が一致していなければいけません。
    Cisco ルータのシリアルインターフェイスのデフォルトのカプセル化タイプは HDLC ですが、Cisco の HDLC はマルチプロトコルに対応させるため ISO 標準の HDLC を拡張 (Cisco 独自フィールドの追加) しているので、他社製品とは HDLC で接続することはできません。

    ISO 標準 HDLC
    開始フラグアドレス制御データFCS終了フラグ

    Cisco HDLC
    開始フラグアドレス制御タイプデータFCS終了フラグ

    そのため、他社製品とシリアルインターフェイスで接続する場合は PPP を使用します。 PPP は ISO 標準の HDLC に準拠したフレームフォーマットで、プロトコルフィールドの追加によりマルチプロトコルに対応しています。PPP には HDLC にないオプション機能があり、今回のシナリオの認証機能もその1つです。

    PPP
    開始フラグアドレス制御プロトコルデータFCS終了フラグ

    ● 片側のルータのみで認証を行う

  7. RT-A を認証を行うサーバー、RT-B をクライアントとする CHAP 認証を設定しなさい。ただし、認証パスワードは cisco とする。
  8. < RT-A >
    RT-A(config-if)# ppp authentication chap     ← 接続相手に対して chap 認証を行う
    RT-A(config-if)# exit
    RT-A(config)# username RT-B password cisco   ← 認証用の接続相手のユーザ名 (ホスト名) とパスワードを設定
    RT-A(config)# ^Z
    RT-A#
    
    < RT-B >
    RT-B(config-if)# exit
    RT-B(config)# username RT-A password cisco   ← 認証用の接続相手のユーザ名 (ホスト名) とパスワードを設定
    RT-B(config)# ^Z
    RT-B#
    
    ※ パスワードは接続相手と一致している必要があります。

    CHAP 認証では、アクセス時にパスワードを暗号化 (ハッシュ化) して回線に流し、接続相手の認証を得ます。暗号化せずパスワードを平文で送る PAP よりもセキュリティ度は高く、現在最も一般的に利用されている認証方式です。username コマンドでは、認証を行う時に使用するローカルユーザデータベースを設定しており、クライアントを認証するためのユーザ名とパスワードを格納しています。
  9. RT-A と RT-B に、CHAP 認証をモニタするためのデバックコマンドを設定しなさい。
  10. < RT-A >
    RT-A# debug ppp authentication
    PPP authentication debugging is on
    RT-A# 
    
    < RT-B >
    RT-B# debug ppp authentication
    PPP authentication debugging is on
    RT-B# 
    
  11. RT-A のインターフェイスを shutdown → no shutdown して、CHAP 認証の流れを確認しなさい。
  12. < RT-A >
    RT-A# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-A(config)# int s0/0/0
    RT-A(config-if)# shut     ← インターフェイスを shutdown
    RT-A(config-if)# 
    *Jan 17 04:27:19.250: %LINK-5-CHANGED: Interface Serial0/0/0, changed state to administratively down  ← 物理層がダウン
    *Jan 17 04:27:19.254: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to down  ← データリンク層がダウン
    RT-A(config-if)# no shut  ← インターフェイスを no shut で再度アップさせる
    RT-A(config-if)# 
    *Jan 17 04:27:31.858: %LINK-3-UPDOWN: Interface Serial0/0/0, changed state to up  ← 物理層がアップ
    *Jan 17 04:27:31.862: Se0/0/0 PPP: Using default call direction
    *Jan 17 04:27:31.862: Se0/0/0 PPP: Treating connection as a dedicated line
    *Jan 17 04:27:31.862: Se0/0/0 PPP: Session handle[7C000063] Session id[93]
    *Jan 17 04:27:31.878: Se0/0/0 CHAP: O CHALLENGE id 1 len 25 from "RT-A"  ← 相手にチャレンジを送信
    *Jan 17 04:27:31.898: Se0/0/0 CHAP: I RESPONSE id 1 len 25 from "RT-B"  ← 相手からチャレンジに対する応答を受信
    *Jan 17 04:27:31.898: Se0/0/0 PPP: Sent CHAP LOGIN Request
    *Jan 17 04:27:31.902: Se0/0/0 PPP: Received LOGIN Response PASS
    *Jan 17 04:27:31.906: Se0/0/0 CHAP: O SUCCESS id 1 len 4  ← 認証 (成功) したことを相手に通知
    *Jan 17 04:27:31.914: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to up  ← データリンク層がアップ
    RT-A(config-if)#
    
    < RT-B >
    RT-B# 
    *Jan 17 04:31:31.990: %LINK-3-UPDOWN: Interface Serial0/0/0, changed state to down  ← 物理層がダウン
    *Jan 17 04:31:31.994: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to down  ← データリンク層がダウン
    *Jan 17 04:31:44.602: %LINK-3-UPDOWN: Interface Serial0/0/0, changed state to up    ← 物理層がアップ
    *Jan 17 04:31:44.606: Se0/0/0 PPP: Using default call direction
    *Jan 17 04:31:44.606: Se0/0/0 PPP: Treating connection as a dedicated line
    *Jan 17 04:31:44.606: Se0/0/0 PPP: Session handle[A200006D] Session id[104]
    *Jan 17 04:31:44.634: Se0/0/0 PPP: No authorization without authentication
    *Jan 17 04:31:44.634: Se0/0/0 CHAP: I CHALLENGE id 1 len 25 from "RT-A"  ← 相手からチャレンジを受信
    *Jan 17 04:31:44.634: Se0/0/0 PPP: Sent CHAP SENDAUTH Request
    *Jan 17 04:31:44.634: Se0/0/0 PPP: Received SENDAUTH Response PASS
    *Jan 17 04:31:44.634: Se0/0/0 CHAP: Using hostname from configured hostname
    *Jan 17 04:31:44.634: Se0/0/0 CHAP: Using password from AAA
    *Jan 17 04:31:44.634: Se0/0/0 CHAP: O RESPONSE id 1 len 25 from "RT-B"  ← 相手にチャレンジに対する応答を送信
    *Jan 17 04:31:44.654: Se0/0/0 CHAP: I SUCCESS id 1 len 4  ← 認証 (成功) したことを相手から受信
    *Jan 17 04:31:44.662: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to up  ← データリンク層がアップ
    RT-B# 
    
    CHALLENGE → RESPONSE → SUCCESS の順で、3ウェイ・ハンドシェイクによる認証に成功しました。

  13. RT-A で認証パスワードを cisco から ccna に変更後、インターフェイスを shut → no shut して、CHAP 認証の流れを確認しなさい。
  14. < RT-A >
    RT-A(config-if)# exit
    RT-A(config)# username RT-B password ccna   ← パスワードを cisco から ccna に変更
    RT-A(config)# int s0/0/0
    RT-A(config-if)# shut     ← インターフェイスを shutdown
    RT-A(config-if)# 
    *Jan 17 00:11:59.911: %LINK-5-CHANGED: Interface Serial0/0/0, changed state to administratively down  ← 物理層がダウン
    *Jan 17 00:11:59.915: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to down  ← データリンク層がダウン
    RT-A(config-if)# no shut  ← インターフェイスを no shut で再度アップさせる
    RT-A(config-if)# 
    *Jan 17 00:12:10.863: %LINK-3-UPDOWN: Interface Serial0/0/0, changed state to up  ← 物理層がアップ
    RT-A(config-if)# 
    *Jan 17 00:12:10.867: Se0/0/0 PPP: Using default call direction
    *Jan 17 00:12:10.867: Se0/0/0 PPP: Treating connection as a dedicated line
    *Jan 17 00:12:10.867: Se0/0/0 PPP: Session handle[6F00001D] Session id[27]
    *Jan 17 00:12:10.887: Se0/0/0 CHAP: O CHALLENGE id 1 len 25 from "RT-A"
    *Jan 17 00:12:10.899: Se0/0/0 CHAP: I RESPONSE id 1 len 25 from "RT-B"
    *Jan 17 00:12:10.899: Se0/0/0 PPP: Sent CHAP LOGIN Request
    *Jan 17 00:12:10.903: Se0/0/0 PPP: Received LOGIN Response FAIL
    *Jan 17 00:12:10.903: Se0/0/0 CHAP: O FAILURE id 1 len 25 msg is "Authentication failed"  ← 認証失敗
    RT-A(config-if)# shut  ← デバッグメッセージが出続けるのでインターフェイスをシャットダウンする
    RT-A(config-if)# ^
    RT-A#
    
    RT-A でパスワードを変更したことにより、認証に失敗しました。
  15. RT-A と RT-B で、インターフェイスの状態を確認しなさい。
  16. < RT-A >
    RT-A# sh int s0/0/0 | include line protocol
    Serial0/0/0 is up, line protocol is down   ← データリンク層がダウンしている
    RT-A# 
    
    < RT-B >
    RT-B# sh int s0/0/0 | include line protocol
    Serial0/0/0 is up, line protocol is down   ← データリンク層がダウンしている
    RT-B# 
    
    RT-A と RT-B 間でパスワードの不一致により認証に失敗し、データリンク層がダウンしました。

    ● 両側のルータで認証を行う

    上記の設定は RT-A で CHAP 認証を行う設定でしたが、RT-A と RT-B の両方のルータで CHAP 認証を行う設定も可能で CCNA ではこの設定例が一般的です。

  17. RT-B の S0/0/0 で ppp authentication chap コマンドを実行しなさい。
  18. < RT-B >
    RT-B# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-B(config)# int s0/0/0
    RT-B(config-if)# ppp authentication chap
    RT-B(config-if)# ^Z
    RT-B#
    
    これで RT-A、RT-B ともに ppp authentication chap コマンドを実行していることになります。
  19. RT-A で認証パスワードを ccna から cisco に戻し、S0/0/0 で no shut を実行し、CHAP 認証の流れを確認しなさい。
  20. < RT-A >
    RT-A# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-A(config)# username RT-B password cisco
    RT-A(config)# int s0/0/0
    RT-A(config-if)# no shut
    RT-A(config-if)#
    *Jan 16 00:54:47.227: %LINK-3-UPDOWN: Interface Serial0/0/0, changed state to up  ← 物理層がアップ
    *Jan 16 00:54:47.231: Se0/0/0 PPP: Using default call direction
    *Jan 16 00:54:47.231: Se0/0/0 PPP: Treating connection as a dedicated line
    *Jan 16 00:54:47.231: Se0/0/0 PPP: Session handle[63000012] Session id[18]
    *Jan 16 00:54:47.259: Se0/0/0 CHAP: O CHALLENGE id 1 len 25 from "RT-A"  ← 相手にチャレンジを送信
    *Jan 16 00:54:47.259: Se0/0/0 CHAP: I CHALLENGE id 1 len 25 from "RT-B"  ← 相手からチャレンジを受信
    *Jan 16 00:54:47.259: Se0/0/0 PPP: Sent CHAP SENDAUTH Request
    *Jan 16 00:54:47.259: Se0/0/0 PPP: Received SENDAUTH Response PASS
    *Jan 16 00:54:47.259: Se0/0/0 CHAP: Using hostname from configured hostname
    *Jan 16 00:54:47.259: Se0/0/0 CHAP: Using password from AAA
    *Jan 16 00:54:47.259: Se0/0/0 CHAP: O RESPONSE id 1 len 25 from "RT-A"  ← 相手へチャレンジに対する応答を送信
    *Jan 16 00:54:47.271: Se0/0/0 CHAP: I RESPONSE id 1 len 25 from "RT-B"  ← 相手からチャレンジに対する応答を受信
    *Jan 16 00:54:47.271: Se0/0/0 PPP: Sent CHAP LOGIN Request
    *Jan 16 00:54:47.275: Se0/0/0 PPP: Received LOGIN Response PASS
    *Jan 16 00:54:47.279: Se0/0/0 CHAP: I SUCCESS id 1 len 4  ← 認証 (成功) したことを相手から通知
    *Jan 16 00:54:47.283: Se0/0/0 CHAP: O SUCCESS id 1 len 4  ← 認証 (成功) したことを相手に通知
    *Jan 16 00:54:47.287: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to up  ← データリンク層がアップ
    RT-A(config-if)# ^Z
    RT-A#
    
    両方のルータで認証を行っているので 3ウェイ・ハンドシェイクも倍になります。

    ● 片側のルータのみで認証を行う (別設定)

    片側のルータのみで認証を行う設定でも、両方のルータのローカルユーザデータベースにユーザ名とパスワードをそれぞれ設定していました。しかし、次のシナリオでやる PAP の設定のように認証を行うサーバー側のみローカルユーザデータベースを使う設定も可能です。しかしこれは一般的ではないようで Cisco サイトでの記述も少なく、CCNA の参考書でも一部の本 (マニアックな本?) にしか載っていません。そのため、参考でいいと思います。

  21. RT-B の S0/0/0 で no ppp authentication コマンドを実行しなさい。
  22. < RT-B >
    RT-B# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-B(config)# int s0/0/0
    RT-B(config-if)# no ppp authentication
    RT-B(config-if)#
    
    これで CHAP 認証は RT-A のみで行います。
  23. RT-B で登録している username RT-A password cisco を削除しなさい。
  24. < RT-B >
    RT-B(config-if)# exit
    RT-B(config)# no username RT-A
    RT-B(config)#
    
    これで RT-B のローカルユーザデータベースの設定は削除されました。
  25. RT-B で次の通り設定しなさい。
  26. < RT-B >
    RT-B(config)# int s0/0/0
    RT-B(config-if)# ppp chap hostname RT-B      ← 接続相手に送る自分の CHAP 認証用ユーザ名 (ホスト名)
    RT-B(config-if)# ppp chap password cisco     ← 接続相手に送るパスワードを設定
    RT-B(config)# ^Z
    RT-B#
    
    PPP 接続時に S0/0/0 インターフェイスから送出する CHAP 認証用ユーザ名とパスワードの設定です。ただし、ppp chap hostname RT-B コマンドは通常不要で、この設定がなければ hostname コマンドで設定したルータのホスト名が CHAP 認証用ユーザ名として使われます。ユーザ名をホスト名と異なるものにしたい時にこのコマンドを使用しますが、その場合は RT-A 側で設定したユーザ名も変更しなければいけません。
  27. RT-A のインターフェイスを shutdown → no shutdown して、CHAP 認証の流れを確認しなさい。
  28. < RT-A >
    RT-A# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-A(config)# int s0/0/0
    RT-A(config-if)# shut     ← インターフェイスを shutdown
    RT-A(config-if)# 
    *Jan 16 23:59:14.619: %LINK-5-CHANGED: Interface Serial0/0/0, changed state to administratively down  ← 物理層がダウン
    *Jan 16 23:59:14.623: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to down  ← データリンク層がダウン
    RT-A(config-if)# no shut  ← インターフェイスを no shut で再度アップさせる
    RT-A(config-if)# 
    *Jan 16 23:59:24.315: %LINK-3-UPDOWN: Interface Serial0/0/0, changed state to up  ← 物理層がアップ
    *Jan 16 23:59:24.319: Se0/0/0 PPP: Using default call direction
    *Jan 16 23:59:24.319: Se0/0/0 PPP: Treating connection as a dedicated line
    *Jan 16 23:59:24.319: Se0/0/0 PPP: Session handle[3F00001C] Session id[26]
    *Jan 16 23:59:24.327: Se0/0/0 CHAP: O CHALLENGE id 1 len 25 from "RT-A"  ← 相手にチャレンジを送信
    *Jan 16 23:59:24.359: Se0/0/0 CHAP: I RESPONSE id 1 len 25 from "RT-B"  ← 相手からチャレンジに対する応答を受信
    *Jan 16 23:59:24.359: Se0/0/0 PPP: Sent CHAP LOGIN Request
    *Jan 16 23:59:24.359: Se0/0/0 PPP: Received LOGIN Response PASS
    *Jan 16 23:59:24.367: Se0/0/0 CHAP: O SUCCESS id 1 len 4  ← 認証 (成功) したことを相手に通知
    *Jan 16 23:59:24.371: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to up  ← データリンク層がアップ
    RT-A(config-if)#
    
    < RT-B >
    RT-B# 
    *Jan 17 00:03:26.931: %LINK-3-UPDOWN: Interface Serial0/0/0, changed state to down  ← 物理層がダウン
    *Jan 17 00:03:26.935: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to down  ← データリンク層がダウン
    *Jan 17 00:03:36.631: %LINK-3-UPDOWN: Interface Serial0/0/0, changed state to up    ← 物理層がアップ
    *Jan 17 00:03:36.635: Se0/0/0 PPP: Using default call direction
    *Jan 17 00:03:36.635: Se0/0/0 PPP: Treating connection as a dedicated line
    *Jan 17 00:03:36.635: Se0/0/0 PPP: Session handle[4100001C] Session id[26]
    *Jan 17 00:03:36.667: Se0/0/0 PPP: No authorization without authentication
    *Jan 17 00:03:36.667: Se0/0/0 CHAP: I CHALLENGE id 1 len 25 from "RT-A"  ← 相手からチャレンジを受信
    *Jan 17 00:03:36.667: Se0/0/0 PPP: Sent CHAP SENDAUTH Request
    *Jan 17 00:03:36.667: Se0/0/0 PPP: Received SENDAUTH Response FAIL
    *Jan 17 00:03:36.667: Se0/0/0 CHAP: Using hostname from interface CHAP
    *Jan 17 00:03:36.667: Se0/0/0 CHAP: Using password from interface CHAP
    *Jan 17 00:03:36.667: Se0/0/0 CHAP: O RESPONSE id 1 len 25 from "RT-B"  ← 相手にチャレンジに対する応答を送信
    *Jan 17 00:03:36.687: Se0/0/0 CHAP: I SUCCESS id 1 len 4  ← 認証 (成功) したことを相手から受信
    *Jan 17 00:03:36.695: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to up  ← データリンク層がアップ
    RT-B# 
    
    CHALLENGE → RESPONSE → SUCCESS の順で、3ウェイ・ハンドシェイクによる認証に成功しました。