Cisco nat inside接口,outside接口,nvi接口的区别_第1张图片
 
r2上,e0/0为outside,e0/1为inside,使用ip nat outside sour static 1.1.1.1 202.100.1.5将outside的1.1.1.1 转换成inside的202.100.1.5,但由于数据包先经过了outside,outside接口是pre-routing性质,因此会先做nat后路由,去包没什么问题,回包由于先路由,以转换后的全局目标地址寻找回来的出接口,这与真实的内网目标地址不是同一个出接口,因此nat前使用回包全局目地地址的路由是不正确的,因此ping不通。
 
可以做nat时使用add-route解决,关键字是将转换前的地址路由条目加入发生转换的 路由器的路由表中。因此,在outside上做源地址转换会出现回包没有路由的情况,因此尽量避免outside上做源地址转换,但如果nat路由器有源地址的条目,就不会发生问题。
 
而inside是post-routing性质,先经历inside接口的数据包,会先做路由后转换,因此做inside的源地址转换,去包会先路由后转换,回包先经过outside接口,因此的目的地址会先转换成内部地址,这时基于转换后回包的目的地址的路由就是正确的。Cisco的机制是将routing和nat分开处理。
 
Cisco为了旁路掉inside和outside接口的区别,因此使用了nvi接口,来代替前两者,也就是说,所有启用nat的接口都会将流经其的nat流量重定向给nvi,nvi只有一个动作,就是nat转换,因此此例r2两侧都是ip nat enable接口的话,去包和回包都在路由之前就转换完毕,因此路由器觉察不到数据包经历过转换,因此r2 上debug ip nat看不到转换信息。。但使用inside和outside时就会看到转换信息,因为这时的转换对于路由器是不透明的