アクセスリストを適用した時の内部処理は次図のようになりますが、インターフェイスに設定しているIPアドレスとの関係が疑問になったので、ちょっとやってみました。
ネットワーク構成図
- RT-A、RT-B、RT-C をネットワーク構成図に示す通り設定し、シングルエリア 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/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.2.1 0.0.0.0 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#
< RT-C >
Router# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)# host RT-C
RT-C(config)# int f0/0
RT-C(config-if)# ip add 192.168.3.3 255.255.255.0
RT-C(config-if)# no shut
RT-C(config-if)# router ospf 1
RT-C(config-router)# net 192.168.3.0 0.0.0.255 area 0
RT-C(config-router)# ^Z
RT-C#
- 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.2.1 ← 「RT-A (192.168.2.1) 発のパケットを拒否する」標準IPアクセスリスト
RT-B(config)# access-list 1 permit any ← 「全てのパケットを許可する」標準IPアクセスリスト
RT-B(config)# int f0/1
RT-B(config-if)# ip access-group 1 out ← アクセスリスト番号「1」のアクセスリストを out 側に適用
RT-B(config-if)#
これで次図のようになります。
これで、RT-A から RT-C への ping は失敗します。
- RT-A から RT-C へ ping を実行します。
< RT-A >
RT-A# ping 192.168.3.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.3, timeout is 2 seconds:
U.U.U ← ping 失敗
Success rate is 0 percent (0/5)
RT-A#
では、RT-A から RT-B の F0/1 への ping はどうなるのでしょうか?
こちらは ping が成功します。
- RT-A から RT-B の F0/1 へ ping を実行します。
< RT-A >
RT-A# ping 192.168.3.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.2, timeout is 2 seconds:
!!!!! ← ping 成功
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
RT-A#
RT-B の F0/1 への ping の場合は、RT-B の F0/1 の out に設定したアクセスリストにより RT-A 発のパケットが拒否されませんでした。ということは、アクセスリストによりフィルタリングされる前の部分に F0/1 のIPアドレスが設定されていて、そこに ping を行っているということになります。
- 次に、RT-B で次のコマンドを実行します。
< RT-B >
RT-B# conf t
Enter configuration commands, one per line. End with CNTL/Z.
RT-B(config-if)# int f0/1
RT-B(config-if)# no ip access-group 1 out
RT-B(config-if)# int f0/0
RT-B(config-if)# ip access-group 1 in
RT-B(config-if)#
アクセスリストの適用場所を、RT-B の F0/1 の out から RT-B の F0/0 の in に変更しました。
これで次図のようになります。
- RT-A から RT-B の F0/1 へ ping を実行します。
< RT-A >
RT-A# ping 192.168.3.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.2, timeout is 2 seconds:
U.U.U ← ping 失敗
Success rate is 0 percent (0/5)
RT-A#
当然、RT-A から RT-B の F0/1 へ ping は失敗します。
では、RT-A から RT-B の F0/0 への ping はどうなるのでしょうか?
- RT-A から RT-B の F0/0 へ ping を実行します。
< RT-A >
RT-A# ping 192.168.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.2, timeout is 2 seconds:
U.U.U ← ping 失敗
Success rate is 0 percent (0/5)
RT-A#
こちらもpingが失敗します。
ということは、アクセスリストによりフィルタリングされた後の部分に F0/0 のIPアドレスが設定されていて、そこに ping を行っているということになります。
今回は、ちょっとした珈琲ブレイクタイムでした。