NAT Not Translating (show ip nat translations Empty)
An empty show ip nat translations table almost always means the ip nat inside / ip nat outside interface roles are missing or reversed. NAT only translates traffic that crosses from an interface marked inside to one marked outside — without both labels, nothing is translated at all.
What you see
R1# show ip nat translations Pro Inside global Inside local Outside local Outside global R1# show ip nat statistics Total active translations: 0 (0 static, 0 dynamic; 0 extended)
Why it happens
Cisco NAT is direction-aware. The router needs to know which interface faces your private network (ip nat inside) and which faces the internet (ip nat outside). Translation happens only on the boundary between them.
If either label is missing, packets route normally but are never rewritten — so they leave with a private source address and the reply never comes back. A second common cause is an access-list that does not match the source subnet, or a missing overload keyword causing the single public address to be consumed by the first host.
How to confirm it
show ip nat translations show ip nat statistics show ip interface brief show run | include ip nat|access-list
show ip nat statistics names the inside and outside interface lists. If either is empty, that is your fault found.
The fix
! Label the interfaces — this is the step most often missed interface GigabitEthernet0/0 ip nat inside ! interface GigabitEthernet0/1 ip nat outside ! ! Match the traffic to translate access-list 1 permit 192.168.10.0 0.0.0.255 ! ! PAT — many hosts behind one public address ip nat inside source list 1 interface GigabitEthernet0/1 overload
The overload keyword is what makes this PAT rather than one-to-one NAT. Without it, one internal host claims the public address and everyone else fails.
How to stop it happening again
After configuring, generate traffic from a client and re-run show ip nat translations. An entry appearing is the only real proof it works.
Questions people ask
Why is my NAT table empty even though routing works?
Because routing and NAT are separate. Packets can route perfectly while never being translated — that is exactly what happens when the inside/outside labels are missing.
What does overload actually do?
It adds port numbers to the translation so many private hosts share one public IP. That is PAT, and it is what home and small-office internet connections use.
Related reading
Nat ExplainedNat Vs PatHow To Configure NatShow Ip Nat Translations Command
Reading the fix is not the same as doing it
Every fault on this page can be broken and repaired on real Cisco routers and switches in our Ahmedabad lab — which is how it stops being theory. Come and see the rack before you pay anything.