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

番号付き標準IPアクセスリストを設定する

名前付きIPアクセスリストは IOS11.2 以降でサポートされたため、通常、標準IPアクセスリストと言えば番号付き標準IPアクセスリストのことを指します。番号付き標準IPアクセスリストの設定方法には、旧来の方法と、新しい方法 (名前付きIPアクセスリストがサポートされてからの方法) があります。

1) 番号付き標準IPアクセスリストの作成 (旧来の方法)

(config)# access-list [アクセスリスト番号] [許可/拒否] [送信元アドレス]
アクセスリスト番号1~99/1300~1999
許可/拒否permit/deny
送信元アドレス送信元アドレス ワイルドカードマスク

標準IPアクセスリストの場合の送信元アドレスの書き方は次のようになります。

(1) 1つのIPアドレス (192.168.0.1) を指定する場合
 1) 192.168.0.1     ← 拡張ではこの書き方はできない
 2) host 192.168.0.1
 3) 192.168.0.1 0.0.0.0
 4) 192.168.0.1 /32   ← CIDR 形式 (/nn)

(2) ネットワーク (192.168.0.0/24) を指定する場合
 1) 192.168.0.0 0.0.0.255
 2) 192.168.0.0 /24   ← CIDR 形式 (/nn)

(3) アドレスブロック (192.168.0.0/24 ~ 192.168.3.0/24) を指定する場合
 1) 192.168.0.0 0.0.3.255
 2) 192.168.0.0 /22   ← CIDR 形式 (/nn)

(4) 全アドレスを指定する場合
 1) 0.0.0.0 255.255.255.255
 2) 0.0.0.0 /0      ← CIDR 形式 (/nn)
 3) any

※ CIDR 形式は、現時点で、旧来の標準IPアクセスリストでのみ可。

2) 番号付き標準IPアクセスリストの作成 (新しい方法)

(config)# ip access-list standard [アクセスリスト番号]
(config-std-nacl)# <シーケンス番号> [許可/拒否] [送信元アドレス]
アクセスリスト番号1~99/1300~1999
シーケンス番号条件文の行番号 (省略可)
許可/拒否permit/deny
送信元アドレス送信元アドレス ワイルドカードマスク

標準IPアクセスリストの場合の送信元アドレスの書き方は次のようになります。

(1) 1つのIPアドレス (192.168.0.1) を指定する場合
 1) 192.168.0.1     ← 拡張ではこの書き方はできない
 2) 192.168.0.1 0.0.0.0
 3) host 192.168.0.1

(2) ネットワーク (192.168.0.0/24) を指定する場合
 1) 192.168.0.0 0.0.0.255

(3) アドレスブロック (192.168.0.0/24 ~ 192.168.3.0/24) を指定する場合
 1) 192.168.0.0 0.0.3.255

(4) 全アドレスを指定する場合
 1) 0.0.0.0 255.255.255.255
 2) any

3) 作成したIPアクセスリストの適用

アクセスリストのインターフェイスへの適用は、標準、拡張、番号付き、名前付き、どれも同じコマンドです。

(config-if)# ip access-group [アクセスリスト番号/名前] [in/out]


想定するネットワーク構成図

ラボ・シナリオで使用するネットワーク構成図
・物理 PC の VirtualBox 上に、PC-A、PC-B、PC-C の3つの仮想 PC を構成する。
・PC-A、PC-B は物理 PC に標準搭載している LAN ポートを使用するように VirtualBox を設定する。
・物理 PC に USB-LAN 変換ケーブルを1つ接続し、PC-C がそれを使用するように VirtualBox を設定する。


  1. RT-A、RT-B をネットワーク構成図に示す通り設定し、シングルエリア OSPF を構成しなさい。
  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 f0/0
    RT-A(config-if)# ip add 192.168.1.1 255.255.255.0
    RT-A(config-if)# no shut
    RT-A(config-if)# int f0/1
    RT-A(config-if)# ip add 192.168.2.1 255.255.255.0
    RT-A(config-if)# no shut
    RT-A(config-if)# router ospf 1
    RT-A(config-router)# net 192.168.0.0 0.0.255.255 area 0
    RT-A(config-router)# ^Z
    RT-A#
    
    < RT-B >
    Router# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    Router(config)# host RT-B
    RT-B(config)# int f0/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)# int f0/1
    RT-B(config-if)# ip add 192.168.3.2 255.255.255.0
    RT-B(config-if)# no shut
    RT-B(config-if)# router ospf 1
    RT-B(config-router)# net 192.168.0.0 0.0.255.255 area 0
    RT-B(config-router)# ^Z
    RT-B#
    
  3. PC-A、PC-B、PC-C をネットワーク構成図に示す通り設定しなさい。
  4. < PC-A >
    C:\> netsh interface ipv4 set address "イーサネット" static 192.168.1.10 255.255.255.0 192.168.1.1
    
    C:\> ipconfig
    
    Windows IP 構成
    
    イーサネット アダプター イーサネット:
    
       接続固有の DNS サフィックス . . . . .:
       IPv4 アドレス . . . . . . . . . . . .: 192.168.1.10
       サブネット マスク . . . . . . . . . .: 255.255.255.0
       デフォルト ゲートウェイ . . . . . . .: 192.168.1.1
    
    C:\>
    
    < PC-B >
    C:\> netsh interface ipv4 set address "イーサネット" static 192.168.1.11 255.255.255.0 192.168.1.1
    
    C:\> ipconfig
    
    Windows IP 構成
    
    イーサネット アダプター イーサネット:
    
       接続固有の DNS サフィックス . . . . .:
       IPv4 アドレス . . . . . . . . . . . .: 192.168.1.11
       サブネット マスク . . . . . . . . . .: 255.255.255.0
       デフォルト ゲートウェイ . . . . . . .: 192.168.1.1
    
    C:\>
    
    < PC-C >
    C:\> netsh interface ipv4 set address "イーサネット" static 192.168.3.10 255.255.255.0 192.168.3.2
    
    C:\> ipconfig
    
    Windows IP 構成
    
    イーサネット アダプター イーサネット:
    
       接続固有の DNS サフィックス . . . . .:
       IPv4 アドレス . . . . . . . . . . . .: 192.168.3.10
       サブネット マスク . . . . . . . . . .: 255.255.255.0
       デフォルト ゲートウェイ . . . . . . .: 192.168.3.2
    
    C:\>
    
    全ての PC は ping 着信許可の設定を行っているものとします。
  5. PC-A と PC-B から PC-C へ ping を実行しなさい。
  6. < 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.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 から ping は成功します。
  7. RT-B を以下の通り設定しなさい。
  8. < RT-B >
    RT-B# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-B(config)# access-list 1 deny 192.168.1.10  ← 「送信元IPアドレス 192.168.1.10 のパケットを拒否する」標準IPアクセスリスト
    RT-B(config)# int f0/1
    RT-B(config-if)# ip access-group 1 out         ← アクセスリスト番号「1」のアクセスリストを out 側に適用
    RT-B(config-if)# ^Z
    RT-B#
    
    アクセスリスト番号「1」で「送信元IPアドレス 192.168.1.10 のパケットを拒否する」標準IPアクセスリストを作り、それを F0/1 の out 側に適用しています。

  9. RT-B の running-config で設定内容を確認しなさい。
  10. < RT-B >
    RT-B# sh run 
    Building configuration...
    
    !
    interface FastEthernet0/1
     ip address 192.168.3.2 255.255.255.0
     ip access-group 1 out
     duplex auto
     speed auto
    !
          ・
          ・
          ・
    !
    ip forward-protocol nd
    no ip http server
    no ip http secure-server
    !
    access-list 1 deny   192.168.1.10
    !
    !
    
  11. PC-A と PC-B から PC-C へ ping を実行しなさい。
  12. < PC-A >
    C:\> ping 192.168.3.10
    
    192.168.3.10 に ping を送信しています 32 バイトのデータ:
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    
    192.168.3.10 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    
    C:\>
    
    < PC-B >
    C:\> ping 192.168.3.10
    
    192.168.3.10 に ping を送信しています 32 バイトのデータ:
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    
    192.168.3.10 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    
    
    両方の PC から ping は成功します。
    両方の PC から ping が失敗しました。

    作成したアクセスリスト access-list 1 deny 192.168.1.10 は、192.168.1.10 (PC-A) 発のパケットを破棄するだけなのに、何故 192.168.1.11 (PC-B) からのパケットも破棄されたのでしょうか?

    これは、アクセスリストの最後の行には必ず「暗黙の deny」があり、アクセスリストのどの記述行にも一致しなかった場合は全てのパケットが破棄されるからです。つまり、access-list 1 deny 192.168.1.10 だけのアクセスリストは、実際には次のようなアクセスリストとして処理されます。
    access-list 1 deny 192.168.1.10
    access-list 1 deny any   ← これが暗黙の deny で、ここで全てのパケットが破棄される
    
  13. 作成したアクセスリストを削除し、
    同じ番号で 192.168.1.11 発のパケットを許可、192.168.1.10 発のパケットを拒否するアクセスリストを設定しなさい。
  14. < RT-B >
    RT-B# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-B(config)# no access-list 1
    RT-B(config)# access-list 1 permit 192.168.1.11  ← 「送信元IPアドレス 192.168.1.11 のパケットを許可する」標準IPアクセスリスト
    RT-B(config)# access-list 1 deny 192.168.1.10    ← 「送信元IPアドレス 192.168.1.10 のパケットを拒否する」標準IPアクセスリスト
    RT-B(config)# ^Z
    RT-B#
    
  15. RT-B で、sh access-lists コマンドと sh ip access-lists コマンドを実行しなさい。
  16. < RT-B >
    RT-B# sh access-lists
    Standard IP access list 1
        10 permit 192.168.1.11
        20 deny   192.168.1.10
    RT-B#
    RT-B# sh ip access-lists
    Standard IP access list 1
    Standard IP access list 1
        10 permit 192.168.1.11
        20 deny   192.168.1.10
    
    sh access-lists は全てのプロトコル (IP、IPX、AppleTalkなど) のアクセスリストを表示し、sh ip access-lists はIPのみのアクセスリストを表示します。しかし、このコマンドでは、どのインターフェイスにどの方向でアクセスリストを適用させたかわかりません。
    sh access-lists コマンドと sh ip access-lists コマンドは、IPのみの場合は同じ出力結果になります。
  17. RT-B で、sh ip int f0/1 コマンドを実行しなさい。
  18. < RT-B >
    RT-B# sh ip int f0/1
    FastEthernet0/1 is up, line protocol is up
      Internet address is 192.168.3.2/24
      Broadcast address is 255.255.255.255
      Address determined by setup command
      MTU is 1500 bytes
      Helper address is not set
      Directed broadcast forwarding is disabled
      Multicast reserved groups joined: 224.0.0.5 224.0.0.6
      Outgoing access list is 1
      Inbound  access list is not set
      Proxy ARP is enabled
      Local Proxy ARP is disabled
    
               ・
               ・
               ・
    RT-B#
    
    sh ip int コマンドでは、どのインターフェイスに、どのアクセスリスト (番号) が、どの方向 (Outgoing、Inbound) で適用されているかわかります。しかし、アクセスリストの内容はわかりません。
  19. RT-B の running-config を確認しなさい。
  20. < RT-B >
    RT-B# sh run 
    Building configuration...
    
    !
    interface FastEthernet0/1
     ip address 192.168.3.2 255.255.255.0
     ip access-group 1 out
     duplex auto
     speed auto
    !
          ・
          ・
          ・
    !
    ip forward-protocol nd
    no ip http server
    no ip http secure-server
    !
    access-list 1 permit 192.168.1.11
    access-list 1 deny   192.168.1.10
    !
    !
    
    sh run では、適用場所、適用方向、アクセスリストの内容の全てがわかります。
  21. PC-A と PC-B から PC-C へ ping を実行しなさい。
  22. < PC-A >
    C:\> ping 192.168.3.10
    
    192.168.3.10 に ping を送信しています 32 バイトのデータ:
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    
    192.168.3.10 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    
    C:\>
    
    < PC-B >
    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:\>
    
    192.168.1.10 (PC-A) 発のパケットは拒否され、192.168.1.11 (PC-B) 発のパケットは許可されました。
  23. 192.168.1.1 のIPアドレスを使って、RT-A から RT-C へ ping を実行しなさい。
  24. < RT-A >
    RT-A# ping 192.168.3.10 source 192.168.1.1  ← 192.168.1.1 が 送信元IPアドレス
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 192.168.3.10, timeout is 2 seconds:
    Packet sent with a source address of 192.168.1.1
    U.U.U           ← ping 失敗
    Success rate is 0 percent (0/5)
    RT-A#
    
    192.168.1.1 発のパケットも拒否されました。
  25. RT-B で、sh access-lists コマンドを実行しなさい。
  26. < RT-B >
    RT-B# sh access-lists
    Standard IP access list 1
        10 permit 192.168.1.11 (5 matches)
        20 deny   192.168.1.10 (8 matches)
    RT-B#
    
    「暗黙の deny」により、実際には次のアクセスリストとして処理されます。
    access-list 1 permit 192.168.1.11
    access-list 1 deny 192.168.1.10
    access-list 1 deny any            ← 暗黙の deny
    
    そして、RT-A の 192.168.1.1 発のパケットはこの暗黙の deny 文により破棄されます。

    では、192.168.1.10 (PC-A) 発のパケットのみ破棄して、それ以外のパケットは全て通過させるにはどうすればいいでしょうか?

    それはアクセスリストを次のように記述します。
    access-list 1 deny 192.168.1.10   ← 192.168.1.10 発のパケットを拒否
    access-list 1 permit any          ← 全てのパケットを許可
    access-list 1 deny any            ← 全てのパケットを拒否
    
    ※ 最後の行は「暗黙の deny」なので実際には記述しない。

    アクセスリストは上から順にチェックされ、該当する条件の行があったらそれ以降の行はチェックしません。

    192.168.1.10 発のパケットは一行目に一致するため、二行目以降はチェックせずに一行目の条件文で拒否されます。
    access-list 1 deny 192.168.1.10   ← 拒否
    access-list 1 permit any 
    access-list 1 deny any
    
    192.168.1.11 発以外のパケットは一行目には一致しないため二行目をチェックします。二行目は全てのパケットを許可する条件文のため、192.168.1.10 発以外のパケットはこの条件文で許可され、「暗黙の deny」の行はチェックしません。
    access-list 1 deny 192.168.1.10   ← 一致せず
    access-list 1 permit any          ← 許可
    access-list 1 deny any
    
  27. sh access-lists コマンドを実行した後、作成したアクセスリストのうち、
    「192.168.1.11 発のパケットを許可」の条件文のみ削除し、再度 sh access-lists コマンドを実行しなさい。
  28. < RT-B >
    RT-B# sh access-lists
    Standard IP access list 1
        10 permit 192.168.1.11 (5 matches)
        20 deny   192.168.1.10 (8 matches)
    RT-B# conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    RT-B(config)# no access-list 1 permit 192.168.1.11
    RT-B(config)# do sh access-lists
    RT-B(config)#
    
    sh access-lists コマンドで、アクセスリストが何も表示されません。
    これは設定済みのアクセスリストが全くないことを意味します。
    access-list 1 permit 192.168.1.11
    access-list 1 deny 192.168.1.10
    
    のうち、上の行だけ削除しようと、no access-list 1 permit 192.168.1.11 コマンドを入力しましたが、下の行も削除されました。

    access-list 1 deny 192.168.1.10 は削除していないので残っているはずですが、どうしてでしょうか?

    これは、旧来のアクセスリストの設定方法が、特定の条件文のみの削除をサポートしていないからです。これを行うには新しい設定方法を利用します。ただし、条件文の削除 (や追加) に関しては拡張IPアクセスリストでまとめて行いますので、このシナリオでは行いません。

    つまり、no access-list 1 xxx xxx コマンドでは特定の行のみを削除することはできず、同じアクセスリスト番号を持つ全ての条件文が削除されるということです。そのため、このコマンド形式でアクセスリストを削除する場合は、アクセスリスト番号まで入力します。

    (config)# no access-list [アクセスリスト番号]

    ※ sh access-lists の結果にある (5 matches) は、その条件文に該当したパケット数のカウント表示です。
  29. RT-B を、次の通り設定し、sh access-lists コマンドを実行しなさい。
  30. < RT-B >
    RT-B(config)# ip access-list standard 1
    RT-B(config-std-nacl)# deny 192.168.1.10
    RT-B(config-std-nacl)# permit any
    RT-B(config-std-nacl)# do sh access-lists
    Standard IP access list 1
        10 deny   192.168.1.10
        20 permit any
    RT-B(config-std-nacl)#
    
    番号付き標準IPアクセスリストの新しい作成方法です。

  31. RT-B で、sh run コマンドを実行し、設定したアクセスリストを確認しなさい。
  32. < RT-B >
    RT-B(config-std-nacl)# do sh run | section access-list
    access-list 1 deny   192.168.1.10
    access-list 1 permit any
    RT-B(config-std-nacl)#
    
    running-config では、旧来の設定方法で設定したものと、新しい設定方法で設定したものでの違いはありません。
  33. PC-A と PC-B から PC-C へ ping を実行し、
    192.168.1.1 のIPアドレスを使って、RT-A から RT-C へ ping を実行しなさい。
  34. < PC-A >
    C:\> ping 192.168.3.10
    
    192.168.3.10 に ping を送信しています 32 バイトのデータ:
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    192.168.2.2 からの応答: 宛先ネットワークに到達できません。
    
    192.168.3.10 の ping 統計:
        パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
    
    C:\>
    
    < PC-B >
    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:\>
    
    < RT-A >
    RT-A# ping 192.168.3.10 source 192.168.1.1
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 192.168.3.10, timeout is 2 seconds:
    Packet sent with a source address of 192.168.1.1
    !!!!!           ← ping 成功
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    RT-A#
    
    192.168.1.10 (PC-A) 発のパケットのみ拒否されました。
    ※ 次の「シナリオ」に続きます。