NAT有四种类型:
1.静态NAT(StaticNAT)。静态NAT设置起来最为简单,内部网络中的每个主机都被永久映射成外部网络中的某个合法地址,这类NAT在很多内部火墙规划中均有应用。
2.NAT池(PooledNAT,也称动态NAT),所谓动态NAT,即NAT后的地址不是固定的,是从一个IP池中动态分配取出的。
3.复用转换(OverloadingNAT,也称PAT)。PAT是大家接触最多的NAT应用了。在动态转换中,每个合法的IP地址只能在转换表中使用一次,在内部网络主机访问外部需求增多的情况下,合法地址列表中的IP地址很快就会不够用,这时可以利用上层协议标识,例如利用传输层TCP/UDP的端口号字段来协助建立NAT转换表项。
4.重叠转换(OverlappingNAT)。内部网使用的地址跟外部网重叠,这时需要把跟外部重叠的IP地址进行变换,这种转换一般应用在转换两端的私有网络地址相同的情况下。
今天笔者以一个企业的网络项目为例,带领大家进入企业网络管理的世界。在这个项目里,有绝大部分读者都耳熟能详的网络技术名词——NAT(网络地址转换)。那么NAT究竟有什么作用,在企业级应用中能实现怎样的功能呢?
图1:NAT服务的常见模式。
没错,这的确是NAT技术在企业中较为常见的应用之一,我们称其为PAT。在小型SOHO公司里,PAT的应用十分广泛,但NAT的应用绝不仅限于此,特别是在中大型企业的网络规划中,NAT的合理设计常常可以解决很多不必要的麻烦。
下面我们来接触一个在企业应用中具有代表性的案例。这个案例中NAT起到了十分关键的作用。
典型案例分析
企业A因业务需要和企业B拉设市区SDH专线,以便访问企业B后端的服务器C,而企业A的总公司D(企业A和总公司D通过SDH专线进行跨省网络连接,这也是目前绝大部分全国性企事业单位的网络连接方式)的后台服务器也要和服务器C进行数据校验确认,企业A和企业B按照各自的安全等级保护标准,都对SDH两端设置了比较严密的安全措施,均不想让对方了解自己公司内部的拓扑和IP地址。企业B提供了一个已经经过源地址NAT后的IP地址(196.1.1.10)供企业A远程调用,企业A和B网络连接如图
图2
看上去这样的需求似乎很简单,企业A的信息技术人员在本方路由器上进行路由的设定,将去往196.1.1.10的数据包甩给下一跳网关10.1.1.2,总公司端也设置了到196.1.1.10的路由条目以供数据校验,测试数据一切正常。
在正常使用了一段时间以后,企业B的信息技术人员发现还有其它合作企业采用了和企业A一样的内网IP段,这样他们在写回程路由时就无法指定下一条。比如企业E也有和企业A一样的内网架构和IP地址规划,而且也是采用同样的网络接口配置和企业B互联,就会出现这种情况:有一个源地址同为9.9.12.10的数据包分别从企业A和企业E送往服务器C,而企业B在往回送数据包的时候不知道该把这个包回给企业A还是E。为了解决这个问题,企业B给与其有SDH专线业务的单位A和E(也许更多)发了一个通知,声明他们只会把数据包扔给SDH专线互联的另一端,即接口地址(以企业A为例,即是图3中的10.1.1.1),要求对方自行进行NAT设置。
图3注:为了讲解方便,拓扑中略去了一些网络设备(如防火墙,IDS,交换机等)。
于是企业A的信息技术人员在本端路由器的S2/0口上进行了如下设置(CLI命令行以H3C的设备为例,仅供参考),
interfaceSerial2/0
link-protocolppp
fe1unframed
ipaddress10.1.1.1255.255.255.252
natoutbound2000
在S2/0接口上设定了一个ACL列表,ACL列表的号为2000,要将这个ACL列表中的所有地址进行NAT转换(ACL列表的配置略去,ACL列表中即为所有需要访问对方的源IP地址),应用在此接口的意思就是NAT后的源地址为此接口地址,这样就符合企业B提出的要求了。
稳定运行了一段时间以后,企业A又接到总公司信息技术部领导的电话,说是最近要调整全网的IP地址,对那些不规范的地址进行整理。询问原因,得知是因为其它省公司和外联单位也拉有多条专线,其中有一部分专线上的应用也需要总公司后台服务器去访问对端路由器后的服务器(即情况与A公司相同),而各外联单位的服务器对外映射地址存在冲突现象,导致总公司端在写广域网段回程路由时出现问题。考虑到全网网络架构的可控性,总公司提出让各分公司整理内部需要总公司参与访问的路由,将相关地址全部NAT为本地内网地址,这样总公司只需要访问到已经规划好的各省分公司内网地址段即可,不会存在地址冲突问题,而且整个网络也变得更加可控。
企业A按照总公司的指示,进行了针对性调整。调整的思路是将企业B提供的NAT后地址196.1.1.10在本地防火墙(或者是路由器的内网口E0/0上)上进行一次目标地址转换。即将原本访问196.1.1.10的需求变成访问本地内网地址的需求,同时在内网的核心交换机上添加一条路由,具体操作如下(以在路由器内网口E0/0上配置为例,防火墙同理)。
interfaceEthernet0/0
descriptiontocoreswitch
ipaddress9.9.9.9255.255.255.252
natoutboundstatic
这里添加了一条方向向外(也即指向本地内网)的静态NAT,相应的NAT语句为:
natstaticinsideip196.1.1.10globalip9.9.20.5
这其中196.1.1.10是企业B提供的NAT后地址,9.9.20.5为企业A的内网IP地址规划段中的一个地址,与之相对应的是要在核心交换机上将静态路由也作针对性调整。这里要提醒大家注意一点,这里的globalip地址不要属于在核心交换上已经规划的VLAN。配置调整完以后,测试整个网络的数据,一切正常。
最新的数据包流程变为,企业A内网中的笔记本电脑访问9.9.20.5,在到达本端SDH路由器内网口时进行NAT转换将目标地址转换为196.1.1.10,然后在S2/0口上又进行了一次源地址的NAT转换,将客户机本身的源地址转换成S2/0的接口地址(也即满足企业B的网络要求)——10.1.1.1。到此为止,总公司和企业B的需求都得到了实现。
由此案例可以看出,如果不采用合理的NAT技术应用,总公司和企业B的需求是很难得到同时满足的。这其实就是大家在书本上常常看到的双向NAT转换的一个应用实例。在企业中,这种纯静态的NAT应用比例要远远大于动态NAT(有一个IP池供地址调用)和PAT。
负载平衡是NAT技术的另一要点
下面再给大家简要介绍一下NAT技术的另外一项应用——负载均衡。如果不考虑在数据中心应用最多的F5类专用负载均衡设备,大家可能对于负载均衡的了解更多是集中在DNS技术上。DNS的负载均衡技术主要采用的是轮询算法(roundrobin),但DNS负载技术有一个问题较难解决:就是客户端会在本地缓冲DNSIP地址解析,从而使它后续的申请都会到达同一个IP地址,这本身是一项加速技术,但在这里实际上却削弱了DNS负载均衡技术的作用。而NAT负载均衡技术则解决了这个问题,路由器或其它NAT设备把需要负载平衡的多个IP地址翻译成一个公用的IP地址。
(如图5所示)
假设我们有一台配备一个串行接口和一个Ethernet接口的路由器,Ethernet口连接到内部网络,内部网络上有三台运行同样WEB服务的WEB服务器,IP地址分别为2.2.2.1、2.2.2.2和2.2.2.3,而2.2.2.10则是路由器内口地址(Ethernet接口),路由器外口(串行接口)地址是互联网IP地址,也即需要进行NAT负载均衡地址,为了处理好来自Internet上大量的WEB连接请求,因此需要在此路由器上进行NAT负载均衡配置,把发送到WEB服务器合法InternetIP地址的报文转换成这三台服务器的内部本地地址。假定该路由器外口地址为219.142.5.5,那么每个访问219.142.5.5的TCP连接都会按照规则分发到每一台后端真实WEB服务器上,从而真正实现负载平衡。
下面以图5为例简单介绍一下路由器NAT负载均衡的配置过程如下:
第一步:在路由器接口上进行NAT定义。
interfaceEthernet0/0
ipaddress2.2.2.10255.255.255.240
ipnatinside
!
interfaceSerial0/0
ipaddress219.142.5.5255.255.255.248
ipnatoutside
第二步:定义一个标准访问列表(standardaccesslist),用来标识要转换的合法IP地址。
ipaccess-list1permit219.142.5.5
第三步:定义NAT地址池来标识内部WEB服务器的IP地址,后面的参数要使用rotary,表明我们要使用轮循(RoundRobin)的方式从NAT地址池中取出相应IP地址来转换合法IP报文。
ipnatpoolwebsvr2.2.2.12.2.2.3netmask255.255.255.248typerotary
第四步:把目标地址为访问表中IP的报文转换成地址池中定义的IP地址。
ipnatinsidedestinationlist1poolwebsvr
到此为止,NAT负载均衡的设置结束,是不是很简单
【编辑推荐】