NAT设置入门篇
- 来源:微型计算机 smarty:if $article.tag?>
- 关键字:NAT,设置 smarty:/if?>
- 发布时间:2010-09-21 16:33
一方面,随着网络的普及,越来越多的企业开始重新审视在网络技术方面的投入。另一方面,很多大学生开始在学校中积累网络方面的知识,立志于毕业后投身于网络相关行业。但有一个现实是:大学生在学习时总感觉没有头绪,常常是全而不精,精而不通,碰到实际问题时仅停留在表象分析上。要知道新技术不一定是企业中应用的技术,读一百个案例不如亲自参与一项工程。只有当你了解了企业是如何将书本上的抽象技术应用到实际中时,才会将网络技术和企业实际应用联系起来,从而可以更有针对性地进一步研读相关资料。
今天笔者以一个企业的网络项目为例,带领大家进入企业网络管理的世界。在这个项目里,有绝大部分读者都耳熟能详的网络技术名词—NAT(网络地址转换)。那么NAT究竟有什么作用,在企业级应用中能实现怎样的功能呢?
读者旁白:NAT啊?这个我知道,我单位现在用的是一个路由器接ADSL,公司的十几名员工都是通过路由器上网的,员工配置的都是192.168.x.x网段的内网IP地址,到宽带路由器上都会转成上外网的IP地址,这个转换的过程就是NAT,而且大部分的网吧都是利用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设置。
于是企业A的信息技术人员在本端路由器的S2/0口上进行了如下设置(CLI命令行以H3C的设备为例,仅供参考),interface Serial2/0link-protocol pppfe1 unframedip address 10.1.1.1 255.255.255.252nat outbound 2000在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上配置为例,防火墙同理)。
interface Ethernet0/0description to coreswitchip address 9.9.9.9 255.255.255.252nat outbound static这里添加了一条方向向外(也即指向本地内网)的静态NAT,相应的NAT语句为:
nat static inside ip 196.1.1.10 global ip 9.9.20.5这其中196.1.1.10是企业B提供的NAT后地址,9.9.20.5为企业A的内网IP地址规划段中的一个地址,与之相对应的是要在核心交换机上将静态路由也作针对性调整。这里要提醒大家注意一点,这里的global ip地址不要属于在核心交换上已经规划的VLAN。配置调整完以后,测试整个网络的数据,一切正常。
笔记本电脑访问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的负载均衡技术主要采用的是轮询算法(round robin),但DNS负载技术有一个问题较难解决:就是客户端会在本地缓冲DNS IP地址解析,从而使它后续的申请都会到达同一个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服务器合法Internet IP地址的报文转换成这三台服务器的内部本地地址。
假定该路由器外口地址为219.142.5.5,那么每个访问219.142.5.5的TCP连接都会按照规则分发到每一台后端真实WEB服务器上,从而真正实现负载平衡。下面以图5为例简单介绍一下路由器NAT负载均衡的配置过程如下:第一步:在路由器接口上进行NAT定义。
第二步:定义一个标准访问列表
(standard access list),用来标识要转换的合法IP地址。ip access-list 1 permit 219.142.5.5
第三步:定义NAT地址池来标识内部WEB服务器的IP地址,后面的参数要使用rotary,表明我们要使用轮循(RoundRobin)的方式从NAT地址池中取出相应IP地址来转换合法IP报文。ip nat pool websvr 2.2.2.1 2.2.2.3 netmask255.255.255.248 type rotary
第四步:把目标地址为访问表中IP的报文转换成地址池中定义的IP地址。ip nat inside destination list 1 pool websvr到此为止,NAT负载均衡的设置结束,是不是很简单?
后记
这里只是对企业中的NAT应用作了很基础的介绍,真正深入的应用和技术研究远不止于此,双层NAT,P2P和NAT检测,这些都是深入讨论的焦点。本文中的NAT应用也主要是建立在传统TCP基础之上,对于UDP和NAT的技术应用并没有说明,因为那会涉及如P2P之类的NAT穿透和检测技术。现在的企业一般都会禁止P2P,所以除非必要,UDP也是作严格控制的,相比TCP而言应用面要小得多,这里就不作分析了。对于刚刚步入企业的网管人员来说,合理的运用NAT技术一定会让你的全局网络规划可控性更高,千万不要小看了它!
……
今天笔者以一个企业的网络项目为例,带领大家进入企业网络管理的世界。在这个项目里,有绝大部分读者都耳熟能详的网络技术名词—NAT(网络地址转换)。那么NAT究竟有什么作用,在企业级应用中能实现怎样的功能呢?
读者旁白:NAT啊?这个我知道,我单位现在用的是一个路由器接ADSL,公司的十几名员工都是通过路由器上网的,员工配置的都是192.168.x.x网段的内网IP地址,到宽带路由器上都会转成上外网的IP地址,这个转换的过程就是NAT,而且大部分的网吧都是利用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设置。
于是企业A的信息技术人员在本端路由器的S2/0口上进行了如下设置(CLI命令行以H3C的设备为例,仅供参考),interface Serial2/0link-protocol pppfe1 unframedip address 10.1.1.1 255.255.255.252nat outbound 2000在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上配置为例,防火墙同理)。
interface Ethernet0/0description to coreswitchip address 9.9.9.9 255.255.255.252nat outbound static这里添加了一条方向向外(也即指向本地内网)的静态NAT,相应的NAT语句为:
nat static inside ip 196.1.1.10 global ip 9.9.20.5这其中196.1.1.10是企业B提供的NAT后地址,9.9.20.5为企业A的内网IP地址规划段中的一个地址,与之相对应的是要在核心交换机上将静态路由也作针对性调整。这里要提醒大家注意一点,这里的global ip地址不要属于在核心交换上已经规划的VLAN。配置调整完以后,测试整个网络的数据,一切正常。
笔记本电脑访问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的负载均衡技术主要采用的是轮询算法(round robin),但DNS负载技术有一个问题较难解决:就是客户端会在本地缓冲DNS IP地址解析,从而使它后续的申请都会到达同一个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服务器合法Internet IP地址的报文转换成这三台服务器的内部本地地址。
假定该路由器外口地址为219.142.5.5,那么每个访问219.142.5.5的TCP连接都会按照规则分发到每一台后端真实WEB服务器上,从而真正实现负载平衡。下面以图5为例简单介绍一下路由器NAT负载均衡的配置过程如下:第一步:在路由器接口上进行NAT定义。
第二步:定义一个标准访问列表
(standard access list),用来标识要转换的合法IP地址。ip access-list 1 permit 219.142.5.5
第三步:定义NAT地址池来标识内部WEB服务器的IP地址,后面的参数要使用rotary,表明我们要使用轮循(RoundRobin)的方式从NAT地址池中取出相应IP地址来转换合法IP报文。ip nat pool websvr 2.2.2.1 2.2.2.3 netmask255.255.255.248 type rotary
第四步:把目标地址为访问表中IP的报文转换成地址池中定义的IP地址。ip nat inside destination list 1 pool websvr到此为止,NAT负载均衡的设置结束,是不是很简单?
后记
这里只是对企业中的NAT应用作了很基础的介绍,真正深入的应用和技术研究远不止于此,双层NAT,P2P和NAT检测,这些都是深入讨论的焦点。本文中的NAT应用也主要是建立在传统TCP基础之上,对于UDP和NAT的技术应用并没有说明,因为那会涉及如P2P之类的NAT穿透和检测技术。现在的企业一般都会禁止P2P,所以除非必要,UDP也是作严格控制的,相比TCP而言应用面要小得多,这里就不作分析了。对于刚刚步入企业的网管人员来说,合理的运用NAT技术一定会让你的全局网络规划可控性更高,千万不要小看了它!
关注读览天下微信,
100万篇深度好文,
等你来看……