Network Address Translation: Sharing Public IP Addresses

The limited supply of public IPv4 addresses made it impossible for every device worldwide to have its own globally unique address, and Network Address Translation solved this by letting many private devices share a small number of public addresses. This article explains the three main NAT types, walks through configuring static NAT, dynamic NAT, and PAT on a Cisco router, and covers the essential commands for verifying active translations.

NAT ConfigurationPATStatic NAT

~5 min read · Updated Sep 9, 2026

Why NAT Became Necessary

IPv4 provides roughly 4.3 billion possible addresses, a number that seemed enormous decades ago but proved far too small once the internet grew to billions of connected devices. The private address ranges discussed earlier in this series regarding IPv4 addressing solve part of this problem by allowing internal networks to reuse the same address ranges, but a device using a private address cannot communicate directly with the public internet, since private addresses are not globally routable. NAT (Network Address Translation) solves this final piece by translating private addresses into public ones as traffic crosses the boundary between an internal network and the internet.

Static NAT: A Fixed One-to-One Mapping

Static NAT creates a permanent, unchanging mapping between one specific private address and one specific public address — commonly used for internal servers that need to be consistently reachable from the internet, such as a web server or mail server.

Router(config)# ip nat inside source static 192.168.1.10 203.0.113.10

Router(config)# interface gigabitethernet 0/1
Router(config-if)# ip nat inside
Router(config-if)# exit

Router(config)# interface gigabitethernet 0/0
Router(config-if)# ip nat outside

Every NAT configuration requires designating which interfaces are inside (facing the private network) and which are outside (facing the public internet) — without this designation, the router has no way of knowing which direction translation should apply to.

Dynamic NAT: Mapping from a Pool of Addresses

Dynamic NAT maps private addresses to public addresses drawn from a defined pool, assigned on a first-come, first-served basis rather than a fixed one-to-one relationship.

Router(config)# ip nat pool PUBLIC-POOL 203.0.113.20 203.0.113.30 netmask 255.255.255.0

Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255

Router(config)# ip nat inside source list 1 pool PUBLIC-POOL

-- The access list identifies which internal addresses
-- are eligible for translation, discussed earlier in
-- this series regarding standard ACLs

Dynamic NAT still requires one public address per simultaneously active internal device, since it is still fundamentally a one-to-one mapping — just with the specific pairing determined dynamically rather than statically configured for each device. This makes it a middle ground: more scalable than static NAT for many devices, but still limited by the size of the public address pool.

PAT: The Solution That Actually Scales

PAT (Port Address Translation), also called NAT Overload, solves the scaling limitation of both static and dynamic NAT by allowing many internal devices to share a single public IP address simultaneously, distinguishing between them using different source port numbers.

Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255

Router(config)# ip nat inside source list 1 interface gigabitethernet 0/0 overload

-- "overload" is the keyword that enables PAT,
-- using the outside interface's own IP address
-- as the shared public address for all
-- translated internal devices

This is by far the most common NAT configuration in real-world networks, including nearly every home router, since it allows an entire network of potentially hundreds of devices to share the single public IP address typically assigned by an internet service provider.

How PAT distinguishes between internal devices:

Internal device A: 192.168.1.11:52001 → 203.0.113.5:40001
Internal device B: 192.168.1.12:52001 → 203.0.113.5:40002

Both devices use the same private port number
locally, but the router assigns each a different
translated port on the shared public address,
allowing return traffic to be correctly routed
back to the originating internal device

Verifying Active NAT Translations

Router# show ip nat translations

Pro  Inside global      Inside local       Outside local      Outside global
tcp  203.0.113.5:40001  192.168.1.11:52001 93.184.216.34:443  93.184.216.34:443
tcp  203.0.113.5:40002  192.168.1.12:52001 93.184.216.34:443  93.184.216.34:443

Router# show ip nat statistics
Total active translations: 2 (0 static, 2 dynamic; 2 extended)

The four-column output of show ip nat translations reflects NAT's own terminology: Inside Local is the original private address, Inside Global is the translated public address, and the outside columns show the corresponding addresses for the external destination — this table is the primary tool for confirming exactly which internal device a specific piece of translated traffic actually belongs to.

A Common Troubleshooting Pattern: Missing Inside/Outside Designation

-- Symptom: NAT rules are configured correctly,
-- but translation simply never happens

-- Common cause: an interface was never marked
-- with "ip nat inside" or "ip nat outside"

Router# show ip interface gigabitethernet 0/1 | include NAT
  NAT: not enabled  ← this interface is missing its designation

Forgetting to apply ip nat inside or ip nat outside to the relevant interfaces is one of the most common NAT misconfigurations — the translation rules themselves can be perfectly correct, yet nothing happens because the router does not know which interfaces represent the private and public sides of the translation boundary.

Why NAT Remains Relevant Despite IPv6

Even as IPv6 adoption, covered later in this series, gradually reduces the pressure that originally motivated NAT's creation, NAT remains extremely common in IPv4 networks and continues to serve a secondary purpose beyond address conservation: since internal private addresses are never directly exposed to the internet, NAT provides a degree of security-through-obscurity, making internal network structure invisible to external observers. Understanding all three NAT types, and being able to quickly identify a missing inside/outside designation as a common cause of translation failure, remains an essential practical skill in nearly every real-world network deployment.

Written & researched by Dr. Shahin Siami

Related Articles

OSPF Fundamentals: Link-State Routing Explained

OSPF is the most widely deployed interior routing protocol in enterprise networks, using a fundamentally different approach than simply exchanging routing tables between neighbors. This article explains what a link-state protocol actually is, how OSPF routers become neighbors and build a shared topology database, how the cost metric determines the best path, and the essential commands for configuring and verifying single-area OSPF.

Continue

Access Control Lists: Filtering Traffic on Cisco Routers

Access Control Lists let a router or switch selectively permit or deny traffic based on source, destination, and protocol information, forming the foundation of basic network security and traffic filtering. This article explains how ACLs process traffic sequentially, covers the difference between standard and extended ACLs, walks through wildcard mask calculation, and explains critical placement rules that determine whether an ACL works as intended.

Continue

DHCP and DNS: Automatic Addressing and Name Resolution

Manually configuring an IP address on every device does not scale, and remembering numeric IP addresses for every service is impractical, which is why DHCP and DNS exist as essential supporting services in nearly every network. This article explains how DHCP automatically assigns IP addressing information, covers configuring a Cisco device as a DHCP server or relay agent, and explains how DNS resolves human-readable names into IP addresses.

Continue

Inter-VLAN Routing: Connecting VLANs with Router-on-a-Stick and SVIs

VLANs isolate broadcast domains from each other at Layer 2, but real applications still need devices in different VLANs to communicate, which requires routing between them at Layer 3. This article explains the legacy router-on-a-stick approach using subinterfaces, the modern and more scalable Switch Virtual Interface approach on Layer 3 switches, and the essential configuration and verification commands for both.

Continue

EtherChannel: Combining Multiple Links Into One Logical Connection

Instead of choosing between redundancy and bandwidth, EtherChannel combines multiple physical links into a single logical connection that provides both simultaneously, without Spanning Tree blocking any of the links. This article explains how EtherChannel bundles ports together, compares the PAgP and LACP negotiation protocols used to form a bundle safely, and covers the essential configuration and verification commands.

Continue

Spanning Tree Protocol: Preventing Loops in Switched Networks

Redundant physical links between switches provide fault tolerance but create Layer 2 loops that can bring down an entire network within seconds. This article explains why loops are catastrophic in switched networks, how Spanning Tree Protocol elects a root bridge and blocks redundant paths to prevent them, and the essential commands for verifying STP operation on a Cisco switch.

Continue