The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
An Access Control List (ACL) is a set of rules used to limit access to a particular interface (for example, if you want to restrict a wireless client from pinging the management interface of the controller). After ACLs are configured on the controller, they can be applied to the management interface, the AP-manager interface, any of the dynamic interfaces, or a WLAN to control data traffic to and from wireless clients or to the controller central processing unit (CPU) to control all traffic destined for the CPU.
You may also want to create a preauthentication ACL for web authentication. Such an ACL could be used to allow certain types of traffic before authentication is complete.
Both IPv4 and IPv6 ACL are supported. IPv6 ACLs support the same options as IPv4 ACLs including source, destination, source and destination ports.
![]() Note | You can enable only IPv4 traffic in your network by blocking IPv6 traffic. That is, you can configure an IPv6 ACL to deny all IPv6 traffic and apply it on specific or all WLANs. |
You can define up to 64 ACLs, each with up to 64 rules (or filters) for both IPv4 and IPv6. Each rule has parameters that affect its action. When a packet matches all of the parameters for a rule, the action set for that rule is applied to the packet.
When you apply CPU ACLs on a Cisco 5508 WLC or a Cisco WiSM2, you must permit traffic towards the virtual interface IP address for web authentication.
All ACLs have an implicit “deny all rule” as the last rule. If a packet does not match any of the rules, it is dropped by the controller.
If you are using an external web server with a Cisco 5508 WLC or a WLC network module, you must configure a preauthentication ACL on the WLAN for the external web server.
If you apply an ACL to an interface or a WLAN, wireless throughput is degraded when downloading from a 1-Gbps file server. To improve throughput, remove the ACL from the interface or WLAN, move the ACL to a neighboring wired device with a policy rate-limiting restriction, or connect the file server using 100 Mbps rather than 1 Gbps.
Multicast traffic received from wired networks that is destined to wireless clients is not processed by WLC ACLs. Multicast traffic initiated from wireless clients, destined to wired networks or other wireless clients on the same controller, is processed by WLC ACLs.
ACLs are configured on the controller directly or configured through Cisco Prime Infrastructure templates. The ACL name must be unique.
You can configure ACL per client (AAA overridden ACL) or on either an interface or a WLAN. The AAA overridden ACL has the highest priority. However, each interface, WLAN, or per client ACL configuration that you apply can override one another.
If peer-to-peer blocking is enabled, traffic is blocked between peers even if the ACL allows traffic between them.
Authentication traffic has to go through the Cisco WLC for this feature to be supported, even if DNS-based ACL is local to the AP.
When you create an ACL, it is recommended to perform the two actions (create an ACL or ACL rule and apply the ACL or ACL rule) continuously either from CLI or GUI.
In Cisco Wireless Releases prior to 8.0.100.0, the behavior of the Redirect-URL-ACL (as returned via RADIUS attributes) may have been incorrect. The ACL was applied in only the Ingress direction (traffic destined for the LAN or distribution system) of the radio interface. These ACLs should also be applied in the Egress direction (traffic destined for the wireless client). Therefore, after upgrading to a Cisco Wireless Release 8.0 or a later release, you may need to adjust the ACL to accommodate the correction of this behavior.
Mobility pings on ports 16666 and 16667 are notable exemptions and these ports cannot be blocked by any ACL.
![]() Note | ACL ID 0 is not supported in Cisco WLC. Foreign WLC does not send url-redirect-acl to anchor WLC if the received ACL attribute from RADIUS/ISE is mapped to ACL ID 0. It causes web redirect failure on wireless client later. |
Configuring and Applying Access Control Lists (GUI)
Step 1 | Choose Controller > Interfaces. | ||
Step 2 | Click the name of the desired interface. The Interfaces > Edit page for that interface appears. | ||
Step 3 | Choose the desired ACL from the ACL Name drop-down list
and click
Apply. The default is None.
| ||
Step 4 | Click Save Configuration to save your changes. |
Step 1 | Choose Security > Access Control Lists > CPU Access Control Lists to open the CPU Access Control Lists page. | ||||
Step 2 | Select the Enable CPU ACL check box to enable a designated ACL to control the IPv4 traffic to the controller CPU or unselect the check box to disable the CPU ACL feature and remove any ACL that had been applied to the CPU. The default value is unselected. | ||||
Step 3 | From the ACL Name drop-down list, choose the ACL that will
control the IPv4 traffic to the controller CPU. None is the default value when
the CPU ACL feature is disabled. If you choose None while the Enable CPU ACL
check box is selected, an error message appears indicating that you must choose
an ACL.
| ||||
Step 4 | Select the
Enable CPU IPv6 ACL
check box to enable a designated ACL to control the IPv6
traffic to the controller CPU or unselect the check box to disable the CPU ACL
feature and remove any ACL that had been applied to the CPU. The default value
is unselected.
| ||||
Step 5 | From the IPv6 ACL Name drop-down list, choose the ACL that will control the IPv6 traffic to the controller CPU. None is the default value when the CPU ACL feature is disabled. If you choose None while the Enable CPU IPv6 ACL check box is selected, an error message appears indicating that you must choose an ACL. | ||||
Step 6 | Click Apply to commit your changes. | ||||
Step 7 | Click Save Configuration to save your changes. |
Step 1 | Choose WLANs to open the WLANs page. | ||
Step 2 | Click the ID number of the desired WLAN to open the WLANs > Edit page. | ||
Step 3 | Choose the Advanced tab to open the WLANs > Edit (Advanced) page. | ||
Step 4 | From the Override Interface ACL drop-down list, choose the IPv4 or IPv6 ACL that you want to apply to this WLAN. The ACL that you choose overrides any ACL that is configured for the interface. None is the default value.
| ||
Step 5 | Click Apply. | ||
Step 6 | Click Save Configuration. |
Step 1 | Choose WLANs to open the WLANs page. |
Step 2 | Click the ID number of the desired WLAN to open the WLANs > Edit page. |
Step 3 | Choose the Security and Layer 3 tabs to open the WLANs > Edit (Security > Layer 3) page. |
Step 4 | Select the Web Policy check box. |
Step 5 | From the Preauthentication ACL drop-down list, choose the desired ACL and click Apply. None is the default value. |
Step 6 | Click Save Configuration to save your changes. |
Step 1 | See all of the ACLs that are configured on the controller by entering this command: | ||
Step 2 | See detailed information for a particular ACL by entering this command: show [ipv6] acl detailed acl_name The Counter text box increments each time a packet matches an ACL rule, and the DenyCounter text box increments each time a packet does not match any of the rules.
| ||
Step 3 | Enable or disable ACL counters for your controller by entering this command: config acl counter {start | stop}
| ||
Step 4 | Add a new ACL by entering this command: config [ipv6] acl create acl_name. You can enter up to 32 alphanumeric characters for the acl_name parameter.
| ||
Step 5 | Add a rule for an ACL by entering this command: config [ipv6] acl rule add acl_name rule_index | ||
Step 6 | Configure an ACL rule by entering config [ipv6] acl rule command: | ||
Step 7 | Save your settings by entering this command:
|
Step 1 | Perform the following to
apply an IPv4 ACL:
| ||||
Step 2 | Perform the following to apply an IPv6 ACL: | ||||
Step 3 | To apply an ACL to a WLAN, enter this command: | ||||
Step 4 | To apply a pre-authentication ACL to a WLAN, enter this command: | ||||
Step 5 | Save your changes by entering this command: save config |
Configuring Layer 2 Access Control Lists
You can configure rules for Layer 2 access control lists (ACLs) based on the Ethertype associated with the packets. Using this feature, if a WLAN with central switching is required to support only PPPoE clients, you can apply Layer 2 ACL rules on the WLAN to allow only PPPoE packets after the client is authenticated and the rest of the packets are dropped. Similarly, if the WLAN is required to support only IPv4 clients or only IPv6 clients, you can apply Layer 2 ACL rules on the WLAN to allow only IPv4 or IPv6 packets after the client is authenticated and the rest of the packets are dropped. For a locally-switched WLAN, you can apply the same Layer 2 ACL either for the WLAN or a FlexConnect AP. AP-specific Layer 2 ACLs can be configured only on FlexConnect APs. This is applicable only for locally-switched WLANs. The Layer 2 ACL that is applied to the FlexConnect AP takes precedence over the Layer 2 ACL that is applied to the WLAN.
In a mobility scenario, the mobility anchor configuration is applicable.
If you map a Layer 2 ACL to a WLAN, the Layer 2 ACL rules that you configure apply to all the clients that are associated with that WLAN.
When you map a Layer 2 ACL to a centrally switched WLAN, the rule to pass traffic based on the Ethertype is determined by Fast-Path for every client that is associated with the WLAN. Fast-Path looks into the Ethernet headers associated with the packets and forwards the packets whose Ethertype matches with the one that is configured for the ACL.
When you map a Layer 2 ACL to a locally switched WLAN, the rule to pass traffic based on the Ethertype is determined by the forwarding plane of the AP for every client that is associated with the WLAN. The AP forwarding plane looks into the Ethernet headers associated with the packets and forwards or denies the packets based on the action whose Ethertype matches with the one that is configured for the ACL.
![]() Note | WLC devices configured to preform Central Switching and Centralized Authentication displays the name of the Layer-2 ACL being applied to roaming users incorrectly. The situation occurs when an authorized device preforms a Layer-3 roam from the anchor controller to a foreign controller. After roaming, if an administrator issues the show acl layer2 summary command on the CLI of the foreign controller the incorrect information is displayed. It is expected that the ACL applied by the anchor will follow the authenticated client as it roams from controller to controller. |
You can create a maximum of 16 rules for a Layer 2 ACL.
AP-specific Layer 2 ACLs can be configured only on FlexConnect APs. This is applicable only for locally-switched WLANs.
You can create a maximum of 64 Layer 2 ACLs on a controller.
A maximum of 16 Layer 2 ACLs are supported per AP because an AP supports a maximum of 16 WLANs.
Ensure that the Layer 2 ACL names do not conflict with the FlexConnect ACL names because an AP does not support the same Layer 2 and Layer 3 ACL names.
config acl layer2 {create | delete} acl-name—Creates or deletes a Layer 2 ACL.
config acl layer2 apply acl-name—Applies a Layer 2 ACL to a data path.
config acl layer2 rule {add | delete} acl-rule-name index—Creates or deletes a Layer 2 ACL rule.
config acl layer2 rule change index acl-rule-name old-index new-index—Changes the index of a Layer 2 ACL rule.
config acl layer2 rule action acl-rule-name index {permit | deny}—Configures an action for a rule.
config acl layer2 rule etherType name index ether-type-number-in-hex ether-type-mask-in-hex—Configures the destination IP address and netmask for a rule.
config acl layer2 rule swap index acl-rule-name index-1 index-2—Swaps the index values of two rules.
config acl counter {start | stop}—Starts or stops the ACL counter. This command is applicable for all types of ACLs. In an HA environment, the counters are not synchronized between the active and standby controllers.
show acl layer2 summary—Shows a summary of the Layer 2 ACL profiles.
show acl layer2 detailed acl-name—Shows a detailed description of the Layer 2 ACL profile specified.
show client detail client-mac-addr—Shows the Layer 2 ACL rule that is applied to the client.
This is applicable to centrally switched WLANs and locally switched WLANs without FlexConnect access points.
config wlan layer2 acl wlan-id acl-name—Maps a Layer 2 ACL to a centrally switched WLAN.
config wlan layer2 acl wlan-id none—Clears the Layer 2 ACLs mapped to a WLAN.
show wlan wlan-id—Shows the status of a Layer 2 ACL that is mapped to a WLAN.
This is applicable to locally switched WLANs that have FlexConnect access points.
config ap flexconnect wlan l2acl add wlan-id ap-name acl-name—Maps a Layer 2 ACL to a locally switched WLAN.
config ap flexconnect wlan l2acl delete wlan-id ap-name—Deletes the mapping.
show ap config general ap-name—Shows the details of the mapping.
Step 1 | Choose to open the Layer2 Access Control Lists page. |
Step 2 | Add a new ACL by clicking New. The Layer2 Access Control Lists > New page appears. |
Step 3 | In the Access Control List Name text box, enter a name for the new ACL. You can enter up to 32 alphanumeric characters. |
Step 4 | Click Apply. When the Layer2 Access Control Lists page reappears, click the name of the new ACL. |
Step 5 | When the Layer2 Access Control Lists > Edit page appears, click Add New Rule. The Layer2 Access Control Lists > Rules > New page appears. |
Step 6 | Configure a rule
for this ACL as follows:
|
Step 7 | Click Save Configuration to save your changes. |
Step 8 | Repeat this procedure to add any additional ACLs. |
Step 1 | Choose WLANs to open the WLANs page. |
Step 2 | Click the ID number of the desired WLAN to open the WLANs > Edit page. |
Step 3 | Choose the Advanced tab to open the WLANs > Edit (Advanced) page. |
Step 4 | From the Layer2 ACL drop-down list, choose the ACL you have created. |
Step 5 | Click Apply. |
Step 6 | Click Save Configuration. |
Step 1 | Choose to open the All APs page. |
Step 2 | Click the name of the desired access point to open the All APs > Details page. |
Step 3 | On the All APs > Details page, click the FlexConnect tab. |
Step 4 | From the PreAuthentication Access Control Lists area, click the Layer2 ACLs link to open the ACL Mappings page. |
Step 5 | From the Layer2 ACL drop-down list in the WLAN ACL Mapping area, choose the ACL you have created and click Add. |
Step 6 | Click Apply. |
Step 7 | Click Save Configuration. |
Configuring DNS-based Access Control Lists
The DNS-based ACLs are used for client devices such as Apple and Android devices. When using these devices, you can set pre-authentication ACLs on the Cisco WLC to determine where devices have the right to go.
To enable DNS-based ACLs on the Cisco WLC, you need to configure the allowed URLs for the ACLs. The URLs need to be pre-configured on the ACL.
With DNS-based ACLs, the client when in registration phase is allowed to connect to the configured URLs. The Cisco WLC is configured with the ACL name and that is returned by the AAA server for pre-authentication ACL to be applied. If the ACL name is returned by the AAA server, then the ACL is applied to the client for web-redirection.
At the client authentication phase, the ISE server returns the pre-authentication ACL (url-redirect-acl). The DNS snooping is performed on the AP for each client until the registration is complete and the client is in SUPPLICANT PROVISIONING state. When the ACL configured with the URLs is received on the Cisco WLC, the CAPWAP payload is sent to the AP enabling DNS snooping on the client and the URLs to be snooped.
With URL snooping in place, the AP learns the IP address of the resolved domain name in the DNS response. If the domain name matches the configured URL, then the DNS response is parsed for the IP address, and the IP address is sent to the Cisco WLC as a CAPWAP payload. The Cisco WLC adds the IP address to the allowed list of IP addresses and thus the client can access the URLs configured.
In Release 8.0, support was added for DNS-based ACL with local web authentication.
Maximum of 10 URLs can be allowed for an access control list.
On the Cisco WLC, 20 IP addresses are allowed for one client.
Local authentication is not supported for FlexConnect APs.
DNS-based ACLs are not supported on FlexConnect APs with Local Switching.
DNS-based ACLs are not supported on Cisco 1130 and 1240 series access points.
Authentication traffic has to go through the Cisco WLC for this feature to be supported, even if DNS-based ACL is local to the AP.
If a client is anchored, be it auto-anchor or after roaming, DNS-based ACLs do not work.
Step 1 | Specifies to
create ACL. You can enter an IPv4 ACL name up to 32 alphanumeric characters.
config acl create name Example: (Cisco Controller) >> config acl create android
|
Step 2 | Specifies to
add a new URL domain for the access control list. URL domain name should be
given in a valid format, for example, Cisco.com, bbc.in, or play.google.com.
The hostname comparison is a sub string matched (wildcard based). You must use
the ACL name that you have created already.
config acl url-domain add domain-name acl-name Example: (Cisco Controller) >> config acl url-domain add cisco.com android
(Cisco Controller) >> config acl url-domain add play.google.com android
|
Step 3 | Specifies to
delete an existing URL domain for the access control list.
config acl url-domain delete domain-name acl-name Example: (Cisco Controller) >> config acl url-domain delete cisco.com android
|
Step 4 | Specifies to
apply the ACL.
config acl apply acl-name Example: (Cisco Controller) >> config acl apply android
|
Step 5 | Displays
DNS-based ACL information by entering this command:
show acl summary Example: (Cisco Controller) >> show acl summary
ACL Counter Status Disabled
----------------------------------------
IPv4 ACL Name Applied
-------------------------------- -------
android No
StoreACL Yes
----------------------------------------
IPv6 ACL Name Applied
-------------------------------- -------
|
Step 6 | Displays
detailed DNS-based ACL information by entering this command:
show acl detailed acl-name Example: (Cisco Controller) >> show acl detailed android
o rules are configured for this ACL.
DenyCounter : 0
URLs configured in this ACL
---------------------------
*.play.google.com
*.store.google.com
|
Step 7 | Displays the
IP addresses per client learned through DNS snooping (DNS-based ACL) by
entering this command:
show client detail mac-address Example: (Cisco Controller) >> show client detail mac-address
|
Step 8 | Enables
debugging of information related to DNS-based ACL.
debug aaa events enable Example: (Cisco Controller) >> debug aaa events enable
|
Step 1 | Choose to open the Access Control Lists page. | ||
Step 2 | If you want to see
if packets are hitting any of the ACLs configured on your controller, select
the
Enable
Counters check box and click
Apply. Otherwise, leave the check box unselected, which
is the default value. This feature is useful when troubleshooting your system.
| ||
Step 3 | Add a new ACL by clicking New. The Access Control Lists > New page appears. | ||
Step 4 | In the Access Control List Name text box, enter a name for the new ACL. You can enter up to 32 alphanumeric characters. | ||
Step 5 | Select the ACL type as IPv4. | ||
Step 6 | Click Apply. | ||
Step 7 | When the Access Control Lists page reappears, click the name of the new ACL. The ACLs have no IP rules. Hover your cursor over the blue drop-down arrow, choose Add-Remove URL from the drop-down list to open the URL List page. | ||
Step 8 | To add a new URL domain for an ACL, enter the new URL domain for the access control list in the URL String Name text box. The URL domain name should be given in a valid format, for example, Cisco.com, bbc.in, or play.google.com. | ||
Step 9 | To delete an URL domain, hover your cursor over the blue drop-down arrow under the URL Name you want to delete, and select Delete. |
Configuring URL Filtering
URL filtering feature allows you to control access to internet websites. It does so by permitting or denying access to specific websites based on information contained in a URL access control list (ACL). The URL filtering then restricts access based on the ACL list.
Using location based filtering, APs are grouped under various AP groups and WLAN profiles separate trusted and non-trusted clients within the same SSID. This forces re-authentication and new VLAN when a trusted client moves to a non-trusted AP or vice-versa.
The Wireless Controller (WLC) supports up to 64 ACLs. These ACLs are configured to either permit or deny requests, and can be associated with different interfaces (ex: WLAN, LAN), thus increasing effective filtering. Policies can be implemented locally on a WLAN or an AP group that is different from the applied global policy.
![]() Note | Default settings is to deny requests where the request URL does not match the applied ACL. |
Not supported on Cisco 2504 WLCs, vWLC, and Mobility Express.
This feature is supported only on WLAN Central Switching and not Local switching.
Not supported in Flex mode with local switching.
URL name is limited to 32 characters in length.
No AVC Profile for the matched URLs. ACL Actions support for the Matched URLs.
White list and Black list can be created using the "*" implicit rule in the ACL to permit or deny requests respectively.
Only HTTP URLs are supported.
Radius server returning URL filtering ACL name is not supported.
Configuring URL Filtering (GUI)
To create or delete access control lists in an WLAN.
Step 1 | Choose to open the URL Access Control Lists page. | ||
Step 2 | Select the Enable URL Acl check box to enable the URL ACL feature. | ||
Step 3 | Add a new ACL by clicking New. The page appears. In the URL ACL Name text box, enter a name for the new ACL. You can enter up to 32 alphanumeric characters. | ||
Step 4 | Click
Apply.
|
Configuring rules in an URL ACL List.
Command or Action | Purpose | |||
---|---|---|---|---|
Step 1 | Choose to open the URL Access Control Lists page | |||
Step 2 | Choose the URL ACL. |
page appears. | ||
Step 3 | Choose Add New Rule. | |||
Step 4 | Configure a rule for this ACL from the drop-down menu. | |||
Step 5 | Click Apply. |
Repeat this procedure to add any additional rules.
|
Applying the URL ACL to the entire network.
Step 1 | Choose to open the local policy page. | ||
Step 2 | Choose the
desired policy.
page appears. | ||
Step 3 | Enter the Match Role String in the text box. | ||
Step 4 | Select the URL ACL from the URL ACL drop-down list. | ||
Step 5 | Click
Apply.
|
Applying the URL ACL to an interface in the network.
Applying the URL ACL to a WLAN in the network.
Mapping the policy to a WLAN in the network.
This procedure helps delete the policy-mapping in a WLAN.
Mapping the policy to an AP Group in the network.
Step 1 | Choose to open the WLAN page. |
Step 2 | Choose . |
Step 3 | Choose the
AP
Group.
The page appears. |
Step 4 | Choose the WLANs tab. |
Step 5 | Hover the mouse cursor over the blue drop-down arrow of the required WLAN, select Policy-Mapping. |
Step 6 | In the page. |
Step 7 | Click
Apply.
The WLAN and AP Group are Local Role based policies. |
Configuring URL Filtering (CLI)
Step 1 | Configure the URL based Filtering feature by entering this command: config acl url-acl {enabled | disable} |
Step 2 | Create or delete a URL ACL by entering this command: config acl url-acl{ create | delete} id-token |
Step 3 | Apply the URL ACL to the data path by entering this command: config acl url-acl applyacl-name |
Step 4 | Configure an acl to an interface by entering this command: config interface url-acl interface-name acl-name |
Step 5 | Configure an acl to a WLAN by entering this command: config wlan url-acl wlan-id acl-name |
Step 1 | Create or delete a ACL by entering this command: config acl url-acl rule{ add | delete} acl-name index | ||
Step 2 | Configure the URL address in a valid format (example: www.cisco.com) by entering this command: config acl url-acl rule urlacl-name index url-name | ||
Step 3 | Configure the
action of the rule by entering this command:
config acl url-acl rule
action acl-name
index{ permit
|
deny}
|
Step 1 | Create or delete a local profiling policy by entering this command: config policy policy-name{create | delete} |
Step 2 | Configure a match type to a policy by entering this command: config policy policy-name match role {role-name| none} |
Step 3 | Configure an action to a policy by entering this command: config policy policy-name action url-acl {enable | disable} acl-name |
Step 4 | Activate a local policy to a WLAN by entering this command: config wlan policy add priority-index policy-name wlan-id |
Step 5 | Add or delete a local policy in an AP group in a WLAN by entering this command: config wlan apgroup policy {add | delete} priority-index policy-name ap-group-name wlan-id |
View ACL summary by entering this command:
show acl url-acl summary
View detailed URL ACL profile information by entering this command:
show acl url-acl detailed acl-name
View the details of a policy by entering this command:
View client details by MAC address by entering this command: show client detail mac-address
View the WLAN configuration details by entering this command: show wlan wlan-id
View the interface details by entering this command: show interface detailed interface-name
Clear the counters by entering this command: clear url-acl-counters
You can troubleshoot the URL Filtering feature by entering these commands:
debug fastpath dump urlacldb aclid ruleindex
dataplane
debug fastpath dump
stats dataplane
The dataplane options available are 0, 1, All.
debug fastpath dump scbdb