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

番号付き拡張IPアクセスリストを設定する (並び順)

※ 前の「シナリオ」の続きとして記載しています。
ラボ・シナリオで使用するネットワーク構成図

  1. 192.168.1.0/24 から 192.168.3.0/24 への拒否するアクセスリストを RT-A に設定しなさい。
  2. < RT-A >
    RT-A(config)# access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255
    RT-A(config)# access-list 100 permit ip any any  ← これがないと全てのパケットが拒否される
    RT-A(config)# int f0/0
    RT-A(config-if)# ip access-group 100 in
    RT-A(config-if)#
    
    FROM (192.168.1.0/24) TO (192.168.3.0/24) の指定が必要ですので、標準IPアクセスリストは使えず、拡張IPアクセスリストで設定しています。拡張IPアクセスリストは、できるだけ送信元 (FROM) に近いところに適用させるべきですので、F0/0 in に適用させます。

  3. PC-A から PC-C へ ping を実行しなさい。
  4. < PC-A >
    C:\> ping 192.168.3.10
    
    192.168.3.10 に ping を送信しています 32 バイトのデータ:
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    
    192.168.3.10 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    
    C:>
    
    192.168.1.0/24 から 192.168.3.0/24 への拒否するアクセスリストを設定したので、192.168.1.10 のIPアドレスを持つ PC-A から 192.168.3.10 宛ての ping は失敗します。
  5. RT-A で、192.168.1.10 から 192.168.3.10 への許可する条件文を既存のアクセスリストに追加しなさい。
  6. < RT-A >
    RT-A(config-if)# access-list 100 permit ip host 192.168.1.10 host 192.168.3.10
    RT-A(config)# 
    
    < PC-A >
    C:\> ping 192.168.3.10
    
    192.168.3.10 に ping を送信しています 32 バイトのデータ:
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    
    192.168.3.10 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    
    C:>
    
    許可する条件文を追加したにもかかわらず、なぜ 192.168.1.10 から 192.168.3.10 への ping が失敗するのでしょうか?
  7. RT-A で、sh access-lists コマンドを実行しなさい。
  8. < RT-A >
    RT-A(config)# do sh access-lists
    Extended IP access list 100
        10 deny ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255 (10 matches)
        20 permit ip any any (64 matches)
        30 permit ip host 192.168.1.10 host 192.168.3.10
    RT-A(config)#
    
    アクセスリストで重要なことは「条件文リストの上から順にチェックされ、該当する条件の行があったらそれ以降の行はチェックしない」ことです。

    192.168.1.10 発 192.168.3.10 宛へのパケットは一行目に一致するため、二行目以降はチェックせずに一行目の条件文で拒否されます。
    access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255  ← ここに該当する
    access-list 100 permit ip any any
    access-list 100 permit ip host 192.168.1.10 host 192.168.3.10
    access-list 100 deny ip any any          ← 暗黙の deny
    
    更に、二行目で全てのパケットを許可しているので、三行目の条件文は全く意味をなしません。

    では、192.168.1.0/24 から 192.168.3.0/24 へのパケットは拒否するが、192.168.1.10 から 192.168.3.10 へのパケットのみ許可したい、場合はどうしたらいいでしょうか?
  9. RT-A を、次の通り設定しなさい。
  10. < RT-A >
    RT-A(config)# ip access-list extended 100
    RT-A(config-ext-nacl)# no 30
    RT-A(config-ext-nacl)# 5 permit ip host 192.168.1.10 host 192.168.3.10
    RT-A(config-ext-nacl)# 
    
    シーケンス番号 30 の条件文を削除し、シーケンス番号 5 と指定して再設定しました。
  11. RT-A で、sh access-lists コマンドを実行しなさい。
  12. < RT-A >
    RT-A(config-ext-nacl)# do sh access-lists
    Extended IP access list 100
        5 permit ip host 192.168.1.10 host 192.168.3.10
        10 deny ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255 (10 matches)
        20 permit ip any any (84 matches)
    RT-A(config-ext-nacl)# ^Z
    RT-A#
    
    192.168.1.10 から 192.168.3.10 へのパケットの許可が、アクセスリストの一番上にきました。
  13. PC-A と PC-B から PC-C へ ping を実行しなさい。
  14. < PC-A >
    C:\> ping 192.168.3.10
    
    192.168.3.10 に ping を送信しています 32 バイトのデータ:
    192.168.3.10 からの応答: バイト数 =32 時間 =5ms TTL=126
    192.168.3.10 からの応答: バイト数 =32 時間 =2ms TTL=126
    192.168.3.10 からの応答: バイト数 =32 時間 =2ms TTL=126
    192.168.3.10 からの応答: バイト数 =32 時間 =2ms TTL=126
    
    192.168.3.10 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    ラウンド トリップの概算時間 (ミリ秒):
        最小 = 2ms、最大 = 5ms、平均 = 2ms
    
    C:>
    
    < PC-B >
    C:\> ping 192.168.3.10
    
    192.168.3.10 に ping を送信しています 32 バイトのデータ:
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    192.168.1.1 からの応答: 宛先ネットワークに到達できません。
    
    192.168.3.10 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    
    C:>
    
    192.168.1.10 (PC-A) 発の ping はアクセスリストの一行目で許可され、192.168.1.11 (PC-B) 発の ping はアクセスリストの一行目には一致しないので、二行目をチェックし、二行目で一致するため、この条件文で拒否されます。
    access-list 100 permit ip host 192.168.1.10 host 192.168.3.10        ← 192.168.1.10 発 192.168.3.10 宛てへのパケット
    access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255  ← 192.168.1.11 発 192.168.3.10 宛てへのパケット
    access-list 100 permit ip any any
    access-list 100 deny ip any any          ← 暗黙の deny
    
    このように、アクセスリストの条件文の並び順は非常に重要です。
    拡張IPアクセスリストでは、シーケンス番号を指定せず、作成済みアクセスリストに条件文を追加した場合、必ず条件文リストの最後に追加されます。しかし、標準IPアクセスリストでは、追加の条件文が最後に追加されるとは限りません。ルータが勝手に順番を変え、シーケンス番号順には並ばない場合があります。

    標準IPアクセスリストでの並び順の条件は次の通りです。

    1) シーケンス番号順ではなく、IPアドレスの降順にエントリが追加される
    2) ネットワーク指定よりも特定のIPアドレス指定の方が優先される (IPアドレス指定のエントリはリストの上部に追加される)
    ※ 次の「シナリオ」に続きます。