CiscoのACL設定方法+ちょっとした実験

通信中にCiscoのACLを削除すると何が起きるのか?

インタフェースにACLを適用している状態でACL本体を削除すると何が起きるのか?という質問を受けたのですが、どうなると思いますか?

今回は次のような構成のネットワークを作成してテストしてみます。

ubuntu-010.0.0.254
ubuntu-110.0.1.254
ubuntu-210.0.2.254
テスト環境のIPアドレス

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-010.0.0.254
ubuntu-110.0.1.254
ubuntu-210.0.2.254
テスト環境のIPアドレス

まずは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を適用した瞬間に通信が拒否される事が分かりました。

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

コメント

この記事へのコメントはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)