网络工程管理 第六章 网络地址转换NAT
NAT概述
NAT是将一个IP地址转换为另一个IP地址的功能。 通常,一个局域网由于申请不到足够多的IP地址,或 者只是为了编址方便,在局域网内部采用私有IP地址为设备编址,当设备访问外网时,再通过NAT将私有地址翻译为合法地址。
局域网专用IP地址
局域网专用IP地址是Internet特别划分出来的,它们不会注册给任何组织。用户可以使用任意IP作为私有地址,不需要经过注册就可以使用,但这导致这些地址是不唯一的。所以私有地址只能限制在局域网内部使用,不能把它们路由到外网中去。
IP地址范围 | 网络类型 | 网络个数 |
---|---|---|
10.0.0.0~10.255.255.255 | A | 1 |
172.16.0.0~172.31.255.255 | B | 16 |
192.168.0.0~192.168.255.255 | C | 256 |
例如
R1是局域网和外网的边界路由器。局域网中使用私有IP地址进行编址。如果在R1上启用RIP协议,则:
R1(config)# router rip
R1(config-router)# network 200.1.1.0
R1(config-router)# network 192.168.1.0 【错误!!】
这里不应该在私有地址上启用路由,它会导致私有地址被外网路由器学习到,扩大了它的有效范围。
!](https://img-blog.csdnimg.cn/8e080e686a4d449d86a1f36199cd331b.png)
NAT类型
静态NAT
将内部地址和外部地址进行一对一的转换。这种方法要求申请到的合法IP地址足够多,可以与内部IP地址一一对应。 静态NAT一般用于那些需要固定的合法IP地址的主机, 比如Web服务器、FTP服务器、E-mail服务器等。
NAT池(动态NAT)
将多个合法IP地址统一的组织起来,构成一个IP地址池, 当有主机需要访问外网时,就分配一个合法IP地址与内部地址进行转换,当主机用完后,就归还该地址。 对于NAT池,如果同时联网用户太多,可能出现地址耗尽的问题。
PAT(端口NAT)
使用端口多路复用技术,将多个内部地址映射为一个合法地址,用不同的端口号区分各个内部地址。这种方法只需要一个合法IP地址。 路由器支持的PAT会话数是有限制的,所以使用PAT 的局域网,其网络的规模不应该太大。
复用NAT池(复用动态NAT)
将多个合法IP地址构成一个NAT池,使用复用技术映射其中的地址,每个地址有可以对应多台主机,各主机用端口进行区分。 复用NAT池是NAT池和PAT技术的结合,可用于大规模的局域网。
说明:在端口复用技术中,用端口区分的不是一台主机,而是一个网络连接(会话),当一台主机同时建立了多个会话时,它的每个会话会占用一个端口映射。 假如一台路由器支持4000个会话,那么它支持的主机数量会远少于4000台。
TCP负载均衡
如果一个服务器的访问量非常大,我们通常会建立多台映像服务器对访问进行分流。从外部来看,这些服务器的IP地址相同,NAT设备会把多个对服务器的访问映射到不同的服务器上,实现负载均衡。
NAT配置
静态NAT
配置思路:
- 配置内网地址指定的外部地址
- 指定内部接口和外部接口
Router(config)# ip nat inside source static 192.168.1.1 200.10.1.5
Router(config)# ip nat inside source static 192.168.1.2 200.10.1.6
Router(config)# interface e0
Router(config-if)# ip nat inside
Router(config-if)# interface s0
Router(config-if)# ip nat outside
配置完成后,从外网来看,PC1的IP地址是200.10.1.5, PC2的IP地址是200.10.1.6,各计算机都可用此IP地址访 问PC1和PC2。
show ip nat translation
命令可查看活跃的转换。 (静态NAT始终是活跃的) how ip nat statistics
命令可查看转换的统计信息。 静态NAT是一直存在的,管理员可以用“no”命令删除 静态NAT条目。
配置指定端口
如果为web服务器,仅开放80端口:gateway(config)#ip nat inside source static tcp 192.168.1.100 80 202.101.100.3 8080
动态NAT
配置思路:
-
建立一个IP地址池 (外部IP)
Router(config)# ip nat pool 地址池名字 起始IP 结束IP netmask 子网掩码 例:建立一个地址范围为200.1.1.1~200.1.1.10/24的IP地址池。 Router(config)# ip nat pool P1 200.1.1.1 200.1.1.10 netmask 255.255.255.0
-
设定被转换的IP地址范围(内部IP)
被转换的地址范围使用标准访问控制列表进行定义。 比如:被转换的地址是形如192.168.*.*/24的地址,则可定义: Router(config)# access-list 1 permit 192.168.0.0 0.0.255.255 说明:这里定义的ACL不是用于数据过滤的,它只用于指定参与NAT转换的私有地址范围的。所以,我们不必把它用在一个接口上。
-
建立转换关系
Router(config)# ip nat inside source list ACL表号 pool 地址池名字 例:把1号ACL定义的地址与名为P1的地址池建立NAT转换关系。 Router(config)# ip nat inside source list 1 pool P1 说明:经此定义后,每当路由器收到一个数据包就检测它的源地址,如果和1号ACL相匹配,就使用P1中的地址进行NAT转换。
-
设定转换的入口和出口
Router(config)# interface 内部接口 Router(config-if)# ip nat inside Router(config)# interface 外部接口 Router(config-if)# ip nat outside 说明:每种NAT都需要指定内部接口和外部接口
例:内部网络地址为10.0.0.0/8,注册的IP地址是 200.1.1.1~200.1.1.254,用这些地址为内网的各个访问提供NAT翻译。
R1(config)# ip nat pool ippool 200.1.1.1 200.1.1.254
netmask 255.255.255.0
R1(config)# access-list 30 permit 10.0.0.0
0.255.255.255
R1(config)# ip nat inside source list 30 pool ippool
R1(config)# interface f0/0
R1(config-if)# ip nat inside
R1(config-if)# interface s0/0
R1(config-if)# ip nat outside
复用NAT池
当NAT池中的地址耗尽时,会导致后来的主机无法上网。 所以当内网的主机数超过NAT池中的地址数时,通常应配置成复用NAT池,这样每个IP地址可对应多个会话,各个会话用端口号进行区分。 理论上讲,一个IP地址可以映射约65000个会话,但实际 的路由器往往只支持几千个会话(Cisco支持约4000个)。 在复用NAT池中,Cisco首先复用地址池中的第一个地址, 达到能力极限后,再复用第二个地址,依此类推。复用NAT池的配置方法与NAT池的配置方法基本相同。
Router(config)# ip nat inside source list ACL表号 pool 地址池名字 overload
在上面的命令中加上 overload 关键字表示使用端口复用技术。
PAT
PAT是复用NAT池的特例,它是通过端口复用技术用于一个合法IP地址映射内网的所有私有IP地址,这个地址 往往就是路由器出口的IP地址。
PAT的配置方法可以使用复用NAT池的配置方法,只要建立一个起始地址和结束地址相同的NAT池就行了。
如果映射到端口也可以这么配置
R1(config)# access-list 30 permit 10.0.0.0 0.255.255.255
R1(config)# ip nat inside source list 30 interface s0/0 overload
R1(config)# interface f0/0
R1(config-if)# ip nat inside
R1(config-if)# interface s0/0
R1(config-if)# ip nat outside
TCP负载均衡
TCP负载均衡是为了把一个外部的合法地址交替映射到 多个内部地址上,这样可以使多台服务器使用同一个外 部地址进行访问。
跟动态NAT反着 内部IP用NAT池(rotary关键字) 外部IP用ACL
-
建立内部地址池(加上rotary关键字)。
R1(config)# ip nat pool p1 192.168.1.1 192.168.1.2 netmask 255.255.255.0 rotary
-
建立访问控制列表,定义转换的合法IP地址
R1(config)# access-list 1 permit host 200.1.1.1
-
用地址池和访问控制列表建立映射
R1(config)# ip nat inside destination list 1 pool p1
-
指定出入口
对使用TCP负载均衡的各服务器必须建立为镜像服务器, 它们可通过同步保持内容的一致性
子网划分
在一个网络中主机地址全为0的IP是网络地址,全为1的是网络广播地址,不可用。
地址块:60.10.10.0/29
1111 1111 1111 1111 1111 1111 1111 1000
掩码为 255.255.255.248。
地址范围为:60.10.10.0~60.10.10.7,共8个地址。
其中可用的地址是60.10.10.1~60.10.10.6,共6个地址。
例题
NAT配置
R1的配置:采用复用NAT池技术使用6个合法IP地址。
R1(config)# ip nat pool pool1 60.10.10.1 60.10.10.6 netmask 255.255.255.248
R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255
R1(config)# ip nat inside source list 1 pool pool1 overload
R1(config)# interface e0
R1(config-if)# ip address 192.168.1.1 255.255.255.0
R1(config-if)# ip nat inside
R1(config-if)# no shutdown
R1(config)# interface s0
R1(config-if)# ip address 200.1.1.2 255.255.255.0
R1(config-if)# ip nat outside
R1(config-if)# no shutdown
R1(config-if)# exit
在R1上配置默认路由,把所有非本网络的请求都发往外网。
格式:目的IP 子网掩码 下一跳地址
R1(config)# ip route 0.0.0.0 0.0.0.0 200.1.1.1
R2的配置
R2(config)# interface s0
R2(config-if)# ip address 200.1.1.1 255.255.255.0
R2(config-if)# no shutdown
R2(config-if)# interface e0
R2(config-if)# ip address 50.1.1.1 255.0.0.0
R2(config-if)# no shutdown
配置到达网络 60.10.10.0/29 的静态路由:
R2(config)# ip route 60.10.10.0 255.255.255.248 200.1.1.2
关于NAT边界的路由配置问题
局域网和ISP的网络(运营商网络)一般应看作为两个自治系统,所以两者之间不能通过RIP等协议学习路由。 在NAT路由器和与它相连的路由器间一般通过静态路由或默认路由实现两边网络的连通。NAT路由器一般配置通往外网的默认路由 ISP的路由器通过配置静态路由为局域网分配IP地址段。
NAT网关:一般配置成默认路由。
R1(config)# ip route 0.0.0.0 0.0.0.0 下一跳地址
外部路由器:需要为局域网分配地址块。
R2(config)# ip route 地址块 地址块掩码 下一跳地址