[c-nsp] IOS 12.4 and NAT
Joe Maimon
jmaimon at ttec.com
Thu May 5 06:10:10 EDT 2005
Gert Doering wrote:
> Hi,
>
> On Thu, May 05, 2005 at 10:34:27AM +0200, Carsten Bormann wrote:
>
>>>what's "NVI enhancement"? Any pointers?
>>
>>While the US sleeps:
>>
>>http://www.cisco.com/univercd/cc/td/doc/product/software/ios123/
>>123newft/123t/123t_14/gtnatvi.htm
>
>
> Ah, thanks. So finally Cisco has fallen to market pressure "the way
> you do it is much too complicated, we need a simple on/off switch"
> (which computer magazines really love to do - "Cisco: bad marks, too
> complicated, no wizard" - quite unfortunately so).
>
> I'm sort of sorry to see that happen. The old way to do it is
> incredibly powerful, and after getting used to it, certainly more than
> appropriate - and having yet another way that basically does the same
> thing in a different way means "more code, more flash+ram, more bugs"
> (as people seem to be observing).
>
> The benefits listed ("A NAT table is maintained per interface for better
> performance and scalability.") isn't something I buy - that's an internal
> optimization, not something that needs to show up in the config mode.
>
> gert
>
The old way was basically "you have to cross the street from outside to
inside so that the nat car can try to hit you"
The old way has lots of problems, namely being that you now have to
declare every interface in your nat router as either inside or outside.
Undeclared interfaces in my experience exhibited unpredictable nat
behavior for flows. Usualy they did NOT get natting, but often enough it
did. Also proper design demands you do not leak private space to your
customers who dont expect it, so you have to declare all of them as
outside as well.
And then you are faced with issues when you want a nat to apply to
traffic that does not cross the nat "street" from outside to inside, but
instead merely walks along the side of the street, either the outside or
the inside one. Nat-on-a-stick anyone?
The old behavior while allowing all kinds of subtle complexity also has
a tendency of requiring it.
NVI while potentialy something that fits the bill for stuff I have been
trying to do for a while (havent labbed it yet), doesnt seem to let you
attach a specific nat statement to a specific interface (let alone in
only one direction on the interface).
You are apparently supposed to limit the scope of the nat using
route-map match statements and/or VRF's. Which is fine enough for my
purposes.
But here is a question:
The ACL example is pretty skimpy (as is usual in CCO documentation). How
about a real one usuable for the real world that demonstrates how IOS
evaluates it for ingress AND for egress traffic (note the assumption of
evaluation for egress traffic instead of just a table check of existing
sessions)?
Something that would be used for the old way:
int fa0
ip nat outside
ip address 1.1.1.1 255.255.255.0
int fa1
ip nat inside
ip address 10.10.10.0 255.255.255.0
ip nat inside source route-map inside-nat-fa0 fa0 overload
ip access-list extended inside-nat-fa0
deny ip any 10.0.0.0 0.255.255.255
deny ip any 172.16.0.0 0.15.255.255
deny ip any 192.168.0.0 0.0.255.255
permit ip 10.0.0.0 0.255.255.255
permit ip 172.16.0.0 0.15.255.255
permit ip 192.168.0.0 0.0.255.255
deny ip any any
route-map inside-nat-fa0 permit 10
match interface fa0
match ip address inside-nat-fa0
route-map inside-nat-fa0 deny 100
Which would allow all rfc1918 inside space addressed to non-rfc1918
outside space to be natted but would not nat
a) sourced from rfc1918 space addressed to "outside" rfc1918
b) sourced from non-rfc1918 space addressed to anything.
How does this translate into NVI ?
And one more thing. Where is the "Virtual" part of this? I am missing
something here.
Joe
More information about the cisco-nsp
mailing list