当你与外部网络进行通信时,你可以转换自己的私有 IP 地址到全局唯一的 IP 地址可以通 过静态或动态 NAT 来实现以上目的静态 NAT 在内部本地址和内部全局地址之间建立一对一 的映射关系,而动态 NAT 建立一个内部本地址到一个全局地址池的映射关系一、静态 NAT 工作原理静态 NAT 是最基本的 NAT 方式,也是最常用的 NAT 方式之一本节要利用网络拓扑结构和具 体的示例介绍 Cisco 设备上的静态 NAT 基本配置步骤示例中的基本网络拓扑结构如图 1 所示NAT路由器的两个接口(sO和si)分别连接了内、外两个不同的网络(10.10.10.0/24 和 171.16.68.1/24)现要使内部网络中的 10.10.01.1 主机和外部网络中的 171.16.68.5 主机间进行数据包传输ENSIDE NETWORK OUTSIDE NETWORKQ :-a国Sr101AW图 1 静态 NAT 基本配置示例网络结构在上一篇说到了,NAT的应用可以是单方向(包括正向或反向),也可以是双方向的地址转 换我们把内部网络中的地址转换成外部网络中的地址,称之为正向转换,使用的 NAT 命令 为 “ip nat inside source static {local-ip global-ip”,把本地网络的本地址转换 成外部网络的全局地址。
把外部网络中的地址转换成内部网络中的地址称之为反向转换,使 用的 NAT 命令为 “ip nat out side source static global-ip local-i}”,把外部网络 的全地址转换成本地网络的本地地址对比可以看出,两个命令中的本地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) 使用ip nat inside source static全局配置命令创建从内网到外网的静态NAT IP 地址转换Router(config) #ip nat inside source static 10.10.10.1 171.16.68.5 # 在内部网 络本地地址 10.10.10.1 与内部网络全局地址 171.16.68.5 之间建立静态 NAT 转换关系,使 内部网络主机知道要以 171.16.68.5 这个地址到达外部网络主机(2) 使用以下两条语句配置路由器的 NAT 内部接口 s0Router( config) #interface s 0 # 进入 s0 串口配置模式Router( config-if) #ip nat inside # 把 s0 串口指定为内部网络接口(3) 使用以下两条语句配置路由器的NAT外部接口 siRouter( config) #interface s 1 # 进入 s1 串口配置模式Router( config-if) #ip nat outside # 把 si 串口指定为外部网络接口(4) 使用 show ip nat translations 特权模式命令验证上述进行的路由器 NAT 配置。
内部网络的本地地址为10.10.10.1,内部网络的全局地址为171.16.6 8.5Router#show ip nat translations # 在特权模式下显示当前路由器 NAT 配置Pro Inside global Inside local Outside local Outside global--- 171.16.68.5 10.10.10.1 --- ---此时如果对外网络目的主机进行ping操作,此时就会有有数据包从内部网络转发到外部网 络后,再在路由器特权模式下执行“show ip nat translations”命令,显示的NAT信息 如下多了一条 icmp 协议类型数据包显示,但因为此时没有配置外部网络的本地和全局地 址,所以显示的外部本地和全局地址都是一样的,都是ping操作目的主机地址171.16.6 8.1Router#show ip nat translationsPro Inside global Inside local Outside local Outside globalicmp 171.16.68.5:15 10.10.10.1:15 171.16.68.1:15 171.16.68.1:15--- 171.16.68.5 10.10.10.1 --- ---通过以上配置后,从内部网络发往外部网络的数据包的源地址(SA)将在经过路由器后进行 转换(由内部本地地址10.10.10.1转换成内部全局地址171.16.68.5),但目标地址(DA) 不变,但从外部网络发往内部网络的数据包的源地址没有改变,只是经过路由器后的数据目 的地址发生了改变(由内部网络的全局地址 172.16.68.5 转换成内部网络的本地地址 10.10.10.1),因为此时还没有为 NAT 路由器配置外部网络的本地地址和全局地址转换。
此 时,数据包在内、外部网络中的源地址、目的地址的转换方式如图2 所示INSIDE NETOORK OUTSIDE NETWORK图 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)使用ip nat out side source static全局配置命令创建从外网到内网的静态NAT IP 地址转换Router(config) #ip nat outside source static 171.16.68.1 10.10.10.5 # 在外部网 络本地地址 171.16.68.1 与外部网络全局地址 10.10.10.5 之间建立静态 NAT 转换关系,使 外部网络主机知道要以 10.10.10.5 这个地址到达内部网络主机(2) 使用以下两条语句配置路由器的NAT内部接口 s0Router( config) #interface s 0Router( config-if) #ip nat inside(3) 使用以下两条语句配置路由器的 NAT 内部接口 s1Router( config) #interface s 1Router( config-if) #ip nat outside(4) 使用 show ip nat translations 特权模式命令验证上述进行的路由器 NAT 配置。
外 部网络的本地地址为 10.10.10.5,外部网络的全局地址为 171.16.68.1Router#show ip nat translationsPro Inside global Inside local Outside local Outside global 10.10.10.5 171.16.68.1 同样,如果此时执行一个从外部网络主机(171.16.68.1)到内部网络主机(10.10.10.1) 的ping操作,然后再在路由器特权模式下执行“show ip nat translations”命令,则显 示如下结果因为此时仅配置了外部网络本地地址和全局地址,所以结果中显示的内部网络 本地地址和全局地址都是一样的,都是ping操作目的主机地址10.10.10.1Router#show ip nat translationsPro Inside global Inside local Outside local Outside global 10.10.10.5 171.16.68.1icmp 10.10.10.1:37 10.10.10.1:37 10.10.10.5:37 171.16.68.1:37与前面仅配置内部网络本地地址和全局地址相反,此处从外部网络发往内部网络的数据包的 源地址(SA)将在经过路由器后进行转换(由外部本地地址171.16.68.1转换成内部全局地 址10.10.10.5),但目标地址(DA)不变;但从内部网络发往外部网络的数据包的源地址 没有改变,只是经过路由器后的数据目的地址发生了改变(由外部网络的全局地址 10.10.10.5 转换成外部网络的本地地址 171.16.68.1),因为此时还没有为 NAT 路由器配置 内部网络的本地地址和全局地址转换。
如图所示此时,数据包在内、外部网络中的源地址、 目的地址的转换方式如图3 所示图 7-10 配置了反向 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)#ip nat inside source static 10.10.10.1 171.16.68.5 # 在内部网 络本地地址 10.10.10.1 与内部网络全局地址 171.16.68.5 之间建立静态 NAT 转换关系,使 内部网络主机知道要以 171.16.68.5 这个地址到达外部网络主机Router(config)#ip nat outside source static 171.16.68.1 10.10.10.5 # 在外部网 络本地地址 171.16.68.1 与外部网络全局地址 10.10.10.5 之间建立静态 NAT 转换关系,使 外部网络主机知道要以 10.10.10.5 这个地址到达内部网络主机 Router(co。