一、简介
NAT(Network Address Translation)网络地址转换,主要用于私网地址和公网地址的转换,解决IPv4地址短缺的问题。
二、NAT的特征
1、IPv4私有地址空间
众所周知,目前没有足够的IPv4地址,让所有设备都能使用唯一的地址来访问互联网。许多的企业或者园区网络设备都使用 RFC 1918 中定义的私有地址。
私有地址范围
类 | 范围 | 前缀 |
---|---|---|
A | 10.0.0.0 - 10.255.255.255 | 10.0.0.0/8 |
B | 172.16.0.0 - 172.31.255.255 | 172.16.0.0/12 |
C | 192.168.0.0 - 192.168.255.255 | 192.168.0.0/16 |
这些地址可以在企业或站点内部使用,允许本地通信。但是私有地址是无法在互联网上路由的,因此,为了让具有私有地址的设备能够访问互联网上的资源,就必须将私有地址转换为公有地址。
NAT就提供了私有地址和公有地址的转换。
2、NAT的工作原理
NAT通常工作在一个网络的出口或者边界设备上(下图的R2)。从内部访问互联网的流量都需要经过这个设备。
工作原理:(看上图)
-
PC1向服务器通信
源IP:192.168.10.10
目的IP:209.165.201.1
当PC1的数据到达R2,R2将修改PC1的源IP(可能修改为209.165.200.1)
源IP:209.165.200.1
目的IP:209.165.201.1 -
服务器回复PC1
源IP:209.165.201.1
目的IP:209.165.200.1
当数据到达R2,R2将目的IP修改为PC1的IP地址
源IP:209.165.201.1
目的IP:192.168.10.10
3、NAT地址术语
- 内部本地地址:网络内部设备看到的源地址
- 内部全局地址:网络外部设备看到的源地址
- 外部本地地址:网络内部设备看到的目的地址
- 外部全局地址:网络外部设备看到的目的地址
如上图对应的地址:
- 内部本地地址:192.168.10.10
- 内部全局地址:209.165.200.226
- 外部本地地址:209.165.201.10
- 外部全局地址:209.165.201.10
三、NAT类型
1、静态NAT
静态NAT就是本地地址和全局地址的一对一映射。
一台服务器既要为内网提供资源,又要对公网用户提供资源就需要静态NAT
如图所示:Web内部用户使用192.168.10.254进行访问,公网用户使用209.165.201.5进行访问
1)配置
①根据拓扑配置IP地址
②配置静态NAT
配置静态NAT
R1(config)#ip nat inside source static 192.168.10.254 209.165.200.254
挂接接口
R1(config)#interface g0/0 进入接口
R1(config-if)#ip nat outside 设置NAT的出方向
R1(config)#interface g0/1 进入接口
R1(config-if)#ip nat inside 设置NAT的入方向
③验证
外部客户端访问服务器
内部主机访问服务器
R1#show ip nat translations查看活跃的NAt转换
2、动态NAT
动态 NAT 使用公有地址池,并以先到先得的原则分配这些地址。内部设备请求访问外部网络时,动态 NAT 分配该池中的可用公共 IPv4 地址。
如果公网地址池中的地址分配完了,此时又有一个主机要访问互联网,这台主机将等前面的主机用完后,才会将空闲的公网地址分配给该主机,这是才能正常上网。(动态NAT需要有足够多的地址)
1)配置
①根据拓扑配置IP地址
②配置动态NAT
1、创建地址池(2个公网地址)
R1(config)#ip nat pool NAT1 209.165.200.10 209.165.200.11 netmask 255.255.255.0
2、创建标准ACL
R1(config)#access-list 1 permit 192.168.10.0 0.0.0.255
3、绑定ACL和地址池
R1(config)#ip nat inside source list 1 pool NAT1
4、挂接接口
R1(config)#interface g0/1
R1(config-if)#ip nat inside
R1(config-if)#interface g0/0
R1(config-if)#ip nat outside
配置一条默认路由
R1(config)#ip route 0.0.0.0 0.0.0.0 g0/0
③验证
PC1和PC2都能访问web服务器,PC3无法访问
R1#show ip nat translations查看地址转换
R1#clear ip nat translation 可以清空转换表
3、PAT(端口地址转换)
端口地址转换 (PAT)(也称为 NAT 过载),将多个私有 IPv4 地址映射到单个私有 IPv4 地址或几个地址。
PAT 可以将多个地址映射到一个或少数几个地址,因为每个私有地址也会用端口号加以跟踪。当 NAT 路由器收到来自客户端的数据包时,将使用其源端口号来唯一确定特定的 NAT 转换。
NAT和PAT比较
NAT | PAT |
---|---|
内部本地地址和内部全局地址之间一对一映射 | 一个内部全局地址可以被映射为多个内部本地地址 |
在转换过程中只会使用IPv4地址 | 在转换中使用 IPv4 地址和 TCP 或 UDP 源端口号 |
每个内部主机在访问外部网络时 都需要唯一的内部全局地址 | 多个内部主机在访问外部网络时 可以共享单个内部全局地址 |
1)配置
①根据拓扑配置IP地址
②配置PAT(在NAT的基础上添加overload)
1、使用地址池配置PAT(最大的区别在第三步)
1、创建地址池(2个公网地址)
R1(config)#ip nat pool NAT1 209.165.200.10 209.165.200.11 netmask 255.255.255.0
2、创建标准ACL
R1(config)#access-list 1 permit 192.168.10.0 0.0.0.255
3、绑定ACL和地址池
R1(config)#ip nat inside source list 1 pool NAT1 overload
4、挂接接口
R1(config)#interface g0/1
R1(config-if)#ip nat inside
R1(config-if)#interface g0/0
R1(config-if)#ip nat outside
配置一条默认路由
R1(config)#ip route 0.0.0.0 0.0.0.0 g0/0
1、使用单个IPv4地址配置PAT(最大的区别在第二步)
1、创建标准ACL
R1(config)#access-list 1 permit 192.168.10.0 0.0.0.255
2、绑定ACL和地址
R1(config)#ip nat inside source list 1 interface g0/0 overload
3、挂接接口
R1(config)#interface g0/1
R1(config-if)#ip nat inside
R1(config-if)#interface g0/0
R1(config-if)#ip nat outside
配置一条默认路由
R1(config)#ip route 0.0.0.0 0.0.0.0 g0/0
③验证
R1#show ip nat translations查看地址转换
使用同一个内部全局地址访问web服务器