- 192.168.1.0/24 から 192.168.3.0/24 への拒否するアクセスリストを RT-A に設定しなさい。
< 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 に適用させます。
- PC-A から PC-C へ ping を実行しなさい。
< 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 は失敗します。
- RT-A で、192.168.1.10 から 192.168.3.10 への許可する条件文を既存のアクセスリストに追加しなさい。
< 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 が失敗するのでしょうか?
- RT-A で、sh access-lists コマンドを実行しなさい。
< 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 へのパケットのみ許可したい、場合はどうしたらいいでしょうか?
- RT-A を、次の通り設定しなさい。
< 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 と指定して再設定しました。
- RT-A で、sh access-lists コマンドを実行しなさい。
< 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 へのパケットの許可が、アクセスリストの一番上にきました。
- 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.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アドレス指定のエントリはリストの上部に追加される)