1. NAT的含义
当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT(Network Address Translation,网络地址转换)方法。
这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
另外,这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。
2. NAT协议的作用
隐藏内部客户端的身份、隐蔽私有网络设计以及使公共IP地址租用成本最低,这些功能都可以通过使用网络地址转换(NAT)方便地实现。NAT是一种将包头中的内部IP地址转换为公共IP地址,从而在互联网上进行传输的机制。
人们开发NAT是为了允许专用网络使用任何IP地址集,并且不会与具有相同IP地址的公共互联网主机发生冲突或抵触。事实上,NAT将内部客户端的IP地址转换为外部环境中的租用地址。
NAT提供了很多优点,包括:
- 能够只使用一个(或几个)租用的公共IP地址将整个网络连接到互联网;
- 终能够在与互联网通信的情况下, 将RCF1918中定义的私有IP地址用于私有网络;
- NAT通过互联网隐藏IP地址方案和网络拓扑结构;
- NAT还通过限制连接提供了保护,从而使只有来自于内部受保护网络的连接才被准许从互联网返回网络。因此,大多数入侵攻击会被自动击退。
3. IP地址分类
IP被分为A、B、C、D、E五类,如表所示。其中D类子网被用于多播,E类子网被保留将来使用。IP地址由四段组成,每段一个字节八位。
(1) A类:(1.0.0.0-126.0.0.0)第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。
默认子网掩码:255.0.0.0或 0xFF000000
其中私有地址范围是:10.0.0.0~10.255.255.255
(2) B类:(128.0.0.0-191.255.0.0)前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。
默认子网掩码:255.255.0.0或0xFFFF0000
其中私有地址范围是:172.16.0.0~172.31.255.255
(3) C类:(192.0.0.0-223.255.255.0)前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。
子网掩码:255.255.255.0或 0xFFFFFF00
其中私有地址范围是:192.168.0.0~192.168.255.255
(4) D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户。
(5) E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。
IP地址总个数为2^32=4 294 967 296,约为43亿个。其中各类地址的占比如图1所示。
图1. IP各类地址占比
4. NAT模式
从定义上看,NAT将一个内部的IP地址映射为一个外部的IP地址。但是,端口地址转换PAT将一个内部的IP地址映射为一个外部IP地址和端口号的组合。因此,PAT理论上在单个外部租用IP地址上可以支持65536(2^16)个来自内部客户端的同时发生的通信。如果使用NAT,那么租用的公共IP地址数必须与期望同时发生的通信数相同;如果使用PAT,那 么可以租用较少的公共IP地址,内部客户端数量与外部租用IP地址数量的适当比率为100:1。在很多硬件设备和软件产品中都可以找到NAT,这些设备和产品包括防火墙、路由器、网关和代理。NAT只能用在IP网络中,并且在OSI模型的网络层(第3层)上工作。
所有的路由器和通信控制设备被配置为在默认情况下不转发来自或到达这些私有IP地址的通信。换句话说,私有IP地址在默认情况下不进行路由。因此,它们不能直接用于互联网上的通信。然而,它们可以被轻松地用在私有网络中,相应的私有网络可能没有使用路由器,或者可能只对路由器的配置进行了少许改动。通过允许从ISP处租用较少的公共IP地址,结合使用私有IP地址与NAT能够大大减少连接互联网的成本。
可以使用的NAT有两种模式:静态NAT和动态NAT:
- 静态NAT:将特定的内部客户端的IP地址永久地映射到特定的外部公共IP地址时,就会使用静态模式的NAT;
- 动态NAT:动态模式的NAT允许多个内部客户端使用较少的租用公共IP地址。因此,即使租用的公共IP地址较少,较大的内部网络也仍然能够访问互联网。这种模式使出现公共IP地址滥用的情况最少,并且将互联网访问成本降至最低。
在动态模式的NAT实现中,NAT系统维护了一个映射数据库,从而使来自互联网服务的所有响应信息正确地路由至最初的内部请求客户端。NAT常常与代理服务器或代理防火墙相结合,从而提供额外的互联网访问和内容缓存功能。
因为NAT更改了数据包头,而IPSec依赖数据包头来阻止安全违规,所以NAT并不直接与 IPSec相容。不过,某些版本的NAT代理被设计为在NAT上支持IPSec。IPSec是一种基于标准的机制,这种机制为点对点TCP/IP通信提供了加密保护。
5. NAT应用实例
下面我们采用仿真软件Cisco Packet Tracer来演示实际的网络部署,软件的下载地址及仿真的工程文件下载地址如下:
链接:https://pan.baidu.com/s/1DLJVuXu5kRmpgCCr7Czfpg
提取码:w5og
网络的拓扑结构和IP地址配置如图2.所示,内网地址为192.168.1.*, 外网服务器的地址配置为2.2.2.2
图2. 网络拓扑及地址
为了便于说明,我们首先明确四类地址的范围来定义企业内部、外部:
- 内部本地地址:企业内部的私有地址
- 内部全局地址:私有地址转换成为的公有地址
- 外部全局地址:internet上的公有地址
- 外部本地地址:internet上的公有地址转换成为的企业内部私有地址
(1) 配置IP地址
配置路由器R1的地址,f0/0的地址为192.168.1.200,255.255.255.0,f0/1的地址为 12.1.1.1 255.255.255.0。配置命令如下:
- R1>en
- R1#conf t
- Enter configuration commands, one perline. End with CNTL/Z.
- R1(config)#int f0/0
- R1(config-if)#ip add 192.168.1.200 255.255.255.0
- R1(config-if)#no sh
- R1(config-if)#
- R1(config-if)#int f0/1
- R1(config-if)#ip add 12.1.1.1 255.255.255.0
- R1(config-if)#no sh
配置路由器R2的地址,f0/0的地址为12.1.1.2 255.255.255.0,f0/1的地址为2.2.2.200 255.255.255.0。
- R2>en
- R2#conf t
- Enter configuration commands, one perline. End with CNTL/Z.
- R2(config)#int f0/0
- R2(config-if)#ip add 12.1.1.2 255.255.255.0
- R2(config-if)#no sh
- R2(config-if)#
- R2(config-if)#int f0/1
- R2(config-if)#ip add 2.2.2.200 255.255.255.0
- R2(config-if)#no sh
配置结果如图3所示,
图3. IP配置结果
配置路由器R1,配置内容是接口f0/0连接的是企业内部私有地址,f0/1连接的是internet上的公有地址。配置命令如下:
- R1>en
- R1#conf t
- Enter configuration commands, one perline. End with CNTL/Z.
- R1(config)#int f0/0
- R1(config-if)#ip nat inside
- R1(config-if)#exit
- R1(config)#int f0/1
- R1(config-if)#ip nat outside
- R1(config-if)#exit
(2) 创建NAT转换表
a. 静态NAT
- R1(config)#ip nat inside source static ?
- A.B.C.D Inside local IP address
- tcp Transmission ControlProtocol
- udp User Datagram Protocol
- R1(config)#ip nat inside source static192.168.1.1 ?
- A.B.C.D Inside global IP address
- R1(config)#ip nat inside source static192.168.1.1 12.1.1.11
- R1(config)#ip nat inside source static192.168.1.2 12.1.1.12
- R1(config)#end
- R1#
- %SYS-5-CONFIG_I: Configured from console byconsole
- R1#show ip nat tr
- R1#show ip nat translations
- Pro Inside global Insidelocal Outside local Outside global
- --- 12.1.1.11 192.168.1.1 --- ---
- --- 12.1.1.12 192.168.1.2
静态NAT特点:一对一的对应关系,可以由外界主动访问内部做地址转换
b. 动态NAT
第一步:删除已建立的静态NAT
- R1#conf t
- Enter configuration commands, one perline. End with CNTL/Z.
- R1(config)#no ip nat inside source static192.168.1.2 12.1.1.12
- R1(config)#no ip nat inside source static192.168.1.1 12.1.1.11
- R1(config)#end
- R1#
- %SYS-5-CONFIG_I: Configured from console byconsole
- R1#show ip nat translations
第二步:匹配需要转换的数据包;
- R1(config)#access-list 1 permit 192.168.1.00.0.0.255
第三步:定义转换成为的地址池;
- R1(config)#ip nat pool BB 12.1.1.1112.1.1.12 netmask 255.255.255.0
第四步:关联数据包和地址池;
- R1(config)#ip nat inside source list 1 poolBB
- R1#show ip nat translations
- Pro Inside global Insidelocal Outside local Outside global
- icmp 12.1.1.11:10 192.168.1.1:10 2.2.2.2:10 2.2.2.2:10
- icmp 12.1.1.11:11 192.168.1.1:11 2.2.2.2:11 2.2.2.2:11
- icmp 12.1.1.11:12 192.168.1.1:12 2.2.2.2:12 2.2.2.2:12
- icmp 12.1.1.11:9 192.168.1.1:9 2.2.2.2:9 2.2.2.2:9
动态NAT特点:一对一的对应,由客户端触发NAT,不能由外部主动访问客户端
c. PAT 地址复用
- R1(config)#ip nat inside source list 1 poolBB overload
- R1#show ip nat translations
- Pro Inside global Insidelocal Outside local Outside global
- icmp 12.1.1.11:13 192.168.1.1:13 2.2.2.2:13 2.2.2.2:13
- icmp 12.1.1.11:14 192.168.1.1:14 2.2.2.2:14 2.2.2.2:14
- icmp 12.1.1.11:15 192.168.1.1:15 2.2.2.2:15 2.2.2.2:15
- icmp 12.1.1.11:16 192.168.1.1:16 2.2.2.2:16 2.2.2.2:16
我们以静态的NAT为例,验证从PC1是否可以ping通Server
通过上图可以看出,PC1到Server之间是通的。下面我们挨个的看一下整个发包测试的流程:
第一步:PC1发包,Src.IP=192.168.1.1, Dest.IP=2.2.2.2
第二步:交换机转发,按照MAC地址转发
第三步:路由器R1的NAT转换,地址由原来的:Src.IP=192.168.1.1, Dest.IP=2.2.2.2,变为了 Src.IP=12.1.1.11, Dest.IP=2.2.2.2。其中192.168.1.1与12.1.1.11为NAT表定义的静态地址转换协议。
第四步:路由器路由转发 Src.IP=12.1.1.11, Dest.IP=2.2.2.2
第五步:Server接收包,并回复确认,目的地址和源地址互换。Src.IP=2.2.2.2, Dest.IP=12.1.1.11。
第六步:路由器R2路由转发,Src.IP=2.2.2.2, Dest.IP=12.1.1.11
第七步:路由器R1地址转化,流程是第三步逆过程。
第八步:交换机转发,根据MAC地址
第九步:PC机接收确认,Src.IP=2.2.2.2, Dest.IP=192.168.1.1