IOS ACL Resequencing

IOS ACL Resequencing

This is one of those tricks you wish you learned about 10 years ago, but never did. You know how easy it is to mess up a nice looking access list. You get one setup on the router, and then you end up tinkering with it over the next month and the next thing you know you have the ACL that fell out of the ugly tree and hit every branch on the way down. I have the same issue, actually the other day I was working on some ACLs for a clients VPN configuration when I realized I had forgot to include some entries. So after adding what I needed, I ended up with something like this… ( IP address have been obviously changed to protect the innocent. Ok, honestly, the whole example is just hog wash. I’m way too lazy to actually go lookup the ACL I was working on. )

text
Extended IP access list VPNc
    10 deny tcp any 10.23.4.224 0.0.0.7
    20 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.8 eq www
    25 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.9 eq www
    30 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.10 eq www
    35 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.11 eq www
    40 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.8 eq 443
    45 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.9 eq 443
    50 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.10 eq 443
    55 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.11 eq 443
    60 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.2 eq domain
    70 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.3 eq domain
    80 deny ip any any

While this is a mild example of how horrible ACLs can get out of control, there is a simple solution. The ip access-list resequence command allows you to clean up your access-list and customize the number of your statements to your liking. In the following example we start at 10, and increment with 10 on each iteration.

text
Router(config)#ip access-list resequence VPNc 10 10
Router(config)#end
Router#show ip access-lists VPNc
Extended IP access list VPNc
    10 deny tcp any 10.23.4.224 0.0.0.7
    20 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.8 eq www
    30 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.9 eq www
    40 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.10 eq www
    50 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.11 eq www
    60 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.8 eq 443
    70 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.9 eq 443
    80 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.10 eq 443
    90 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.11 eq 443
    100 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.2 eq domain
    110 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.3 eq domain
    120 deny ip any any

This could easily be renumbered starting at 100, and incrementing 10 on each line as such.

text
Router(config)#ip access-list resequence VPNc 100 10
Router(config)#end
Router#show access-list VPNc
Extended IP access list VPNc
    100 deny tcp any 10.23.4.224 0.0.0.7
    110 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.8 eq www
    120 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.9 eq www
    130 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.10 eq www
    140 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.11 eq www
    150 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.8 eq 443
    160 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.9 eq 443
    170 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.10 eq 443
    180 permit tcp 192.168.0.0 0.0.0.252 host 10.23.2.11 eq 443
    190 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.2 eq domain
    200 permit tcp 192.168.0.0 0.0.0.252 host 10.23.0.3 eq domain
    210 deny ip any any

Simple? Yes! Helpful? I hope so. I know it as saved me from pulling my hair out and having to copy / paste ACLs into Vi time and time again. As usual, feel free to leave a comment with any questions or concerns and I’ll get back to you ASAP.

Update – One thing I have noticed with this is that it can mess up the positioning of ACL remarks under some circumstances.

comments powered by Disqus

Related Posts

Time-based ACLs

Time-based ACLs

Ever since Cisco released IOS 12.0.1T we’ve had the ability to broaden the reach of the extended ACL to allow the influence of time. Time-based ACLs reference a time range that is …

Cisco Live 2015 – Customer Appreciation Event Featuring Aerosmith!!

Cisco Live 2015 – Customer Appreciation Event Featuring Aerosmith!!

Yes, you heard me right. Aerosmith! One of the most looked forward to social events for Cisco Live has always been the Customer Appreciation Events (CAE). Cisco rarely let’s us …

More IOS Tips

More IOS Tips

Learning the particulars of Cisco IOS is one of the most valuable things a network engineer can do. These skills will be the basis of everything you do on the lab and on your …