在这个例子中,我们希望NAT能够允许内部网中某些设备(每个子网中的前31个地址)可以发起同外部设备的通信,方法是将外部设备的合法地址转换为一个有效地址或者地址池。该地址池已定义的地址范围是从172.16.10.1到172.16.10.63。
现在,我们就已经准备好配置NAT。为了实现上面所定义的目标,我们需要使用动态NAT。在采用动态NAT时,路由器中的转换列表最初是空
的,一旦需要地址转换的流量通过路由器,这个列表就会填充内容(同静态NAT相反,转换是静态配置的,放置在转换表中,不需要有任何流量)。
在这个例子中,我们可以配置NAT来将每个内部设备转换到一个独一无二的有效地址上,也可以将每个内部设备转换到相同的有效地址上。第二种方法就叫做超载。下面将给出每一种配置方法的范例。
配置NAT,允许互联网访问内部设备
在这个例子中,我们首先定义内部和外部接口的NAT,如上面的网络图所示。
其次,我们还要定义,我们希望内部的用户能够建立同外面设备的通信。而外面设备将只能够同内部的邮件服务器建立通信。
第三步是配置NAT。要实现我们上面所确定的目标,我们可以同时配置静态和动态NAT。要获取更多信息,了解在这个例子中的具体配置,参阅“同时配置静态和动态NAT”。
最后一步是确认NAT按照设置正常运行。
范例:重新将TCP流量定向到其它TCP端口或者地址
互联网中的设备需要同内部设备建立通信连接的另外一个例子是,内部网中存在Web服务器。在一些情况下,可以配置一个内部web服务器,使其
在一个TCP端口而非端口80上侦听web流量。例如,可以配置内部Web服务器来侦听TCP端口8080。在这种情况下,您可以使用NAT来将目的地为
TCP端口80的流量重新指向TCP端口8080。
在
按照上述网络图定义了接口之后,我们可以确定,我们希望NAT将来自外部、目的地址为200.200.200.5:80的数据包重新定向到
172.16.10.8:8080。我们可以采用一个“static nat”命令来转换TCP端口号码,从而实现上述目标。下面是一个配置范例。
NAT 路由器 |
interface ethernet 0 ip address 172.16.10.1 255.255.255.0 ip nat inside !-- 定义Ethernet 0的IP地址,并将其定义为NAT的内部接口。 interface serial 0 ip address 200.200.200.5 255.255.255.252 ip nat outside !--定义serial 0的IP地址,并将其定义为NAT的外部接口。 ip nat inside source static tcp 172.16.10.8 8080 200.200.200.5 80 !-- 静态 NAT命令说明在内部接口上接收到的任何包, !-- 其源地址172.16.10.8:8080将被 !-- 转换成172.16.10.8:80。 |
注意,静态NAT命令的配置描述表明,内部端口所接收到的、源地址为172.16.10.8:8080的所有数据包都将转换为 200.00.200.5:80。这还意味着在外部接口中所接收到的、目的地址为172.16.10.8:80的数据包都会将目的地址转换为 200.00.200.5:8080。
最后一个步骤是检验NAT是否按照设置正常运行。
范例:在网络升级期间使用NAT
在您需要重新分配网络设备地址,或者您正在用一种设备替换另一种设备的时候,NAT非常有用。例如,如果网络中所有设备都使用某一特定服务
器,而且需要用一个有新IP地址的新服务器来更换这个服务器的时候,重新配置所有的网络设备来使用新服务器地址将花费很多时间。在这网络升级期间,您可以
让网络中这些设备仍然用旧地址,而用NAT转换这些设备数据包的地址,使其能够同新的服务器通信。
一旦我们按照上图定义了NAT接口,我们就可以确定我们希望NAT对来自外部、目的地址为旧服务器地址(172.16.10.8)的数据包进
行地址转换,并将其发送到新的服务器地址。注意,新服务器在另外一个LAN上,对于这个LAN上或者能够通过这个LAN(在网络内部部分的设备)连接上的
任何设备,在可能的情况下其配置都应该尽可能使用新的服务器地址。
我们可以使用静态NAT来实现我们的目的。下面是一个范例配置。
配置NAT,用于网络升级期间
NAT 路由器 |
interface ethernet 0 ip address 172.16.10.1 255.255.255.0 ip nat outside !-- 定义Ethernet 0的IP地址,并将其定义为NAT的外部接口。 interface ethernet 1 ip address 172.16.50.1 255.255.255.0 ip nat inside !-- 定义Ethernet 1的IP地址,并将其定义为NAT的内部接口。 interface serial 0 ip address 200.200.200.5 255.255.255.252 !-- 定义serial 0的IP地址, !-- 本接口不参与NAT。 ip nat inside source static 172.16.50.8 172.16.10.8 !-- 说明在内部接口上接收到的任何包, !-- 其源地址172.16.50.8将被转换成172.16.10.8。 |
注意,这个例子中内部的源NAT命令也意味着,外部接口中目的地址为172.16.10.8的数据包,其目的地址将被转换为172.16.50.8。
最后一步是:验证NAT是否在所要求的条件下运行。
范例:在重叠网络中使用NAT
当您把IP地址分配给已经被互联网中其它设备所使用的那些内部设备的时候,就生成了重叠网络。在各自网络中都使用RFC 1918
IP地址的两个公司合并的时候,也会产生重叠网络。这两个网络需要进行通信,但最好不要重新为所有设备分配地址。参考“在重叠网络中使用NAT”来了解为
实现这一目的而配置NAT的详细信息。
检验NAT的运行
一旦您已经完成NAT配置,就需要确认它是否按预期运行。您可以通过多种方式实现这个目的:使用网络分析器、“show”命令或者“debug”命令等。要了解有关NAT检验的详细范例,请参阅“检验NAT运行和基本的NAT故障检测及排除”。
结论
本文中的范例说明了这些快速开始步骤,可以帮助您配置和部署NAT。这些快速开始步骤包括:
- 定义NAT内部和外部接口。
- 定义您想用NAT实现的目标。
- 配置NAT以实现您在步骤2中所定义的目的。
- 检验NAT的运行。
在上面的每一个例子中,我们都使用了不同形式的ip nat inside命令。您还可以使用ip nat
outside命令来实现同样的目的,牢记NAT的运行顺序。要了解ip nat outside命令中的配置范例,请参阅“采用ip nat
outside source list命令进行配置的范例”以及“使用ip nat outside source
static命令进行配置的范例”。
上面的例子还可以用下述方式表达:
命令 |
操作 |
ip nat inside source |
- 转换正从内部流往外部的IP数据包的源地址
- 转换正从外部流入内部的IP数据包的目的地址
|
ip nat outside source |
- 转换正从外部流入内部的IP数据包的源地址
- 转换正从内部流往外部的IP数据包的目的地址
|