NAT是解决公网地址不够用大家最熟悉的网络技术之一,而NAT最依赖的是NAT translation表项,至于NAT的概念和背景这里不再解释,网络上有很多关于此的类似介绍,自己搜索即可。下面主要是针对大家对NAT的一些误解进行分析。
误解一:inside和outside
大家常规的理解可能认为inside就是指私网;outside就是公网。
正解一:
inside和outside是在接口上用户自己定义的,只不过我们习惯于在路由器的内部接口定义inside;外部接口定义outside。
误解二:source和destination
大家在配置IP NAT的时候可能会用如下命令:ip nat inside source static/route-map/acl interface/pool。有些人对命令中的source的理解可能表示要转换哪些源,源可以是static地址,挂ACL或者route-map的匹配地址。destination有些人可能认为是source要转换成的地址,可以是pool或者interface(overload)。
正解二:
其实NAT中的source和destination是用来表示要进行转换的IP地址的源地址还是目的地址的。source表示对NAT转换的IP数据包的源地址进行转换;同理,destination表示对NAT转换的IP数据包的目的地址进行转换。
误解三:static和dynamic
有些人认为静态转换就是一对一的转换;动态转换就是一对多的转换。
正解三:
根据NAT表项的建立原因我们把NAT分为静态和动态。static在内存中的转换表项一直存在,不管有没有数据包经过;动态表示只有数据包经过的时候才会在内存上建立表项。可以简单归纳为:动态NAT解决的是从内到外发起的访问,之后在内存中形成表项,这样回包就没问题了;静态NAT解决的是从外到内的访问。根据IP地址的对应关系可以分为一对一的转换和一对多的转换。结合静态和动态就有下面三种组合:
- 动态一对一:从内部发起的流量,一个内部IP地址都有一个对应的公网IP地址表项对其进行替换转换。(不现实,因为NAT本身就是解决公网IP地址不够用的问题而设计的,实际应用场景没有那么多的公网IP地址可以提供转换)
- 动态一对多:也就是我们所说的动态PAT,用端口号来解决一个公网地址无法和内网多个私有地址一一对应的问题。表示从内部发起的流量,每个内部IP地址都用同一个公网IP地址+端口号对其进行一一关联对应。(目前解决内网上网问题的最常用手段)
- 静态一对一:从外到内发起的流量,一个公网IP对应一个内部设备。
- 静态一对多:无法实现,对于NAT设备来说,只有一个公网IP不能使用多个同样的端口号和气内网的设备对应。
误解四:搞不清inside local/inside global和outside local/outside global之间的关系
正解四:
不用记得那么复杂,只要了解转换一定是发生在local和global之间即可,此外,local和global的区别在于,local是一个在本地可路由的地址;global是一个在internet可路由的地址。同时记住,转换一定发生在同一边,也就是要么就在inside转换;要么就在outside进行转换,也就是说不可能出现inside local和outside global互转的情况。
注意:
动态转换项在内存上的表现只有数据包进行了NAT转换时才会出现;而静态转换项,只要一旦配置就一直停留在内存里,尽管使用命令clear ip nat translation *。