名前付きIPアクセスリストは IOS11.2 以降でサポートされたため、通常、標準IPアクセスリストと言えば番号付き標準IPアクセスリストのことを指します。番号付き標準IPアクセスリストの設定方法には、旧来の方法と、新しい方法 (名前付きIPアクセスリストがサポートされてからの方法) があります。
- RT-A、RT-B をネットワーク構成図に示す通り設定し、シングルエリア OSPF を構成しなさい。
< 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#
- PC-A、PC-B、PC-C をネットワーク構成図に示す通り設定しなさい。
< 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 着信許可の設定を行っているものとします。
- PC-A と PC-B から PC-C へ ping を実行しなさい。
< 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 は成功します。
- RT-B を以下の通り設定しなさい。
< 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 側に適用しています。
- RT-B の running-config で設定内容を確認しなさい。
< 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
!
!
- PC-A と PC-B から PC-C へ ping を実行しなさい。
< 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 で、ここで全てのパケットが破棄される
- 作成したアクセスリストを削除し、
同じ番号で 192.168.1.11 発のパケットを許可、192.168.1.10 発のパケットを拒否するアクセスリストを設定しなさい。
< 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#
- RT-B で、sh access-lists コマンドと sh ip access-lists コマンドを実行しなさい。
< 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のみの場合は同じ出力結果になります。
- RT-B で、sh ip int f0/1 コマンドを実行しなさい。
< 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) で適用されているかわかります。しかし、アクセスリストの内容はわかりません。
- RT-B の running-config を確認しなさい。
< 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 では、適用場所、適用方向、アクセスリストの内容の全てがわかります。
- PC-A と PC-B から PC-C へ ping を実行しなさい。
< 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) 発のパケットは許可されました。
- 192.168.1.1 のIPアドレスを使って、RT-A から RT-C へ ping を実行しなさい。
< 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 発のパケットも拒否されました。
- RT-B で、sh access-lists コマンドを実行しなさい。
< 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
- sh access-lists コマンドを実行した後、作成したアクセスリストのうち、
「192.168.1.11 発のパケットを許可」の条件文のみ削除し、再度 sh access-lists コマンドを実行しなさい。
< 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) は、その条件文に該当したパケット数のカウント表示です。
- RT-B を、次の通り設定し、sh access-lists コマンドを実行しなさい。
< 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アクセスリストの新しい作成方法です。
- RT-B で、sh run コマンドを実行し、設定したアクセスリストを確認しなさい。
< 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 では、旧来の設定方法で設定したものと、新しい設定方法で設定したものでの違いはありません。
- PC-A と PC-B から PC-C へ ping を実行し、
192.168.1.1 のIPアドレスを使って、RT-A から RT-C へ ping を実行しなさい。
< 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) 発のパケットのみ拒否されました。