通信中にCiscoのACLを削除すると何が起きるのか?
インタフェースにACLを適用している状態でACL本体を削除すると何が起きるのか?という質問を受けたのですが、どうなると思いますか?
今回は次のような構成のネットワークを作成してテストしてみます。
ubuntu-0 | 10.0.0.254 |
ubuntu-1 | 10.0.1.254 |
ubuntu-2 | 10.0.2.254 |
pingを送信しながら挙動を確かめるため、こんな感じのACLを設定します。
Router(config)#ip access-list extended MYACL Router(config-ext-nacl)#permit icmp host 10.0.0.254 host 10.0.1.254 Router(config-ext-nacl)# Router(config-ext-nacl)#int gi0/0 Router(config-if)#ip access-group MYACL in
ubuntu-0(10.0.0.254)からubuntu-2(10.0.2.254)にpingを実行すると、このようにフィルタされます。
root@ubuntu-0:~# ping 10.0.2.254 PING 10.0.2.254 (10.0.2.254) 56(84) bytes of data. From 10.0.0.1 icmp_seq=1 Packet filtered From 10.0.0.1 icmp_seq=2 Packet filtered From 10.0.0.1 icmp_seq=3 Packet filtered ^C --- 10.0.2.254 ping statistics --- 3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2004ms root@ubuntu-0:~#
それではpingを実行しながらACLを削除してみましょう。ACLを削除したら引き続きインタフェースにACLが適用されている事を確認します。
Router(config)#no ip access-list extended MYACL Router(config)# Router(config)#do show run int gi0/0 Building configuration... Current configuration : 139 bytes ! interface GigabitEthernet0/0 ip address 10.0.0.1 255.255.255.0 ip access-group MYACL in duplex auto speed auto media-type rj45 end Router(config)#
結果は…ACLを削除した瞬間にpingが通り始めました!
root@ubuntu-0:~# ping 10.0.2.254 PING 10.0.2.254 (10.0.2.254) 56(84) bytes of data. From 10.0.0.1 icmp_seq=1 Packet filtered From 10.0.0.1 icmp_seq=2 Packet filtered From 10.0.0.1 icmp_seq=3 Packet filtered 64 bytes from 10.0.2.254: icmp_seq=32 ttl=63 time=1.57 ms 64 bytes from 10.0.2.254: icmp_seq=33 ttl=63 time=1.16 ms 64 bytes from 10.0.2.254: icmp_seq=34 ttl=63 time=1.22 ms 64 bytes from 10.0.2.254: icmp_seq=35 ttl=63 time=1.35 ms
実験の感想
インタフェースに適用されているACLを削除できるっていうのが違和感あるし定義されていないACLがインタフェースに適用されている状態っていうのが気持ち悪いのですが、これが仕様なんですね。
こういうのは仕様と割り切った方が良いです。
TCP接続している状態でCiscoのdeny ACLをインタフェースに適用するとどうなるのか?
denyするACLを適用したら既にTCP接続している通信がどうなるのかテストしてみたいと思います。
ubuntu-0 | 10.0.0.254 |
ubuntu-1 | 10.0.1.254 |
ubuntu-2 | 10.0.2.254 |
まずはubuntu-0(10.0.0.254)からubuntu-2(10.0.2.254)の65000/tcpにコネクションが張れる事を確認します。
root@ubuntu-0:~# nc 10.0.2.254 65000
この状態で「TEST」という文字列を送信してみます。
root@ubuntu-0:~# nc 10.0.2.254 65000 TEST
ubuntu-2では次のように表示されます。
root@ubuntu-2:~# nc -l 65000 TEST
「TEST」という文字列が送信出来る事が確認できたのでACLを追加します。
Router#conf t Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip access-list extended DENY-ACL Router(config-ext-nacl)#deny ip host 10.0.0.254 host 10.0.2.254 Router(config-ext-nacl)# Router(config-ext-nacl)#int gi0/0 Router(config-if)#ip access-group DENY-ACL in Router(config-if)#
この状態で「TEST2」という文字列を送信してみます。
root@ubuntu-0:~# nc 10.0.2.254 65000 TEST TEST2
ubuntu-2を確認すると…「test2」は表示されず通信が遮断されている事が分かります。
root@ubuntu-2:~# nc -l 65000 TEST
実験の感想
FWでポリシー追加するような場合は新規通信から追加したポリシーが適用される事が多いのですが、CiscoのACLはdeny ACLを適用した瞬間に通信が拒否される事が分かりました。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント