正向NAT及反向NAT建立映射关系.docx
《正向NAT及反向NAT建立映射关系.docx》由会员分享,可在线阅读,更多相关《正向NAT及反向NAT建立映射关系.docx(8页珍藏版)》请在冰点文库上搜索。
正向NAT及反向NAT建立映射关系
正向NAT和反向NAT建立映射关系
当你与外部网络进行通信时,你可以转换自己的私有IP地址到全局唯一的IP地址。
可以通过静态或动态NAT来实现以上目的。
静态NAT在内部本地址和内部全局地址之间建立一对一的映射关系,而动态NAT建立一个内部本地址到一个全局地址池的映射关系。
一、静态NAT工作原理
静态NAT是最基本的NAT方式,也是最常用的NAT方式之一。
本节要利用网络拓扑结构和具体的示例介绍Cisco设备上的静态NAT基本配置步骤。
示例中的基本网络拓扑结构如图1所示。
NAT路由器的两个接口(s0和s1)分别连接了内、外两个不同的网络(10.10.10.0/24和171.16.68.1/24)。
现要使内部网络中的10.10.01.1主机和外部网络中的171.16.68.5主机间进行数据包传输。
图1静态NAT基本配置示例网络结构
在上一篇说到了,NAT的应用可以是单方向(包括正向或反向),也可以是双方向的地址转换。
我们把内部网络中的地址转换成外部网络中的地址,称之为正向转换,使用的NAT命令为“ipnatinsidesourcestatic{local-ipglobal-ip}”,把本地网络的本地址转换成外部网络的全局地址。
把外部网络中的地址转换成内部网络中的地址称之为反向转换,使用的NAT命令为“ipnatoutsidesourcestaticglobal-iplocal-ip}”,把外部网络的全地址转换成本地网络的本地地址。
对比可以看出,两个命令中的本地IP地址(local-ip)和全局IP地址(global-ip)的位置是相互调换的。
而把需要同时具有两方面的转换,称之为双向转换。
正向转换时只需要定义内部本地址和内部全局地址;反方向的转换时则需要定义外部本地址和外部全局地址;双向转换时则需要同时定义内部本地址、内部全局地址、外部本地址和外部全局地址。
下面分别予以介绍。
1.正向NAT地址转换配置
仅需要正向NAT转换时,只需要定义内部本地地址和内部全局地址。
下面是一个配置示例(网络结构参见图1),要实现以下目的:
当NAT路由器的内部网络s0接口上接收到一个源地址为10.10.10.1内部本地地址的数据包时,源地址被转换成171.16.68.5内部全局地址。
同样,当在NAT路由器的外部网络接口s1上接收源地址为172.16.68.5内部全局地址的数据包时,目的地址将被转换成10.10.10.1这个内部本地地址。
(1)使用ipnatinsidesourcestatic全局配置命令创建从内网到外网的静态NATIP地址转换。
Router(config)#ipnatinsidesourcestatic10.10.10.1171.16.68.5#在内部网络本地地址10.10.10.1与内部网络全局地址171.16.68.5之间建立静态NAT转换关系,使内部网络主机知道要以171.16.68.5这个地址到达外部网络主机
(2)使用以下两条语句配置路由器的NAT内部接口s0。
Router(config)#interfaces0#进入s0串口配置模式
Router(config-if)#ipnatinside#把s0串口指定为内部网络接口
(3)使用以下两条语句配置路由器的NAT外部接口s1。
Router(config)#interfaces1#进入s1串口配置模式
Router(config-if)#ipnatoutside#把s1串口指定为外部网络接口
(4)使用showipnattranslations特权模式命令验证上述进行的路由器NAT配置。
内部网络的本地地址为10.10.10.1,内部网络的全局地址为171.16.68.5。
Router#showipnattranslations#在特权模式下显示当前路由器NAT配置
ProInsideglobalInsidelocalOutsidelocalOutsideglobal
---171.16.68.510.10.10.1------
此时如果对外网络目的主机进行ping操作,此时就会有有数据包从内部网络转发到外部网络后,再在路由器特权模式下执行“showipnattranslations”命令,显示的NAT信息如下。
多了一条icmp协议类型数据包显示,但因为此时没有配置外部网络的本地和全局地址,所以显示的外部本地和全局地址都是一样的,都是ping操作目的主机地址171.16.68.1。
Router#showipnattranslations
ProInsideglobalInsidelocalOutsidelocalOutsideglobal
icmp171.16.68.5:
1510.10.10.1:
15171.16.68.1:
15171.16.68.1:
15
---171.16.68.510.10.10.1------
通过以上配置后,从内部网络发往外部网络的数据包的源地址(SA)将在经过路由器后进行转换(由内部本地地址10.10.10.1转换成内部全局地址171.16.68.5),但目标地址(DA)不变,但从外部网络发往内部网络的数据包的源地址没有改变,只是经过路由器后的数据目的地址发生了改变(由内部网络的全局地址172.16.68.5转换成内部网络的本地地址10.10.10.1),因为此时还没有为NAT路由器配置外部网络的本地地址和全局地址转换。
此时,数据包在内、外部网络中的源地址、目的地址的转换方式如图2所示。
图2配置了正向NAT地址转换后的数据包地址转换示例
2.反向NAT转换配置
反向NAT转换与正向NAT转换是相反的,它需要定义外部本地地址和外部全局地址。
同样以一个示例进行介绍(网络结构仍参照图1)。
本示例要实现的目的是:
当NAT路由器外部网络接口s1接收到源地址为171.16.68.1外部本地地址的数据包后,数据包的源地址将转变为10.10.10.5外部全局地址。
当NAT路由器在内部网络接口s0接收到源地址为10.10.10.5外部全局地址的数据包时,数据包的目的地址将被转变为171.16.68.1外部本地地址。
完整的的配置如下:
(1)使用ipnatoutsidesourcestatic全局配置命令创建从外网到内网的静态NATIP地址转换。
Router(config)#ipnatoutsidesourcestatic171.16.68.110.10.10.5#在外部网络本地地址171.16.68.1与外部网络全局地址10.10.10.5之间建立静态NAT转换关系,使外部网络主机知道要以10.10.10.5这个地址到达内部网络主机
(2)使用以下两条语句配置路由器的NAT内部接口s0
Router(config)#interfaces0
Router(config-if)#ipnatinside
(3)使用以下两条语句配置路由器的NAT内部接口s1
Router(config)#interfaces1
Router(config-if)#ipnatoutside
(4)使用showipnattranslations特权模式命令验证上述进行的路由器NAT配置。
外部网络的本地地址为10.10.10.5,外部网络的全局地址为171.16.68.1。
Router#showipnattranslations
ProInsideglobalInsidelocalOutsidelocalOutsideglobal
---------10.10.10.5171.16.68.1
同样,如果此时执行一个从外部网络主机(171.16.68.1)到内部网络主机(10.10.10.1)的ping操作,然后再在路由器特权模式下执行“showipnattranslations”命令,则显示如下结果。
因为此时仅配置了外部网络本地地址和全局地址,所以结果中显示的内部网络本地地址和全局地址都是一样的,都是ping操作目的主机地址10.10.10.1。
Router#showipnattranslations
ProInsideglobalInsidelocalOutsidelocalOutsideglobal
---------10.10.10.5171.16.68.1
icmp10.10.10.1:
3710.10.10.1:
3710.10.10.5:
37171.16.68.1:
37
与前面仅配置内部网络本地地址和全局地址相反,此处从外部网络发往内部网络的数据包的源地址(SA)将在经过路由器后进行转换(由外部本地地址171.16.68.1转换成内部全局地址10.10.10.5),但目标地址(DA)不变;但从内部网络发往外部网络的数据包的源地址没有改变,只是经过路由器后的数据目的地址发生了改变(由外部网络的全局地址10.10.10.5转换成外部网络的本地地址171.16.68.1),因为此时还没有为NAT路由器配置内部网络的本地地址和全局地址转换。
如图所示。
此时,数据包在内、外部网络中的源地址、目的地址的转换方式如图3所示。
图3配置了反向NAT地址转换后的数据包地址转换示例
3.双向NAT转换
下面介绍同时进行正、反向NAT转换的配置方法,它需要同时定义本地网络本地地址、本地网络全局地址、外部网络本地地址和外部网络全局地址。
在下面的示例中,通过配置可实现:
当NAT路由器内部网络接口接收到源地址为10.10.10.1(内部网络本地地址)的数据包时,这个源地址将转换成171.16.68.5(内部网络全局地址)。
当NAT路由器外部接口接收到源地址为171.16.68.1(外部网络本地地址)的数据包时,源地址将转换成10.10.10.5(外部网络全局地址)。
同理,当NAT路由器外部网络接口接收到目的地址为171.16.68.5的数据包时,数据包的目的地址将转换成10.10.10.1。
当NAT路由器内部接口接收到目的地址为10.10.10.5的数据包时,数据包的目的地址将转换成171.16.68.1。
本示例的完整配置如下:
Router(config)#ipnatinsidesourcestatic10.10.10.1171.16.68.5#在内部网络本地地址10.10.10.1与内部网络全局地址171.16.68.5之间建立静态NAT转换关系,使内部网络主机知道要以171.16.68.5这个地址到达外部网络主机
Router(config)#ipnatoutsidesourcestatic171.16.68.110.10.10.5#在外部网络本地地址171.16.68.1与外部网络全局地址10.10.10.5之间建立静态NAT转换关系,使外部网络主机知道要以10.10.10.5这个地址到达内部网络主机
Router(config)#interfaces0
Router(config-if)#ipnatinside
Router(config-if)#end
Router(config)#interfaces1
Router(config-if)#ipnatoutside
Router(config-if)#end
Router(config)#end
Router#showipnattranslations
ProInsideglobalInsidelocalOutsidelocalOutsideglobal
---------10.10.10.5171.16.68.1
171.16.68.510.10.10.1------
同样,如果此时分别执行一个从内部主机到外部主机,以及从外部主机到内部主机的ping操作,然后再在路由器特权模式下执行“showipnattranslations”命令,则显示如下结果。
因为此时同时配置了内、外部网络本地地址和全局地址,所以结果中显示了两条NAT配置项,分别显示了与外部网络和内部网络中的本地地址和全局地址转换对应的ping操作icmp消息:
与外部网络本地地址和全局地址对应的ping操作ICMP消息中显示内部网络中的本地地址和全局地址是一样的,而与内部网络本地地睛和全局地址对应的ping操作icmp消息中显示外部网络中的本地地址和全局地址是一样的,都是对应的ping操作目的主机地址。
Router#showipnattranslations
ProInsideglobalInsidelocalOutsidelocalOutsideglobal
---------10.10.10.5171.16.68.1
icmp10.10.10.1:
410.10.10.1:
410.10.10.5:
4171.16.68.1:
4
icmp171.16.68.5:
3910.10.10.1:
39171.16.68.1:
39171.16.68.1:
39
---171.16.68.510.10.10.1------
经过以上配置后,数据包发送时不仅源地址会发生变化,目标地址也会同时发生变化,如图4所示。
图4同时配置了内、外部网络本地地址和全局地址后的地址转换示例
总体来说,数据中的源地址是由发送数据包的源主机地址(也就是源主机的本地地址)在经过NAT路由器后变成为目的主机所在网络的本地全局地址;数据包中的目标地址则先是封装为目的主机所在网络的全局地址,在经过NAT路由器后变成为目的主机地址(也就是目的主机的本地地址)。
而且不管数据包是从内部网络的主机发往外部网络的主机,还是从外部网络的主机发往内部网络的主机上。
具体来讲,如果数据包是从内部网络发往外部网络,则源地址和目的地地址的转换方式如图5所示;而如果数据包是从外部网络发往内部网络,则源地址和目的地址的转换方式如图6所示。
从以上图示可以看出,两种数据包发送方向中的源地址、目标地址转换恰好是相反的,图5中的源地址转换过程恰好是图6中的目的地址转换过程。
同理,图5中的源地址转换过程恰好是图6中的目的地址转换过程。
但无论数据包是发往哪个方面,源地址的转换过程都由本地地址(LocalAddress)转换成全局地址(GlobalAddress),而目的地址转换则也是相反的,即由全局地址转换成本地地址。
从目的地址的转换过程还可以看出,数据包在NAT服务下的发送数据包的真正主机地址被所配置的本地网络全局地址屏蔽了,保护了本地网络;数据包的传送也不是一直以同一个目的地址,一步到位转发的,而是先把从发送主机中把数据包交给本地网络的全局地址,然后再从全局地址转发到真正的地址,也就是经过了两个步骤。
图5数据包从内部网络发到外部网络时的地址转换方式图6数据包从外部网络发到内部网络时的地址转换方式