I have made this mistake before, and here is the fix.
When we use the ip nat enable command, we also need to slightly modify the nat statement in global config as well (to remove the word "inside" in global config).
In my example, I am using the static, but the dynamic would be similar.
R2(config)#no ip nat inside source static 10.0.0.1 interface FastEthernet0/1
R2(config)#ip nat source static 10.0.0.1 interface fastEthernet 0/1
I have made the other mistake before. I have used the normal ip nat inside/outside interface commands and accidentally left the "inside" out of the "ip nat inside source statix x.x.x.x y.y.y.y" it does not work as expected. That is a little hard to spot. There are a few things (like stateful nat) that require the older method (using ip nat inside and ip nat outside, along with the related ip nat inside source static list x x.x.x command).
Here is the full config for R2:
ip nat source static 10.0.0.1 22.214.171.124
int fa 0/0
ip nat enable
int fa 0/1
ip nat enable
Trying 126.96.36.199 ... Open
Line User Host(s) Idle Location
0 con 0 idle 00:00:41
* 98 vty 0 idle 00:00:00 188.8.131.52
(Note: the source address is the post NAT address of 184.108.40.206)
(Note: the normal command of show ip nat translations, may not show any translations, but the command show ip nat nvi translations does. )
R2#show ip nat nvi translations
Pro Source global Source local Destin local Destin global
tcp 220.127.116.11:47045 10.0.0.1:47045 18.104.22.168:23 22.214.171.124:23
--- 126.96.36.199 10.0.0.1 --- ---