1.NAT简介
IPv4地址的长度为32比特,针对于目前全世界人口来说,IPv4地址的数量非常有限,因此在进行IP划分的时候,分为了私网地址和公网地址。同时,在互联网环境中,为了保证内网数据的安全性,公网中不能有私网路由。当内网访问互联网时,就需要将内网地址转换成公网地址进行访问,这个技术就是NAT(网络地址转换)技术。
2.静态NAT
静态NAT是通过手工指定,将一个公网地址和一个私网地址映射,是一对一的关系。
由于公网中不能有私网的路由,因此当R1的内网PC1通过互联网访问外网的服务器时,需要进行地址的转换。将内网地址192.168.1.1转换成公网地址201.1.100.1。在出口路由器R1上,会维护一张NAT的静态地址映射表。
静态NAT映射表 | |
内网地址 | 公网地址 |
192.168.1.1 | 201.1.100.1 |
当R1内网通过互联网访问外网服务器时,源地址192.168.1.1,目的地址202.1.100.2。数据到达R1,R1根据路由的出接口,查看出接口下的NAT地址转换,数据变为源地址201.1.100.1,目的地址202.1.100.2。R2在回复数据时,源地址202.1.100.2,目的地址201.1.100.1。回复数据到达R1,R1发现目的地址是201.1.100.1,查看静态NAT映射表,将数据转成源地址202.1.100.2,目的地址192.168.1.1,最终到达PC1。
静态NAT配置:
方式一:
[r1]nat static global 201.1.100.1 inside 192.168.1.1 ---配置静态NAT映射
[r1-GigabitEthernet0/0/0]nat static enable ---接口下使能静态NAT功能
方式二:
[r1-GigabitEthernet0/0/0]nat static global 201.1.100.1 inside 192.168.1.1 ----直接在接口下配置静态NAT映射
3.动态NAT
静态NAT虽然可以解决让内网主机访问外网的问题,但是由于静态NAT是一对一的映射,每一个私网都要一个公网地址才能进行访问,过于浪费公网地址,而且公网地址并不是免费的,购买公网地址需要高昂的费用。为了解决这一问题,可以通过动态NAT的方式来进行公网和私网的转换。
动态NAT需要创建一个公网地址池,在地址池中存放多个公网地址,每当一台内网主机需要访问公网时,都可以在公网地址池中选择一个空闲的公网地址使用,当主机不再需要访问互联网时,就会把公网地址释放到公网地址池中,然后可以分配给其他的主机使用。
公网地址池 |
201.1.100.1:inuse |
201.1.100.2:inuse |
地址映射表 | |
201.1.100.1 | 192.168.1.1 |
201.1.100.2 | 192.168.2.1 |
当R1内网PC1通过互联网访问外网服务器时,源地址192.168.1.1,目的地址202.1.100.2。数据到达R1,R1根据路由的出接口,查看出接口下的NAT地址转换,将地址池中空闲的地址分配一个给内网做转换,数据变为源地址201.1.100.1,目的地址202.1.100.2,并加载到session会话表中。R2在回复数据时,源地址202.1.100.2,目的地址201.1.100.1。回复数据到达R1,R1发现目的地址是201.1.100.1,根据NAT的session表,查看协议以及源目IP的映射关系,将数据转成源地址202.1.100.2,目的地址192.168.1.1,最终到达PC1。
同时当R1内网PC2通过互联网访问外网服务器时,源地址192.168.2.1,目的地址202.1.100.2。数据到达R1,R1根据路由的出接口,查看出接口下的NAT地址转换,此时地址池中只有201.1.100.2是空闲的,因此数据变为源地址201.1.100.2,目的地址202.1.100.2,并把映射关系加载到session表中。R2在回复数据时,源地址202.1.100.2,目的地址201.1.100.2。回复数据到达R1,R1发现目的地址是201.1.100.2,查看NAT的session表,查看协议以及源目IP的映射关系,将数据转成源地址202.1.100.2,目的地址192.168.2.1,最终到达PC2。
当内网终端不需要访问互联网时,会将使用的公网地址释放到公网地址池中。
NAT的session会话表,是记录当前会话信息的。在session表中,会包含协议类型,源目IP地址,端口号,转换后的新源目地址以及新端口号。当相应协议的通信结束后,session表中的会话记录就会删除掉。
NAT的session会话表:
此次通信,源地址192.168.1.1,目的地址205.100.2.2,源端口51541,经过NAT转换后,新的源变成了202.1.100.1,新的端口是11143。
动态NAT配置:
[r1]nat address-group 1 201.1.100.1 201.1.100.5 ---创建地址池
[r1]acl 2000 ----创建基本acl 2000
[r1-acl-basic-2000]rule 5 permit source 192.168.1.1 0 ----匹配要转换的内网地址
[r1-acl-basic-2000]rule 10 permit source 192.168.2.1 0 ----匹配要转换的内网地址
[r1-GigabitEthernet0/0/0]nat outbound 2000 address-group 1 no-pat ----接口出方向配置NAT动态转换
4.NAPT
动态NAT虽然可以解决静态NAT浪费过多公网地址,费用成本过高的问题,但是动态NAT支持的并发上网主机数量,和地址池中的公网地址数量有关,因此,当有大量内网用户需要同时上网时,动态NAT不支持这么大的并发,而且公网地址池中的地址也需要一定的成本。
NAPT,网络地址端口转换可以通过使用一个公网地址的不同端口号,来映射不同的私网地址和端口号,提升了公网地址的使用效率以及可以支持内网终端上网的并发数量。
当不同的私网地址访问公网时,不仅把内网地址转换成地址池中的公网地址,还可以把内网源端口更改为公网地址的端口,可以实现一个公网映射多个私网地址的功能。
192.168.1.1访问web服务器时,源端口号为10321,在NAT路由器上,将源地址转换成122.1.2.2,源端口号转换成1025,建立session会话表项,当web服务器回包时,目的IP为122.1.2.2,源端口号为1025,NAT路由器查看session表,根据会话项再将目的地址转换成192.168.1.1,目的端口号转换成10321。
NAPT配置:
[r1]nat address-group 1 201.1.100.1 ---创建地址池
[r1]acl 2000 ----创建基本acl 2000
[r1-acl-basic-2000]rule 5 permit source 192.168.1.1 0 ----匹配要转换的内网地址
[r1-acl-basic-2000]rule 10 permit source 192.168.2.1 0 ----匹配要转换的内网地址
[r1-GigabitEthernet0/0/0]nat outbound 2000 address-group 1 ----接口出方向配置NAPT
5.Easy IP
NAPT需要创建地址池来进行地址转换,通常我们只有出口路由器上有一个公网地址,因此,easy ip是NAPT的简化版本,直接使用出接口的地址作为公网地址,不需要再创建地址池。
easy ip 配置:
[r1]acl 2000 ----创建基本acl 2000
[r1-acl-basic-2000]rule 5 permit source 192.168.1.1 0 ----匹配要转换的内网地址
[r1-acl-basic-2000]rule 10 permit source 192.168.2.1 0 ----匹配要转换的内网地址
[r1-GigabitEthernet0/0/0]nat outbound 2000 ----接口出方向配置easy ip
----------------------------------------------------------------------------
[r1-GigabitEthernet0/0/0]nat outbound 2000 inrterface loopback 0 ----也可以引用loopback接口作为公网地址在接口出方向做NAT转换
6.NAT Server
在互联网中,除了内网访问外网意外,还会有内网向外网提供服务的场景,在静态NAT模式下,可以实现内网和外网之间的互通,但是成本太大。easy ip是使用出接口地址和端口号作为公网地址和端口的转换的,因此,我们可以使用NAT Server的方式,将内网的地址和端口映射为公网的地址和端口,供外网来访问。当外网访问映射的公网IP和端口时,相当于是访问的内网的IP地址和端口号。
NAT Server配置:仅仅对外提供telnet服务
[r1-GigabitEthernet0/0/0]nat server protocol tcp global current-interface 2323 inside 192.168.1.1 23 ----将当前接口的2323端口映射成为内网地址的23端口
NAT Server配置:对外提供所有服务
[r1-GigabitEthernet0/0/0]nat server global 202.1.100.1 inside 192.168.1.1
7.NAT实验
拓扑:
描述:PC1模拟公司内网主机,R1为出口路由器,配置Easy IP转换内网地址,配置缺省路由指向R2,R2为公网路由器,内部有台服务器需要对外提供FTP服务,将内网21端口映射为出口公网IP的2121端口对外提供服务。
基本信息:
设备 | 接口 | IP地址 | 子网掩码 | 网关 |
PC1 | E0/0/1 | 192.168.1.1 | 24 | 192.168.1.254 |
Server | E0/0/0 | 192.168.2.1 | 24 | 192.168.2.254 |
Client | E0/0/0 | 205.100.2.2 | 24 | 205.100.2.3 |
R1 | G0/0/0 | 202.1.100.1 | 24 | |
G0/0/1 | 192.168.1.254 | 24 | ||
G0/0/2 | 192.168.2.254 | 24 | ||
R2 | G0/0/0 | 202.1.100.2 | 24 | |
G0/0/1 | 205.100.2.3 | 24 | ||
loopback0 | 205.100.2.2 | 32 |
R1配置:
#
acl number 2000
rule 5 permit source 192.168.1.0 0.0.0.255
#
interface GigabitEthernet0/0/0
ip address 202.1.100.1 255.255.255.0
nat server protocol tcp global current-interface 2121 inside 192.168.2.1 ftp
nat outbound 2000
#
interface GigabitEthernet0/0/1
ip address 192.168.1.254 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 192.168.2.254 255.255.255.0
#
ip route-static 0.0.0.0 0.0.0.0 202.1.100.2
R2配置:
#
interface GigabitEthernet0/0/0
ip address 202.1.100.2 255.255.255.0
#
interface LoopBack0
ip address 205.100.2.2 255.255.255.255
PC1ping测试:
公网抓包查看: 公网访问内网FTP服务器: