Extended ACL
1. Configuration of Extended ACL
Let’s dive into the scenario and topology:
In this setup, the Marketing network (192.168.1.0/24) contains a computer that needs access to the Marketing Web Server (192.168.2.1) exclusively over HTTPS (TCP port 443).

At the same time, it is crucial to deny all access from this computer to the Legal Web Server (192.168.3.1). This example illustrates how Extended ACLs can be used to enforce more granular traffic control based on protocols, source, and destination.
🛠️ Enter Global Configuration Mode
To begin creating an Extended ACL, you need to access the global configuration mode. This is where all major configurations, including ACLs, are defined.
🔹 Use the following command to enter global configuration mode:
R1# configure terminal Enter configuration commands, one per line. End with CNTL/Z. R1(config)#
After entering configuration mode, type the ip access-list
command to check the available options for ACL creation:
R1(config)# ip access-list ? extended Extended Access List helper Access List acts on helper-address log-update Control access list log updates logging Control access list logging resequence Resequence Access List standard Standard Access List
You can see various ACL options, including extended for creating Extended ACLs. Choose this option to proceed.
🔍 Start Creating the Extended ACL
Extended ACLs can be numbered (100–199 or 2000–2699) or named. In this example, we’ll create a numbered Extended ACL with the number 101.
🔹 To begin, use the following command:
R1(config)# ip access-list extended ? <100-199> Extended IP access-list number <2000-2699> Extended IP access-list number (expanded range) WORD Access-list name
Select 101 as the ACL number:
R1(config)# ip access-list extended 101
Now you’re in the extended ACL configuration mode and can start adding rules.
🔍 Define Permit Rule
We want to allow traffic from the Marketing computer (192.168.1.1) to the Marketing Web Server (192.168.2.1) over HTTPS (TCP port 443). Start by specifying the protocol for the rule, in this case, TCP:
R1(config-ext-nacl)# permit ? <0-255> An IP protocol number ahp Authentication Header Protocol eigrp Cisco's EIGRP routing protocol esp Encapsulation Security Payload gre Cisco's GRE tunneling icmp Internet Control Message Protocol igmp Internet Gateway Message Protocol ip Any Internet Protocol ipinip IP in IP tunneling nos KA9Q NOS compatible IP over IP tunneling object-group Service object group ospf OSPF routing protocol pcp Payload Compression Protocol pim Protocol Independent Multicast sctp Stream Control Transmission Protocol tcp Transmission Control Protocol udp User Datagram Protocol
Choose TCP as the protocol, and then define the source (the Marketing computer) as a specific host:
R1(config-ext-nacl)# permit tcp ? A.B.C.D Source address any Any source host host A single source host object-group Source network object group
Specify the source address as 192.168.1.1:
R1(config-ext-nacl)# permit tcp host 192.168.1.1 ? A.B.C.D Destination address any Any destination host eq Match only packets on a given port number gt Match only packets with a greater port number host A single destination host lt Match only packets with a lower port number neq Match only packets not on a given port number object-group Destination network object group range Match only packets in the range of port numbers
Next, define the destination (the Marketing Web Server) as a specific host:
R1(config-ext-nacl)# permit tcp host 192.168.1.1 host 192.168.2.1 ? ack Match on the ACK bit dscp Match packets with given dscp value eq Match only packets on a given port number established Match established connections fin Match on the FIN bit fragments Check non-initial fragments gt Match only packets with a greater port number log Log matches against this entry log-input Log matches against this entry, including input interface lt Match only packets with a lower port number match-all Match if all specified flags are present match-any Match if any specified flag is present neq Match only packets not on a given port number option Match packets with given IP Options value precedence Match packets with given precedence value psh Match on the PSH bit range Match only packets in the range of port numbers reflect Create reflexive access list entry rst Match on the RST bit syn Match on the SYN bit time-range Specify a time-range tos Match packets with given TOS value ttl Match packets with given TTL value urg Match on the URG bit
Finally, specify that the rule applies to traffic on port 443 (HTTPS):
R1(config-ext-nacl)# permit tcp host 192.168.1.1 host 192.168.2.1 eq ? <0-65535> Port number bgp Border Gateway Protocol (179) chargen Character generator (19) cmd Remote commands (rcmd, 514) daytime Daytime (13) discard Discard (9) domain Domain Name Service (53) drip Dynamic Routing Information Protocol (3949) echo Echo (7) exec Exec (rsh, 512) finger Finger (79) ftp File Transfer Protocol (21) ftp-data FTP data connections (20) gopher Gopher (70) hostname NIC hostname server (101) ident Ident Protocol (113) irc Internet Relay Chat (194) klogin Kerberos login (543) kshell Kerberos shell (544) login Login (rlogin, 513) lpd Printer service (515) nntp Network News Transport Protocol (119) onep-plain ONEP Cleartext (15001) onep-tls ONEP TLS (15002) pim-auto-rp PIM Auto-RP (496) pop2 Post Office Protocol v2 (109) pop3 Post Office Protocol v3 (110) smtp Simple Mail Transport Protocol (25) sunrpc Sun Remote Procedure Call (111) tacacs TAC Access Control System (49) talk Talk (517) telnet Telnet (23) time Time (37) uucp Unix-to-Unix Copy Program (540) whois Nicname (43) www World Wide Web (HTTP, 80)
Choose 443 as the port:
R1(config-ext-nacl)# permit tcp host 192.168.1.1 host 192.168.2.1 eq 443
This rule allows only HTTPS traffic from the Marketing computer to the Marketing Web Server.
⚠️ Define the Deny Rule
Similarly, create a rule to deny all types of traffic from the Marketing computer (192.168.1.1) to the Legal Web Server (192.168.3.1):
🔹 Configure the deny rule:
R1(config-ext-nacl)# deny ip host 192.168.1.1 host 192.168.3.1
Explanation:
deny
: Specifies that the traffic will be blocked.ip
: Matches all IP traffic, including TCP, UDP, ICMP, and others.host 192.168.1.1
: Specifies the Marketing computer as the source of the traffic.host 192.168.3.1
: Specifies the Legal Web Server as the destination.
📢 Now the router has the deny rule added to the access list. However, the access list is not yet applied to an interface, so the router doesn’t know where to filter the packets. We will apply the ACL to the appropriate interface in the next step.
2. Where to Apply Extended ACL
🔍 Apply ACL Closest to the Source
Extended ACLs filter traffic based on multiple parameters (source, destination, and ports), so applying them as close as possible to the source ensures that unwanted traffic is blocked early, preventing unnecessary load on the network.
Example Scenario:
- In this case, the Marketing computer is the source.
- Apply the ACL to Interface G0/0, which is the interface closest to the Marketing network.

🔹 Applying the ACL to Interface
First, access the interface configuration mode for G0/0:
R1(config)# int g0/0
Then, use the ip access-group
command to apply the Extended ACL. The router will prompt you to specify the ACL number or name:
R1(config-if)# ip access-group ? <1-199> IP access list (standard or extended) <1300-2699> IP expanded access list (standard or extended) WORD Access-list name
Select the ACL number (101 in this case) and apply it in the inbound direction, as we want to filter traffic entering the router from the Marketing network.
R1(config-if)# ip access-group 101 ? in inbound packets out outbound packets R1(config-if)# ip access-group 101 in
3. Verifying Extended ACLs
To verify the ACL configuration, use the following command:
🔹 Check the ACL rules:
R1# show access-lists 101 Extended IP access list 101 10 permit tcp host 192.168.1.1 host 192.168.2.1 eq 443 20 deny ip host 192.168.1.1 host 192.168.3.1
This output confirms the following:
- Permit Rule: Allows HTTPS traffic from 192.168.1.1 to 192.168.2.1.
- Deny Rule: Blocks all traffic from 192.168.1.1 to 192.168.3.1.
4. Named Extended ACLs
Extended ACLs can also be identified by either a number or a name.

🔍 Create the Named Extended ACL
In this section, we will create a Named Extended ACL called MARKETING_POLICY.
🔹 Enter global configuration mode and define the ACL with a descriptive name:
R1(config)# ip access-list extended MARKETING_POLICY R1(config-ext-nacl)# permit tcp host 192.168.1.1 host 192.168.2.1 eq 443 R1(config-ext-nacl)# deny ip host 192.168.1.1 host 192.168.3.1
This configuration ensures that:
- HTTPS traffic from the Marketing computer (
192.168.1.1
) to the Marketing Web Server (192.168.2.1
) is permitted. - All traffic from the Marketing computer to the Legal Web Server (
192.168.3.1
) is denied.
5. Applying Named Extended ACLs to Interfaces
After creating the named ACL, it must be applied to an interface.
In this example, apply the MARKETING_POLICY ACL to incoming traffic on interface G0/0
(connected to the Marketing network):
🔹 Apply the ACL to the interface:
R1(config)# interface G0/0 R1(config-if)# ip access-group MARKETING_POLICY in
✅ This ensures that the ACL is actively filtering packets as they enter the router from the Marketing network.
6. Verifying Named Extended ACLs
To confirm that the named ACL MARKETING_POLICY is configured correctly, use the following command:
🔹 Check ACL Configuration:
R1# show access-lists MARKETING_POLICY Extended IP access list MARKETING_POLICY 10 permit tcp host 192.168.1.1 host 192.168.2.1 eq 443 20 deny ip host 192.168.1.1 host 192.168.3.1
✅ This output confirms that:
- HTTPS traffic from 192.168.1.1 to 192.168.2.1 is permitted.
- All traffic from 192.168.1.1 to 192.168.3.1 is denied.
7. Troubleshooting Extended ACLs
If the Extended ACL is not functioning as expected, follow these steps to troubleshoot:
🔍 Verify Application
Ensure that the ACL is applied to the correct interface and in the correct direction (inbound or outbound). Use the following command to check:
🔹 Check ACL Application on Interface:
R1# show ip interface X
✅ Confirm:
- The ACL name or number is applied to the intended interface.
- The direction (inbound or outbound) matches your intended configuration.
🔍 Check Configuration
Review the rules in the ACL to ensure they are correctly configured and ordered. Extended ACLs process entries top-down, so the sequence of rules is critical.
🔹 Review ACL Entries:
R1# show access-lists
✅ Check for:
- Missing or incorrect rules.
- Unexpected matches due to improper ordering of rules.
🔹 Modify if Needed
If the ACL is incorrect, you can remove and recreate it. Start by deleting the problematic ACL:
R1(config)# no ip access-list extended MARKETING_POLICY
Then, redefine the ACL with the correct entries.