ip nat inside source list [acl] interface [intf] overload
Configures dynamic NAT overload (PAT) to translate multiple inside private IP addresses to a single public IP address using the interface's IP, based on an access list.
Definition: ip nat inside source list [acl] interface [intf] overload is a Cisco IOS global config command. Configures dynamic NAT overload (PAT) to translate multiple inside private IP addresses to a single public IP address using the interface's IP, based on an access list.
Overview
The `ip nat inside source list [acl] interface [intf] overload` command is a cornerstone of Network Address Translation (NAT) configuration on Cisco IOS devices. It enables Port Address Translation (PAT), also known as NAT overload, which allows multiple private IP addresses from an inside network to share a single public IP address assigned to a specific interface. This is critical for conserving public IPv4 addresses, as it maps many inside hosts to one outside address by differentiating traffic based on source port numbers.
The command works in conjunction with an access control list (ACL) that defines which inside source addresses are eligible for translation. When a packet from an inside host matches the ACL, the router translates the source IP address to the IP address of the specified interface (typically the outside interface) and assigns a unique port number. The translation is dynamic: entries are created when traffic initiates and are removed after a period of inactivity.
This command is typically used in scenarios where an organization has a limited number of public IP addresses (often just one) and needs to provide internet access to many internal users. It is an alternative to static NAT (which maps a specific inside address to a specific outside address) or dynamic NAT without overload (which requires a pool of public addresses). PAT is the most common form of NAT in home and small-to-medium business networks.
In a broader configuration workflow, you would first define the inside and outside interfaces using `ip nat inside` and `ip nat outside`, then create an ACL to match the private addresses, and finally apply this command. The command is executed in global configuration mode and requires privileged EXEC access (enable mode). The running configuration will show the NAT configuration, and the translations can be verified with `show ip nat translations`.
A common pitfall is forgetting to apply the `ip nat inside` and `ip nat outside` commands to the respective interfaces, which will cause NAT to not function. Also, the ACL must be properly defined; a common mistake is using a standard ACL that does not include the correct source addresses or using an extended ACL unnecessarily. The command is supported in IOS 12.x and later, including IOS-XE, with consistent syntax.
It is not available in NX-OS or IOS-XR, which use different NAT configuration models. Understanding this command is essential for CCNA and CCNP candidates as it appears frequently in exam scenarios and real-world network design.
ip nat inside source list [acl] interface [intf] overloadWhen to Use This Command
- Enabling internet access for multiple internal hosts using one public IP on a small office/home office router
- Conserving public IP addresses in an enterprise network by sharing a single public IP among many users
- Providing outbound internet connectivity for a branch office with limited public IP allocation
- Allowing internal servers to initiate outbound connections while hiding their private addresses
Parameters
| Parameter | Syntax | Description |
|---|---|---|
| acl | access-list-number or name | Specifies the access control list (standard or named) that defines the inside source addresses to be translated. Valid values are standard ACL numbers (1-99, 1300-1999) or a named ACL. Common mistake: using an extended ACL, which is not supported; only standard ACLs are allowed. |
| intf | interface-type interface-number | Specifies the interface whose IP address will be used as the translated source address. This is typically the outside interface facing the public network. Common mistake: specifying an interface that does not have an IP address configured or that is in a down state. |
Command Examples
Basic PAT with standard ACL
ip nat inside source list 1 interface GigabitEthernet0/0 overloadThis command enables NAT overload on the router. Traffic matching ACL 1 (typically permitting private subnets) will have its source IP translated to the IP of GigabitEthernet0/0. The 'overload' keyword enables port address translation, allowing multiple inside hosts to share the same public IP.
Verification with show ip nat translations
show ip nat translationsPro Inside global Inside local Outside local Outside global --- --------------- ----------------- ----------------- ----------------- ... 203.0.113.1:1024 192.168.1.10:1024 8.8.8.8:80 8.8.8.8:80 ... 203.0.113.1:1025 192.168.1.11:2048 8.8.8.8:80 8.8.8.8:80
The output shows active NAT translations. Inside global is the translated public IP and port. Inside local is the original private IP and port. Outside local and outside global are typically the same for outbound traffic. Each line represents a unique session.
Understanding the Output
The 'show ip nat translations' command displays active NAT entries. The 'Pro' column shows the protocol (TCP/UDP/ICMP). 'Inside global' is the translated public IP and port.
'Inside local' is the original private IP and port. 'Outside local' and 'Outside global' are the destination IP and port; for outbound traffic, they are identical. A healthy NAT table will have entries for active sessions.
If the table is empty, no traffic is being translated or the configuration is incorrect. Watch for high port usage on a single public IP, which may exhaust available ports (over 65,000 per IP).
Configuration Scenarios
Configure PAT for a Small Office with a Single Public IP
A small office has a single public IP address on its WAN interface (GigabitEthernet0/1) and multiple internal hosts in the 192.168.1.0/24 network that need internet access. The goal is to allow all inside hosts to share the public IP using PAT.
Topology
Inside Hosts---(Gi0/0) R1 (Gi0/1)---Internet
192.168.1.0/24 203.0.113.1/30Steps
- 1.Step 1: Enter global configuration mode: Router> enable, then Router# configure terminal
- 2.Step 2: Define the inside interface: Router(config)# interface GigabitEthernet0/0, then Router(config-if)# ip nat inside, then exit
- 3.Step 3: Define the outside interface: Router(config)# interface GigabitEthernet0/1, then Router(config-if)# ip nat outside, then exit
- 4.Step 4: Create a standard ACL to match inside private addresses: Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255
- 5.Step 5: Apply the PAT command: Router(config)# ip nat inside source list 1 interface GigabitEthernet0/1 overload
- 6.Step 6: Verify configuration: Router# show ip nat translations
! Full IOS config block interface GigabitEthernet0/0 ip address 192.168.1.1 255.255.255.0 ip nat inside ! interface GigabitEthernet0/1 ip address 203.0.113.1 255.255.255.252 ip nat outside ! access-list 1 permit 192.168.1.0 0.0.0.255 ! ip nat inside source list 1 interface GigabitEthernet0/1 overload
Verify: Use 'show ip nat translations' to see dynamic translations. Expected output shows inside local and global addresses with ports. Example: Pro Inside global Inside local Outside local icmp 203.0.113.1:1234 192.168.1.10:1234 8.8.8.8:0
Watch out: Forgetting to apply 'ip nat inside' and 'ip nat outside' on the interfaces is a common mistake. Without these, NAT will not translate traffic.
Configure PAT with a Named ACL and Multiple Inside Networks
A medium-sized company has two inside subnets (10.0.1.0/24 and 10.0.2.0/24) that need internet access through a single public IP on interface Serial0/0/0. The network engineer wants to use a named ACL for clarity.
Topology
10.0.1.0/24---(Gi0/0) R1 (Gi0/1)---10.0.2.0/24
R1 (Serial0/0/0)---Internet
198.51.100.1/30Steps
- 1.Step 1: Enter global configuration mode.
- 2.Step 2: Configure inside interfaces: interface GigabitEthernet0/0 and GigabitEthernet0/1 with 'ip nat inside'.
- 3.Step 3: Configure outside interface: interface Serial0/0/0 with 'ip nat outside'.
- 4.Step 4: Create a named standard ACL: Router(config)# ip access-list standard INSIDE_NETS, then Router(config-std-nacl)# permit 10.0.1.0 0.0.0.255, then Router(config-std-nacl)# permit 10.0.2.0 0.0.0.255, then exit.
- 5.Step 5: Apply PAT: Router(config)# ip nat inside source list INSIDE_NETS interface Serial0/0/0 overload
- 6.Step 6: Verify with 'show ip nat statistics' and 'show ip nat translations'.
! Full IOS config block interface GigabitEthernet0/0 ip address 10.0.1.1 255.255.255.0 ip nat inside ! interface GigabitEthernet0/1 ip address 10.0.2.1 255.255.255.0 ip nat inside ! interface Serial0/0/0 ip address 198.51.100.1 255.255.255.252 ip nat outside ! ip access-list standard INSIDE_NETS permit 10.0.1.0 0.0.0.255 permit 10.0.2.0 0.0.0.255 ! ip nat inside source list INSIDE_NETS interface Serial0/0/0 overload
Verify: Use 'show ip nat statistics' to see total translations and hits. Expected output includes 'Total translations: 0' initially, then increasing as traffic flows. 'show ip nat translations' shows dynamic entries.
Watch out: A common mistake is using an extended ACL instead of a standard ACL. The command only accepts standard ACLs. Also, ensure the ACL does not have a deny statement that blocks desired traffic.
Troubleshooting with This Command
When troubleshooting `ip nat inside source list [acl] interface [intf] overload`, the primary tool is `show ip nat translations`. Healthy output shows dynamic translations with inside local, inside global, and outside local addresses, along with protocol and port numbers. If no translations appear when traffic is flowing, check that the ACL matches the source addresses.
Use `show access-lists` to verify the ACL counters increment. Another key command is `show ip nat statistics`, which displays total active translations, hits, misses, and expiration timers. A high miss count indicates packets are not being translated, often due to missing `ip nat inside/outside` interface configuration.
Also verify that the outside interface has an IP address and is up/up. Use `debug ip nat` with caution in production to see real-time translation events; the output shows the translation process and can reveal if packets are being dropped due to ACL deny. Common symptoms include: no internet access for inside hosts, asymmetric routing issues, or translation table overflow.
If the translation table is full (default 512 entries), increase it with `ip nat translation max-entries`. Another issue is that the outside interface IP may change (e.g., DHCP), causing stale translations; use `ip nat inside source list [acl] interface [intf] overload` with a dynamic interface. Correlate with `show ip interface brief` to confirm interface status.
For PAT-specific issues, check that the router is not running out of port numbers; each translation uses a unique port, and the limit is 65535 per IP. Use `show ip nat translations verbose` to see port usage. If inside hosts can ping but not browse, check for ACLs on the outside interface blocking return traffic.
Finally, ensure that the inside hosts have a default route pointing to the router's inside interface.
CCNA Exam Tips
Remember that 'overload' is required for PAT; without it, only one-to-one translation occurs and may fail if multiple hosts try to access the same destination.
The ACL used in the command should permit only the inside networks that need translation; a 'permit any' ACL is common but less secure.
CCNA may test the difference between static NAT, dynamic NAT, and PAT; PAT is the only one that uses port numbers to multiplex.
You must configure 'ip nat inside' on the inside interface and 'ip nat outside' on the outside interface for the command to work.
Common Mistakes
Forgetting to apply 'ip nat inside' and 'ip nat outside' on the respective interfaces, causing no translation to occur.
Using an extended ACL instead of a standard ACL; the command expects a standard ACL number or name.
Omitting the 'overload' keyword, resulting in one-to-one dynamic NAT that fails when more inside hosts than available public IPs try to communicate.
ip nat inside source list [acl] interface [intf] overload vs ip nat inside source static [local-ip] [global-ip]
Both commands configure inside source NAT, but they serve fundamentally different purposes: dynamic PAT for many-to-one translation versus static one-to-one mapping. This distinction often causes confusion when deciding which to use for internet access vs. inbound reachability.
| Aspect | ip nat inside source list [acl] interface [intf] overload | ip nat inside source static [local-ip] [global-ip] |
|---|---|---|
| Address Translation | Many-to-one (PAT) using interface IP | One-to-one fixed mapping |
| Persistence of Mapping | Dynamic; changes with session | Static; permanent until removed |
| ACL Requirement | Requires extended ACL to define inside hosts | No ACL; source IPs defined directly |
| Use Case | Allow multiple internal hosts to share public IP for outbound access | Expose internal server to external network with fixed public IP |
| Scalability | Scalable to many hosts via PAT | Limited; each static entry consumes a public IP |
| External Reachability | No inbound access unless port forwarding is added | Direct inbound access to mapped host |
Use ip nat inside source list [acl] interface [intf] overload when you need to provide internet access to multiple internal hosts using a single public IP address.
Use ip nat inside source static [local-ip] [global-ip] when you need to make an internal server permanently reachable from the internet with a consistent public IP address.
Platform Notes
In IOS-XE, the command syntax is identical to classic IOS. However, IOS-XE supports virtual routing and forwarding (VRF) instances, and NAT can be configured per VRF using `ip nat inside source list [acl] interface [intf] overload vrf [vrf-name]`. The output of `show ip nat translations` may include VRF information.
In NX-OS (Cisco Nexus switches), NAT configuration is fundamentally different. NX-OS uses `ip nat` under interface configuration mode and does not support the `ip nat inside source list` command. Instead, you configure NAT rules using `ip nat source list [acl] interface [intf] overload` in global config, but the interface must be configured with `ip nat` (no inside/outside distinction).
For example: `ip nat source list 1 interface ethernet1/1 overload`. The verification commands are `show ip nat translations` and `show ip nat statistics`. On Cisco ASA firewalls, the equivalent is `nat (inside,outside) source dynamic [acl] interface` for PAT.
The ASA uses a different paradigm with security levels and interface pairs. In IOS-XR, NAT is not supported in the same way; IOS-XR typically uses CGN (Carrier-Grade NAT) or relies on external devices. For IOS versions, the command has been consistent from 12.x through 16.x.
In older 12.x versions, the `overload` keyword was optional but recommended; in modern IOS, it is required for PAT. There are no significant syntax differences between versions. Always ensure the ACL is standard; extended ACLs are not accepted.
The command is not available in IOS-XR or IOS-XE SD-WAN (Viptela) platforms, which use different NAT mechanisms.
Related Commands
clear ip nat translation *
Clears all dynamic NAT translations from the translation table, forcing the router to rebuild translations for new traffic.
ip nat inside source list [acl] interface [intf] overload
Configures dynamic NAT overload (PAT) to translate multiple inside private IP addresses to a single public IP address using the interface's IP, based on an access list.
ip nat inside source static [local-ip] [global-ip]
Configures static NAT to map a single inside local IP address to a single inside global IP address, allowing internal hosts to be reachable from external networks.
show ip nat translations
Displays the current active Network Address Translation (NAT) translations on the router, used to verify NAT operations and troubleshoot connectivity issues.
Practice for the CCNA 200-301
Test your knowledge with practice questions covering all CCNA 200-301 exam domains.
Practice CCNA 200-301 Questions