NAT(网络地址转换)是用来在网络间进行IP地址转换的一种技术,可使多个私网(或称为“内部网络”)用户通过共享一个或多个公网(或其他私网,也称“外部网络”)IP地址访问Internet或其他私网,也可用于外部网络用户访问内部网络服务器的情形。

NAT基础

NAT(Network Address Translation,网络地址转换)技术。NAT可以将来自一个网络的IP数据报报头中的IP地址(可以是源IP地址或目的IP地址,或两者同时)转换为另一个网络的IP地址,主要用于实现私网用户和公网用户之间的互访。

一、NAT主要特性

在AR G3路由器中把所支持的NAT特性分为三大类:动态NAT、静态NAT和NAT Server(NAT服务器),实际应用中,分别对应配置动态地址转换、配置静态地址转换和配置内部服务器。

1、动态NAT

私网IP与公网IP之间的地址转换不是固定的。把需要访问公网的私网IP地址动态地与公网IP地址建立临时映射关系,将报文中的私网IP地址进行对应的临时替换,待返回报文到达设备时再根据映射表“反向”把公网IP地址临时替换回对应的私网IP地址,转发给主机,实现内网用户和外网的通信。

动态NAT的实现方式有Basic NAT和NAPT两种(Easy IP是NAPT的一种特例)。Basic NAT是一种“一对一”的动态地址转换;NAPT则通过引入“端口”变量,是一种“多对一”的动态地址转换(映射的公网端口不同)。目前使用最多的是NAPT方式。

2、静态NAT

动态NAT在地址转换时做不到在不同时间固定地使用同一个公网IP地址、端口号替换同一个私网IP、端口号,因为具体用哪个公网IP、端口纯粹是从地址池和端口表中随机选取空闲的地址和端口。

静态NAT建立固定的一对一的公网IP地址和私网IP地址的映射。保证重要主机使用固定的公网IP地址访问外网。这种情形不多见,通常采用固定公网IP地址的一般是内部网络服务器,而这种应用一般采用NAT Server。

3、NAT Server

内网向外网提供服务,内网服务器不能被屏蔽,这是一种由外网发起向内网访问的NAT转换情形。外网用户访问内网服务器,通过“公网IP地址:端口号”与服务器的“私网IP地址:端口号”的固定映射,从私网IP地址与公网IP地址的映射关系看,也是一种静态映射关系。

二、BasicNAT实现原理

Basic Nat方式属于一对一地址转换,但不是静态一对一,是动态。即动态的一对一地址转换方式。

内网向公网发起连接请求时,请求报文中的私网IP地址通过事先准备好的公网IP地址池动态建立私网IP与公网IP的NAT映射表项,利用映射的公网IP将报文中的源IP地址(即内网私网IP地址)进行替换。然后送达给外网的目的主机。外网主机收到请求报文后进行响应时,响应报文到达NAT设备,又将依据前面请求报文所建立的私网IP与公网IP映射关系反向将报文中的目的IP替换成对应的私网IP,然后送达给内部源主机。

①内网侧Host访问公网侧Server时,向Router发送请求报文(即Outbound方向),此时报文中的源IP为Host自己的10.1.1.100,目的IP为Server的IP:211.100.7.34。

②Router收到来自Host请求报文后,从公网地址池选取一个空闲公网IP,建立与内网侧报文源IP间的NAT转换映射表项,包括正(Outbound)、反(Inbound)两个方向,依据正向NAT表项将报文中的源IP地址转换为对应的公网IP后向公网侧发送。此时发送的报文的源IP地址是转换后的公网IP:162.105.178.65,目的IP不变,仍为Server的IP:211.100.7.34。

③Server收到请求报文后,需向Router发送响应报文(Inbound方向),此时只须将收到的请求报文中的源IP和目的IP对调即可,即报文的源IP是Server自己的IP:211.100.7.34,目的地址是Host私网IP转换后的公网IP:162.105.178.65。这是服务器的处理过程。

④Router收到来自公网Server发送的响应报文后,会根据报文中的目的IP查找NAT映射表项,将报文中的目的IP转换为Host主机对应的私网IP地址(源地址不变)后向私网侧发送,此时报文中的源IP仍是Server的IP:211.100.7.34,目的IP地址转换为Host的私网IP:10.1.1.100。

Basic NAT中的请求报文转换的仅是其中的源IP地址(目的IP不变),即仅关心源IP地址;响应报文转换的仅是其中的目的IP(源IP不变),即仅关心目的IP。

三、NAPT实现原理

允许多个内部地址映射到同一个共有地址上,称为多对一地址转换或地址复用,NAPT使用“IP地址+端口号”的形式进行转换。(需先在Router上创建好公网地址池)

NAPT请求报文中转换的仅是源IP地址和源端口号(目的IP和目的端口号不变),即仅关系源IP和源端口号;响应报文中转换的是目的IP和目的端口号(源IP和源端口号不变),即仅关心目的IP和目的端口号。不同私网主机可以转换成同一个公网IP,但转换后的端口号必须不一样。

四、EasyIP实现原理

实现原理与地址池NAPT转换原理类似,可以算是NAPT的一种特例,不同的是Easy IP方式可以实现自动根据路由器上WAN接口的公网IP地址实现与私网IP地址之间的映射(无需创建公网地址池)。主要用于将路由器WAN接口IP地址作为要被映射的公网IP地址的情形,特别适合小型局域网接入Internet情况。

五、NAT Server实现原理

NAT Server用于外网用户需要使用固定公网IP地址访问内部服务器的情形。通过事先配置好的服务器的“公网IP+端口号”与服务器的“私网IP+端口号”间的静态映射关系来实现。(要先在Router上配置好静态的NAT Server转换映射表)。

①Router在收到外网用户发起的访问请求报文后(即Inbound方向),根据该请求的“目的IP:端口号”查找NAT Server转换映射表,找出对应的“私网IP:端口号”,然后用找到的结果直接替换报文的“目的IP:端口号”,最后向内网侧发送。上图外网发送的请求报文中目的IP是202.102.1.68,端口号80,经过Router转换后的目的IP和端口号为192.168.1.68:80。

②内网服务器收到由Router转发的请求报文后,向Router发送响应报文(即Outbound方向)。此时报文中的源IP、端口号与目的IP、端口号与收到的请求报文中的完全对调,即响应报文中的源IP和端口号为前面的192.168.1.68:80.

③Router收到内网服务器的响应报文后又根据该响应报文中的“源IP:端口号”查找NAT Server转换表项,找出对应的“公网IP:端口号”,然后替换报文中的“源IP:端口号”。本例中内网服务器相应外网主机的报文的源IP和端口号是192.168.1.68:80,经Router转换后的源IP和端口号为209.102.1.68:80。

由外网向内网服务器发送的请求报文中转换的仅是目的IP和目的端口号(源IP和源端口号不变),即仅关心目的IP和目的端口号;从内网向外网发送的响应报文转换的仅是源IP和源端口号(目的IP和目的端口号不变),即仅关心源IP和源端口号。

综上总结:NAT中凡是由内网向外网发送的报文(不管是请求报文还是响应报文),在NAT路由器上转换的都是源IP地址(或同时包括源端口号),而凡是由外网向内网发送的报文(不管是请求报文还是响应报文),在NAT路由器上转换的都是目的IP地址(或同时包括源端口号)

六、静态NAT/NAPT

静态NAT是指在进行NAT转换时,内部网络主机的IP与公网IP是一对一静态绑定的,且每个公网IP只会分配给固定的内网主机转换使用。与Basic NAT不同的只是这里先要在NAT路由器上配置好静态NAT转换映射表,而不仅是地址池。

静态NAPT是指“内部网络主机的私网IP+协议号+端口号”与“公网IP+协议号+端口号”是一对一静态绑定的,静态NAPT中的公网IP可以为多个私网IP使用。与NAPT不同的也是要先在NAT路由器上配置好静态NAPT转换映射表,而不仅是地址池。

七、NAT与路由器的本质区别

两种技术主要存在实现机制和主要应用两个方面的本质区别。

1、实现机制不同

NAT是通过解决两个网络间互访的“身份”问题来解决实现两个网络的主机的互访,即通过将报文中的源IP或目的IP转换为对方网络的IP地址来实现两个网络中的主机互访。这里报文中的IP地址转换相当于“身份”的转换,即使一个网络中的主机具有访问对方网络的合法“身份”。

路由器则是通过解决两个网络互访“渠道”问题来实现两个网络的主机的互访,即建立一条互访的“路径”(即路由表)来实现双方主机的互访,而双方传输报文中的源IP和目的IP都不变,也就是双方的“身份”并没有经过转换。

2、主要应用不同

NAT主要应用于内部局域网主机与Internet主机互访的情形(当然也可以实现两个局域网之间的互联,但这不是NAT的主要应用),解决公网IPv4不足的问题。另外,在局域网与Internet的互联中也不可能建立一个双向互访的具体路由表,一则是因为私网IP在Internet无法识别,再则因为Internet不是单一IP网段的网络。

路由之所以选择通过建立路径来实现两个网络的主机的互访,是因为路由主要都是使用私网IP,有明确IP网段的局域网之间的互联。

NAT扩展技术及主要应用

为满足一些特殊应用环境中的NAT应用,还提供几种扩展NAT技术,它们是NAT ALG(Application Level Gateway,应用层网关)、DNS Mapping(DNS映射)、NAT关联VPN、两次NAT、NAT过滤和NAT映射。这些NAT扩展技术也必须在以上静态NAT、动态NAT和NAT Server特性中应用,不能单独配置应用。

一、NAT ALG

NAT和NAPT只能对IP报文的头部地址和TCP/UDP头部的端口信息进行转换,没有对来自应用层数据中可能包括的IP和端口号信息(如FTP、DNS、SIP等数据报文中就包括了这些信息)进行对应转换,这样一来,当数据到达对方应用层后,所看到的仍然是没有经过相应转换的应用层地址和端口信息。这样在对端应用层发送相应报文时,采用的是没有经过相应地址转换的源端信息作为目的地址和端口信息(是私网IP地址和私网端口号),结果肯定是响应报文无法到达配置了私网IP和私网端口号的源端。

解决的方法就是在NAT的实现中使用ALG功能,ALG会对特定的应用层协议进行转换,在对这些特定的应用层协议进行NAT转换过程中,利用所形成的NAT映射表信息来同时改变封装在IP报文数据部分中的地址和端口信息,同时允许这些数据部分带有不可识别的私网地址和端口信息的应用层协议报文可以穿越NAT设备进行传输,相当于屏蔽了报文中的私网地址信息。

如下FTP:

支持ALG功能的协议包括DNS、FTP、ICMP、SIP、PPTP和RTSP。ALG可全面应用于静态NAT、动态NAT和NAT Server三种NAT特性中。

二、DNS Mapping

某些应用中,私网用户希望通过域名访问位于同一私网的内部服务器,而此时用于解析内部服务器的DNS服务器却位于公网。当用户访问时首先通过NAT向位于公网的DNS服务器发出域名解析请求,公网中的DNS服务器发出响应报文时在数据部分携带的是内网服务器对应的公网IP(就是在NAT Server上配置的公网映射IP地址)。如果在NAT Server上没有将DNS服务器解析的公网IP替换成内部服务器对应的私网IP,私网用户将无法通过域名访问到内部服务器,因为此时私网用户访问的是公网IP地址,而实际上服务器是在私网中,ip地址是私网IP地址,自然访问不了。

这种问题可以使用DNS Mapping方式来解决,是DNS ALG技术的一种补充技术。在DNS ALG中,报文中的IP地址信息直接通过NAT映射表进行替换,而DNS Mapping在替换报文数据部分的地址信息时先要通过查找专门配置的“域名-公网IP地址-公网端口-协议类型”映射表,找到对应域名所映射的公网IP地址后使用NAT地址映射表对数据部分的地址信息(还可能包括端口、协议)用内部服务器的私网地址信息(同样可能包括端口、协议)进行替换。建立“域名-公网IP地址-公网端口号-协议类型”映射表的目录是建立内部服务器的公网域名与其公网地址信息间的对应关系。

NAT ALG与Mapping有较大不同,主要体现在用来替换的私网IP地址可能不一样。ALG功能还允许数据部分为私网信息的报文穿越NAT设备,在不同网络中传输,DNS Mapping本身没有这种功能。所以DNS Mapping必须同时结合ALG DNS才能最终生效,否则在数据部分为私网地址和端口信息的报文是不能穿越NAT设备进行传输的。当然,DNS Mapping是仅应用于DNS应用中,不能应用于ALG中还包括的FTP、RSTP等应用中。

在地址和端口信息转换方面,NAT ALG中是直接利用静态配置,或者动态形成的公网IP与私网IP地址NAT映射表中的私网IP地址同时替换报文中IP报头中的目的IP地址和数据部分中的公网IP地址,所以替换的私网IP地址与发生访问的主机的私网IP地址是绝对一致的。DNS Mapping中是通过事先配置的“域名-公网IP地址-公网端口-协议类型”映射表查找对应公网IP地址所对应的私网IP地址(或同时包括端口、协议)进行替换的;报文中的IP报头部分的目的IP地址是通过NAT地址映射表(在静态NAT或者NAT Server中配置的)进行替换的。这时数据部分替换的私网IP地址与IP报头部分替换的私网目的IP地址可能一样(在NAT Server应用中),也可能不一样(在静态NAT应用中)。

原理如上图,私网用户Host希望通过域名方式访问Web服务器,Router作为NAT Server,当Router设备收到DNS服务器发出的响应报文后,先根据其中携带的域名(www.test.com)查找“域名-公网IP-公网端口-协议类型”映射表,找到对应域名所用的公网IP,然后根据NAT上配置公网IP地址与私网IP地址的静态映射关系,将报文中的目的IP地址和数据部分的服务器公网IP地址(或同时将端口)替换成为Web服务器的私网IP的地址10.1.1.200(或同时替换端口)。这样,Host收到的DNS响应报文中就携带了Web服务器的私网IP地址,从而可以通过域名来访问Web服务器了。

注:对于上面红字部分我有点不同看法,我觉的只是替换数据部分服务器公网IP地址,并且是根据NAT Server的配置,这个服务器公网IP就是域名www.test.com对应的公网IP,而报文中的目的IP地址应该替换为10.1.1.100,这个是根据NAT静态配置的NAT映射表来进行查找替换的,否则Host就收不到响应报文了。

DNS Mapping仅可应用于静态NAT和NAT Server中。

三、NAT关联VPN

NAT还允许内部网络中分属不同VPN的用户通过同一个出口访问外部网络,解决内部网络中IP地址重叠的VPN同时访问外网主机的问题;NAT还支持VPN关联的NAT Server,允许外部网络中的主机访问内网中分属不同VPN的服务器,同时支持内网多个VPN地址重叠的场景。

1、VPN关联的源NAT

就是内部网络中分属不同VPN的用户通过同一个NAT出口访问外部网络,仅可应用于静态NAT中。

①VPN1内的主机A和VPN2内的主机B地址重叠,都要同时访问外部网络的一个服务器

②Router在做源NAT时,将内部VPN作为一个NAT的匹配条件,将主机A发出报文的源IP转换为202.1.1.1,将主机B发出报文的源IP转换为202.1.2.1,同时在建立的NAT转换表中,记录用户的VPN信息。

③当外部网络服务器回应内部网络主机A和B的报文经过Router时,根据已建立的NAT映射表,NAT模块将发往主机A报文的目的IP从202.1.1.1转换为10.1.1.1,然后发往VPN1的目的主机;将发往主机B报文的目的IP从202.1.2.1转换为10.1.1.1,然后发往VPN2的目的主机。

2、VPN关联的NAT Server

VPN关联的NAT Server是指外网主机通过NAT技术访问内网中分属不同VPN的服务器,仅可应用于NAT Server中。

①外部网络的主机访问VPN1内的ServerA时的报文目的IP是202.1.10.1;访问VPN2内部的serverB时的报文目的IP是202.1.20.1。

②Router在充当NAT Server时,根据报文的目的IP及VPN信息进行判断,将目的IP是202.1.10.1的报文的目的IP转换为10.1.1.1,然后发往VPN1的目的ServerA;将目的IP是202.1.20.1的报文的目的IP转换为10.1.1.1,然后发往VPN2的目的ServerB。同时在新建的NAT映射表中,记录下关联的VPN信息。

③当内部ServerA和B回应外部网络主机的报文经过Router时,根据已建立的NAT映射表,NAT模块将从ServerA发出的报文的源IP从10.1.1.1转换为202.1.10.1,在发往外部网络;将从ServerB发出的报文的源IP从10.1.1.1转换为202.1.20.1,再发往外部网络。

四、两次NAT

两次NAT是指源IP地址和目的IP地址同时转换(前面的NAT技术都是一个方向仅转换源IP或目的IP),该技术应用于内部网络主机地址与外部网络上主机地址重叠的情况。设计思想就是通过一个中间的多个公网IP地址来分别对双向的源和目的IP进行转换。两次NAT可全面应用于静态NAT、动态NAT和NAT Server这三种NAT特性中。

分别位于内、外网的Host A和B的IP网段一样地址一样。

①A要访问地址重叠的B,首先A会向位于外部网络的DNS服务器发送访问外网B的DNS解析请求,DNS服务器应答B的IP地址为1.1.1.1。

②DNS应答报文在经过Router时,通过DNS ALG将DNS应答报文数据部分中的重叠地址1.1.1.1转换为唯一的临时地址3.3.3.1,然后转发给A

③A获取了B的IP地址(其实是转换后的IP:3.3.3.1)后,开始访问B,目的IP为临时地址3.3.3.1。

④请求报文在到达Router时,先进行正常的NAT Outbound转换,将报文中的源IP地址转换为源NAT地址池中的地址3.3.3.2;同时Router检查此时报文中的目的IP地址3.3.3.1与转换后的源IP地址3.3.3.2重叠,于是再进行目的IP地址转换,将报文的目的IP地址3.3.3.1转换为B的真实地址1.1.1.1,最后将报文转发到B。

⑤B回应A的访问请求后发出响应报文,其中的目的IP为A的NAT Outbound地址池地址3.3.3.2,源IP为B的地址1.1.1.1。

⑥响应报文在到达Router时,先进行正常的NAT Inbound转换,将报文中的目的IP从源NAT地址池地址中的地址3.3.3.2转换为A的内网地址1.1.1.1;同时,Router检查到此时报文中的源IP地址又与目的IP地址重叠,于是再进行源IP地址转换,将报文的源IP地址1.1.1.1转换为对应的临时地址3.3.3.1,再将报文转发到A。

考虑到内网有多个VPN的场景,且内网多个VPN的地址一样,还可在路由器配置DNS ALG的同时增加内网VPN信息作为重叠地址池到临时地址的映射关系匹配条件之一。

五、NAT过滤和NAT映射

NAT过滤功能可以让NAT设备对外网发到内网的流量进行过滤;NAT映射功能可以让内网中的一组主机通过NAT映射表映射到一个公网IP地址,共享这一个公网IP,不同的信息流看起来好像来源于同一个IP地址。NAT过滤和映射均可全面应用于静态NAT、动态NAT和NAT Server这三种特性中。

1、NAT过滤

根据过滤的条件,NAT过滤分为三种类型:

①与外部地址无关的NAT过滤行为
②与外部地址相关的NAT过滤行为
③与外部地址和端口都相关的NAT过滤行为。

在私网主机向某公网主机发起访问后,公网主机发向私网主机的流量经过NAT设备时需要进行过滤。数据报文2、数据报文3、数据报文4代表三种场景,分别对应上述三种NAT过滤类型。

①数据报文2代表公网主机PC-3(与报文1的目的地址不同,证明它不是PC-1要访问的对象)访问私网主机PC-1的报文,此时目的端口号为1111。这种情况下,只有在NAT设备上配置了外部地址无关的NAT过滤行为才会允许该报文通过(因为PC-3不是PC-1要访问的对象),否则被NAT设备过滤掉。

②报文3代表公网主机PC-2(与报文1的目的地址相同)访问私网主机PC-1的报文,此时目的端口为1111,源端口号为3333(与报文1的目的端口不同,证明PC-2是换了端口号对PC-1进行访问的),这种情况,只有配置了外部地址相关的NAT过滤行为,或者配置了外部地址无关的NAT过滤行为(均不涉及端口),才会允许该报文通过,否则被NAT设备过滤掉。

③报文4代表公网服务器PC-2(与报文1的目的地址相同)访问私网主机PC-1的报文,此时目的端口1111,源端口2222(与报文1的目的端口相同,证明PC-2没有更换端口,直接对PC-1进行访问)。这属于外部地址和端口都相关的NAT过滤行为,是缺省的过滤行为,不配置或配置任何类型的NAT过滤行为,都允许此报文通过,不会被过滤掉。

2、NAT映射

NAT映射是NAT设备对内网发到外网的流量进行的映射,可以使得一组内网主机共享唯一的外部地址对外进行通信。当位于内部网络中的主机通过NAT设备向外部主机发起会话请求时,NAT设备就会查询NAT表,看是否有相关会话记录,如果有相关记录,就会将内部IP地址及端口同时进行转换,再转发出去;如果没有相关记录,进行IP地址和端口转换的同时,还会在NAT表增加一条该会话的记录。

根据不同的映射条件,NAT映射包括三种类型:

①外部地址无关的映射:对相同的内部IP和端口号使用相同的公网IP和公网端口号进行映射,不考虑所访问的外部IP地址。

②外部地址相关的映射:对相同的内部IP和端口号,访问相同的外部IP地址时使用相同的公网端口进行映射。

③外部地址和端口相关的映射:对相同的内部IP和端口号,访问相同的外部IP和端口时使用相同的公网IP、端口号进行映射。

六、NAT的主要应用

1、私网主机访问公网服务器

小区、学校、企业私网访问公网,使用Easy IP。

2、公网主机访问私网服务器

通过NAT Server,私网服务器为公网主机提供服务。

3、私网主机通过域名访问私网服务器

DNS服务器位于公网情况下,通过NAT Server和DNS Mapping来实现。通过配置DNS Mapping映射表,即定义“域名-公网IP地址-公网端口-协议类型”间的映射关系,将DNS响应报文中携带的公网IP地址替换为内部服务器的私网IP地址,从而使私网用户可以通过域名来访问该服务器。

4、NAT多实例

当分属不同MPLS VPN的主机使用相同的私网地址,并通过同一个出口设备访问Internet时,NAT多实例可使这些地址重叠的主机同时访问公网服务器。

尽管A和B具有相同的私网地址,但由于分属不同的VPN,通过使用NAT关联VPN,可使NAT能够区分属于不同VPN的主机。

配置动态NAT

通过动态NAT可以动态建立私网IP和公网IP的映射表项,动态NAT包括一对一转换的Basic NAT和多对一转换的NAPT、Easy IP这三种NAT实现方式。

动态NAT的基本配置思想主要有三个方面:首先通过ACL指定允许使用NAT进行IP地址转换的用户范围,然后创建用于动态NAT地址转换的公网地址池,最后在NAT的出接口上把配置的ACL和公网地址池(如采用Easy IP,此时公网地址池就是NAT出接口的IP地址)进行关联,相当于在NAT出接口上应用所配置的ACL和公网地址池。

动态NAT的主要配置任务如下:、

①配置地址转换的ACL规则。
②配置出接口的地址关联。
③(可选)使能NAT ALG功能。
④(可选)配置NAT 过滤方式和映射模式
⑤(可选)配置两次NAT
⑥(可选)配置NAT日志输出
⑦(可选)配置NAT地址映射表项老化时间。

一、配置地址转换的ACL规则

这是必选配置任务,因为出接口地址关联配置任务中必须要用到这里配置好的地址转换ACL,用于控制允许使用NAT进行地址转换的用户私网IP地址范围和网络应用范围。可根据实际情况配置基本ACL规则或高级ACL规则指定允许使用NAT进行地址转换的用户主机源IP地址范围,可以使用高级ACL同时限制使用NAT的通信协议类型,但在规则中的地址范围方面仅可指定源IP地址,不能指定目的IP地址。

仅可在动态NAT中调用ACL来控制允许使用地址池进行地址转换的内部网络用户,静态和NAT Server相当于都静态配置了一对一的地址映射表,不需要ACL控制。

动态NAT地址转换ACL配置方法简单,只需在系统视图下使用:acl [number] acl-number [match-order {auto | config}]命令创建一个基本ACL或高级ACL,然后利用对应的基本ACL或高级ACL中的rule命令配置相应的ACL规则。

例:允许内部网络192.168.1.0/24网段的用户使用NAT地址池进行地址转换。

<Huawei>system-view
[Huawei]acl 2001
[Huawei-acl-basic-2001]rule 1 permit source 192.168.1.0 0.0.0.255

例:允许内部网络192.168.1.10/24用户使用NAT地址池进行地址转换。

<Huawei>system-view
[Huawei]acl 2001
[Huawei-acl-basic-2001]rule 1 permit source 192.168.1.10 0

例:允许内部网络192.168.1.0/24网段的用户在进行TCP通信时使用NAT地址池进行地址转换。

<Huawei>system-view
[Huawei]acl 3001
[Huawei-acl-adv-3001]rule 3 permit  tcp source 192.168.1.0 0.0.0.255

二、配置出接口的地址关联

必选配置任务。出接口地址关联就是把所创建的公网地址池与ACL在NAT出接口上进行关联。公网地址池的配置:

①如用户配置了NAT设备出接口的IP地址和其他应用之后,还有空闲公网IP地址,可以配置单独的地址池。

system-view
nat address-group group-index start-address end-address      配置NAT公网地址池。
interface interface-type interface-number       进入NAT路由器的出接口(只能是三层接口)。
nat outbound acl-number {address-group group-index [no-pat] | interface interface-type interface-number }  将创建的ACL和公网地址池在以上接口进行关联,使符合ACL中规定的私网IP地址可以使用公网地址池进行地址转换。no-pat选项表示使用一对一的地址转换,只转换数据报文的地址而不转换端口信息。(如果不设置这个参数,就成了NAPT了吧?)

到了这里,突然出现一点疑惑:这里是配置了公网地址池,然后私网地址被转换为公网地址池中的地址,通过出接口发到目的地址主机(假设这个出接口为G0/0/1),目的地址主机返回的的响应报文其目的地址是转换后的公网地址池中的地址,是应该返回给g/0/1这个接口的,他怎么知道是发送到这个接口?如果这个接口已经配置了IP,再转换,相当于这个接口配置了多个IP??

②如果用户在配置了NAT设备出接口的IP地址和其他应用后,已没有其他可用公网IP地址,则可以选择Easy IP方式,因为Easy IP可以借助NAT设备出接口的IP地址完成动态NAT。

system-view
interface interface-type interface-number 
nat outbound acl-number       配置Easy IP地址转换,直接使用出接口IP地址(可以是静态的,也可以是动态的)进行转换。

三、使能NAT ALG功能

可选项,仅在要通过NAT设备进行DNS、FTP、SIP和RTSP等应用时,需要配置NAT ALG功能。使能ALG功能可以使NAT设备识别被封装在报文数据部分的IP地址或端口信息,并根据动态形成的NAT地址(或同时包括端口号)映射表项进行替换,使报文正常穿越NAT。

使能ALG方法,在系统视图下使用:nat alg { all | dns | ftp | rstp |sip} enable,缺省ALG处于未使能状态。

四、配置NAT过滤方式和映射模式

可选配置项,仅当网络中存在来自不同厂商的设备,且存在使用STUN(Simple Traversal of UDP Through NAT,通过NAT的UDP简单穿越)、TURN(Traversal Using Relay NAT,使用中继NAT穿越)、ICE(Interactive ConnectivityEstablishment,交互式连通建立)技术的应用时才需要配置。

因为以上应用技术广泛依赖SIP(Session Initiation Protocol,会话初始化协议)代理等软件,而SIP又属于多通道应用,在功能实现时需要创建多个数据通道链接,因此为了保障多个通道的链接,必须配置NAT映射模式和过滤方式,只允许符合映射关系、过滤条件的报文通过。

system-view
nat mapping-mode endpoint-independent [{tcp | udp} [dest-port port-number]]      配置NAT映射模式。endpoint-independent指定NAT映射类型为与外部终端地址不相关的模式。tcp指定NAT映射应用于TCP通信,udp指定NAT映射应用于UDP通信,port-number指定NAT映射应用的TCP或UDP的目的端口号。
nat filter-mode {endpoint-independent | endpoint-dependent | endpoint-and-port-dependent}   配置NAT过滤方式。

对NAT的映射模式和过滤概念用途还是模模糊糊,过滤,感觉就像是防火墙功能,缺省配置下,就相当于必须是同一个会话的包才能通过,就是outbound时,发送的请求包的源、目的IP和端口必须跟返回的响应包的源、目的IP和端口匹配,发送的源是响应的目的,发送的目的是响应的源。以此可放宽条件,只要IP匹配就行,这是与外部终端地址相关过滤,如果可以都不匹配,就是与外部终端地址不相关过滤。对于映射及映射模式,前面说过是:

NAT映射是NAT设备对内网发到外网的流量进行的映射,可以使得一组内网主机共享唯一的外部地址对外进行通信。当位于内部网络中的主机通过NAT设备向外部主机发起会话请求时,NAT设备就会查询NAT表,看是否有相关会话记录,如果有相关记录,就会将内部IP地址及端口同时进行转换,再转发出去;如果没有相关记录,进行IP地址和端口转换的同时,还会在NAT表增加一条该会话的记录。

根据不同的映射条件,NAT映射包括三种类型:

①外部地址无关的映射:对相同的内部IP和端口号使用相同的公网IP和公网端口号进行映射,不考虑所访问的外部IP地址。
②外部地址相关的映射:对相同的内部IP和端口号,访问相同的外部IP地址时使用相同的公网端口进行映射。
③外部地址和端口相关的映射:对相同的内部IP和端口号,访问相同的外部IP和端口时使用相同的公网IP、端口号进行映射。

这不就是NAT的功能吗??这里看到,映射时会建立会话记录表,映射根据会话表进行选择外网IP和端口。而这里的配置又有协议的选择,就是说,映射可以根据协议,还可以只根据内网的IP和端口,还可以根据内网IP、端口和要访问的外网IP,以及可以根据内网IP、端口和要访问的外网的IP和端口,来对私网IP、端口映射不同的外网IP和端口(注意这里要访问的外网即目的地址,要映射的外网即私网转换为的外网地址)。

五、配置两次NAT

可选配置,仅当内外网地址重叠(属于同一IP网段)时才需要通过两次NAT来实现内外网的正常通信。此时内外网主机可以根据重叠地址池和临时地址池的映射关系,将重叠地址替换为临时地址后再进行NAT地址转换,以实现内外网的互访。重叠地址池用来指定内网哪些IP允许和外网重叠,只有属于重叠地址池的地址才会做两次NAT;临时地址池指定了可用哪些临时IP地址来替换重叠地址池里的地址。

配置两次NAT就是要配置重叠地址池和临时地址池的映射关系,方法在系统视图下:nat overlap-address map-index overlappool-startaddress temppool-startaddress pool-length length [ inside-vpn-instance inside-vpn-instance-name ]

配置好重叠地址池到临时地址池后的映射后还需要配置从NAT出接口到达临时地址的静态路由(目的IP为临时IP,出接口为NAT出接口,下一跳通常为公网IP地址),否则NAT流量仍然无法通过出接口发出去。

六、配置NAT日志输出

可选配置,可根据实际需要在NAT设备上配置NAT日志输出功能,记录包括报文的源IP地址、源端口、目的IP地址、目的端口、转换后的源IP、转换后的源端口以及NAT的时间信息和用户执行的操作等。

system-view
firewall log session enable    使能防火墙日志功能。包括通过定义ACL规则对符合条件的流所记录的日志以及对NAT转换的流所记录的日志。
firewall log session nat enable   使能NAT类型的流日志功能。
info-center enable      使能信息中心功能。
info-center loghost ip-address [channel {channel-number | channel-name} | facility local-number | {language language-name |binary [port]} | vpn-instance vpn-instance-name | public-net]    配置日志输出到日志主机所使用的的通道。

七、配置NAT地址映射表项老化时间

可选配置,为NAT地址映射表配置老化时间,以控制用户对NAT配置的使用。配制方法,在系统视图下使用:firewall-nat session {dns | ftp |ftp-data | http | icmp | tcp | tcp-proxy | udp | sip | sip-media | rtsp |rtsp-media} aging-time time-value

八、动态NAT地址转换配置示例:

A区和B区的私网用户和Internet相连,路由器上出接口GE3/0/0的公网地址为202.169.10.1/24,对端运营商侧地址为202.169.10.2/24。A区用户希望使用公网地址池中的地址(202.169.10.100~202.169.10.200),采用NAT方式替换A区内的主机地址(网段为192.168.20.0/24),访问Internet;B区用户希望结合B区的公网IP地址比较少的情况,使用公网地址池(202.169.10.80~202.169.10.83),采用IP地址和端口的替换方式替换B区内部的主机地址(网段为10.0.0.0/24),访问Internet。

1、基本配置思路

两个不同的内网用户区域,采用了不同的公网地址池,且是多对一的NAT地址转换,所以需要配置两个NAT地址池。然后通过两个ACL限制两个用户区域中允许使用对应动态地址转换应用的内部网络用户(当然还需要在NAT上配置到达Internet的缺省路由)。

2、具体配置

①配置NAT设备各接口IP地址

因为NAT设备的内、外部接口均只能在三层模式下配置,所以首先需要配置好NAT设备上的内、外部接口IP地址。内部LAN接口需要通过加入到对应的VLAN中,再在对应的VLANIF接口下配置IP地址,外部WAN接口可直接配置IP地址。

system-view
vlan 100
quit
interface vlanif 100
ip address 192.168.20.1 24
quit
interface ethernet2/0/0
port link-type access
port default vlan 100
quit
vlan 200
quit
interface vlanif 200
ip address 10.0.0.1 24
quit
interface ethernet 2/0/1
port link-type access
port default vlan 200
quit
interface gigabitethernet 3/0/0
ip address 202.169.10.1 24
quit

②配置两个用于控制A区和B区用户应用动态NAT地址转换的ACL。因为这里仅需要控制作为源IP地址的用户私网IP,不用控制通信协议类型,所以仅配置基本ACL即可。

acl 2000
rule 5 permit source 192.168.20.0 0.0.0.255
quit
acl 2001
rule 5 permit source 10.0.0.0 0.0.0.255
quit

③配置两个动态NAT出接口地址关联,采用地址池的方式。

nat address-group 1 202.169.10.100 202.169.10.200
nat address-group 2 202.169.10.80 202.169.10.83
interface gigabitethernet 3/0/0
nat outbound 2000 address-group 1
nat outbound 2001 address-group 2
quit

④配置到达Internet的缺省路由,指定下一跳地址为运营商侧设备IP地址202.168.10.2

ip route-static 0.0.0.0 0.0.0.0 202.168.10.2

如果需要在Router上执行ping –a source-ip-address命令,通过指定发送ICMP ECHO-REQUEST报文的源IP地址来验证内网用户是否可以访问Internet,则还需要配置ip soft-forward enhance enable命令,使能设备产生的控制报文的增强转发功能,这样ping报文中的私网源IP地址才能通过NAT转换为公网IP地址,使得最终的ICMP回应报文正确返回私网ping主机上。

配置好后,可在Router上执行display nat outbound,查看地址转换配置。

eNSP实验:

一开始的拓扑如下:

设想就是在交换机上创建两个VLAN:100和200,在AR1上同样创建VLAN100和200,VLAN接口的IP分别是:192.168.20.1和10.0.0.1,然后通过各自链路连接,A区域通过GE0/0/1与Ethernet5/0/0链路,B区通过GE0/0/10与Ethernet5/0/1链路到达AR1,然后触发各自nat,配置交换机和路由器AR1的VLAN及接口配置如下:

这样配置后,出现一个问题:VLAN200中的PC无法PING通网关,即10.0.0.1,而VLAN100中的PC能够PING通10.0.0.1,按照原理推断,因为是使用三层进行通信,所以VLAN100和VLAN200中的PC都应该能够PING通这个网关地址,因为在AR1上这两个地址是直连的,默认是联通的,不应该的VLAN200中的PC PING不通。

改变一下拓扑:



通过PC或Client访问服务器1,然后查看:

通过上面的查询,可以看到,对于VLAN100,不同的内网IP,转换成不同的公网IP

换一个配置

这时就没有进行端口的转换。

为减少交换机的个数,还可以这样搭建:

使用一条trunk链路,允许VLAN100和200通过。

九、配置两次NAT示例:

路由器出接口GE1/0/0的IP为202.11.1.2/24,LAN侧接口IP地址为202.10.0.1/24,对端运营商IP为202.11.1.1/24,公司内网一台主机IP分配不合理,PC-1和公网中的服务器ServerA地址重叠。

1、基本配置思路

这是一个通过动态NAT实现内网主机访问外网主机的示例,因为内外网地址重叠,需要在配置动态NAT情况下还要配置两次NAT。配置动态NAT时,地址池为临时地址池,然后通过两次NAT配置临时地址池与重叠的公网地址池之间的映射关系(临时地址池与重叠地址池要处于不同的IP网段),PC2主机使用域名访问方式,所以需要同时配置DNS ALG(但不需要配置DNS Mapping)。

2、具体配置步骤

①配置各接口IP。

<Huawei>system-view
[Huawei]sysnameRouter
[Router]interface gigabitethernet 1/0/0
[Router-GigabitEthernet1/0/0]ipaddress 202.11.1.2 24
[Router-GigabitEthernet3/0/0]quit
[Router]interface ethernet 2/0/0
[Router-Ethernet2/0/0]ip address 202.10.0.1 24
[Router-Ethernet2/0/0]quit

②配置两次NAT。两次NAT主要是配置重叠的公网地址池和临时地址池之间的映射关系(假设临时地址池的起始地址为202.12.1.100,共254个),还需配置从出接口GE1/0/0到达临时地址的静态路由。

[Router]nat overlap-address 0 202.10.0.100 202.12.1.100 pool-length 254
[Router]ip route-static 202.12.1.100 32 gigabitethernet 1/0/0 202.11.1.1

这里对pool-length不太理解,是指重叠地址的个数吗?

③配置动态ANT

[Router]acl 3180
[Router-acl-adv-3180]rule 5 permit ip source 202.10.0.0 0.0.0.255 !—定义允许内部地址使用NAT地址转换的高级ACL规则(同时限定仅允许IP通信可使用NAT地址转换)

[Router-acl-adv-3180]quit
[Router]nat address-group 1 202.11.1.100 202.11.1.200
[Router]interface gigabitethernet 1/0/0
[Router-GigabitEthernet1/0/0]nat outbound 3180 address-group 1 !—在NAT出接口上关联内部网络地址和NAT公网地址池
[Router-GigabitEthernet1/0/0]quit
[Router]natalg dns enable   !—使能DNS的ALG功能

④配置到达Internet的缺省路由,指定下一跳地址为202.11.1.1

[Router]ip route-static 0.0.0.0 0.0.0.0 202.11.1.1

配置好后,可执行display nat overlap-address all查看地址池映射关系。

想用如下的拓扑模拟进行试验:

配置完后发现无法进行,通过试验,对两次NAT进一步理解:两次NAT的发起端PC是需要使用域名来访问外部重叠地址的服务器的,因为如果不使用域名而直接使用IP地址的话,那地址就是发起端PC地地址了,两次NAT因为使用域名,所以第一步是访问DNS服务器的,DNS服务器解析域名,得到域名对应的IP,这个IP与发起端PC的IP相同,在这个DNS响应包返回PC端时,进行地址的转换,换为临时地址,这需要NAT ALG的DNS映射功能,也就是将DNS响应包中的域名对应的IP地址改变了,原来是与发起端PC相同的IP变为临时IP,发起端就以这个地址为目的地址进行访问。所以这里的测试必须使用DNS服务器,如下:

但是又有问题了,因为Client1的配置中服务器配置只能使用IP,无法使用域名,所以使用Client是不行的,需要使用云模拟端口连接我们实际的一台PC或连接一台虚拟机。暂时不做了。

路由器重温——NAT配置管理相关推荐

  1. 路由器重温——PPPoE配置管理-1

    PPPoE(PPP over Ethernet,基于以太网的PPP)是指在以太网链路上运行PPP,在ADSL.小区组网建设等应用中广泛采用.PPPoE使用Client/Server模型,提供了在以太网 ...

  2. Cisco PT模拟实验(19) 路由器的NAT功能配置

    Cisco PT模拟实验(19) 路由器的NAT功能配置 实验目的: 掌握NAT网络地址转换的原理及功能 掌握NAT地址映射和端口映射的配置方法 掌握广域网(WAN)接入技术的原理 实验背景: 情景一 ...

  3. 思科路由器动态NAT配置

    相关学习推荐: 优秀的网工都会NAThttps://blog.csdn.net/XMWS_IT/article/details/121508603?spm=1001.2014.3001.5502 微思 ...

  4. polycube--基于ebpf/xdp的网络套件(网桥,路由器,nat,负载平衡器,防火墙,DDoS缓解器)

    1. Polycube简介 Polycube是基于Linux ebpf/xdp的开源软件框架,提供了快速,轻量级的 网络功能,例如网桥,路由器,nat,负载平衡器,防火墙,DDoS缓解器等. 可以组合 ...

  5. 【计算机网络】思科实验(8):网络地址转换之路由器动态NAT模拟

    系列文章目录 [计算机网络]思科实验(1):交换机的VLAN划分 [计算机网络]思科实验(2):交换机间的VLAN通信 [计算机网络]思科实验(3):使用三层交换机实现跨VLAN间的通信 [计算机网络 ...

  6. 【计算机网络】思科实验(7):网络地址转换之路由器静态NAT模拟

    系列文章目录 [计算机网络]思科实验(1):交换机的VLAN划分 [计算机网络]思科实验(2):交换机间的VLAN通信 [计算机网络]思科实验(3):使用三层交换机实现跨VLAN间的通信 [计算机网络 ...

  7. 路由器重温——WAN接入/互联-DCC配置管理2

    配置DCC拨号接口属性 拨号接口(包括物理拨号接口和Dialer接口)一旦创建,就会被赋予一系列属性参数的缺省值,因此本项配置任务为可选. ①链路空闲时间 设置当链路空闲超过了指定时间后,DCC将断开 ...

  8. 路由器重温——WAN接入/互联-DCC配置管理1

    路由器主要用于WAN接入与互联,必须学习和掌握路由器的WAN接入与互联配置方法. 在路由器的WAN接入与互联中主要包括两大类:一是专线方式的接入或互联,一种是按需拨号方式,这种方式不是永久连接的.专线 ...

  9. 路由器重温——DHCP/DNS服务配置管理-3

    DHCP Snooping基础 DHCP Snooping是一种DHCP安全技术,能够有效防止网络中仿冒DHCP服务器的攻击,保证客户端从合法的服务器获取IP地址,能够记录DHCP客户端IP地址与MA ...

最新文章

  1. 接口入参形式_某小公司RESTful、共用接口、前后端分离、接口约定的实践
  2. SqlServer 中Binary类型的数据如何转化为字符串
  3. DataTable / DataSet 与 xml 的相互转换
  4. 小黑小波比.sql语句截取字符串的子串
  5. python程序员编辑器_5款Python程序员高频使用开发工具推荐
  6. hdu 5172 GTY's gay friends(线段树最值)
  7. cri-o 与 cni的集成分析
  8. 【Spark Summit EU 2016】沃森媒体分析系统:从单租户Hadoop到3000租户Spark的架构演进...
  9. springboot文件上传下载实战 —— 登录功能、展示所有文件
  10. 大型项目用python吗_在大型项目上,Python 是个烂语言吗?
  11. GB2312简体中文编码表(转)
  12. 贾俊平统计学思维导图- 第九章 分类数据分析
  13. 中国剩余定理求解同余线性方程组(模数互素和非互素的情况)
  14. Windows 的应急事件分类-
  15. LaTeX 数学公式大全
  16. Parameter index out of range (1 > number of parameters, which is 0)
  17. c++(最大公约数)
  18. Devign: Effective Vulnerability Identification byLearning Comprehensive Program Semantics viaGraph
  19. 干货 | 诚迈科技联合联发科技、Linaro推出《Make it happen!联发科技曦力X20开发板技术公开课(上海站)》精彩回顾
  20. 参会记录|2023 上海 CDC 城市领航者之夜(第一期)

热门文章

  1. i5 12600KF参数 i512600KF怎么样
  2. Godaddy域名 绑定ip 服务器
  3. python数字金字塔代码
  4. 阿里云子账号(RAM)的使用方法
  5. 2019移动广告反欺诈算法挑战赛之初始数据分析
  6. UVALive 7040 Color (容斥原理 + 组合数学递推公式 + 求逆元 + 基础数论)
  7. 五分钟详述:一文理解动作游戏开发中的攻击逻辑和受击逻辑
  8. python练习1 以词云图为例的数据可视化
  9. [英文缩写]OL是什么意思?
  10. 技巧: Excel数据如何快速录入?