NAT网关没有那么神秘,看完此文您就全懂啦!
当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
在Cisco路由器上逐步配置NAT(PAT,静态NAT,端口重定向)
公共IPv4地址空间的耗尽迫使互联网社区考虑寻址网络主机的替代方法。
因此,引入了网络地址转换(NAT)以克服随着因特网的快速扩展而发生的这些寻址问题。
即使NAT被建议作为临时解决方案,它也被所有网络硬件制造商采用,并且它被认为是一种非常有用的技术,不仅用于IP地址保护,还用于许多其他目的,包括安全性。
基本上,NAT允许单个网络设备(例如,路由器,防火墙等)充当私有局域网和诸如因特网的公共网络之间的代理。
此NAT设备的目的是将内部网络主机的源IP地址转换为可公共路由的IP地址,以便与Internet通信。
在IP网络中使用NAT的一些优点如下:
NAT有助于缓解全球公共IP地址空间的耗尽
网络现在可以在内部使用RFC 1918专用地址空间,并且仍然可以使用NAT访问Internet。
NAT通过隐藏内部网络拓扑和寻址方案来提高安全性。
Cisco IOS路由器支持不同类型的NAT,如下所述。NAT有多种形式,可以通过多种方式工作,但在这篇文章中,我将解释最重要的NAT类型。
对于接下来的两个场景,我们将使用以下简单网络:
1.重载或端口地址转换(PAT)
这是IP网络中最常用的NAT形式。它使用“多对一”转换的概念,其中来自不同内部主机的多个连接使用不同的源端口号“多路复用”为单个注册(公共)IP地址。
这种类型的NAT允许最多65,536个内部连接转换为单个公共IP。在我们的ISP仅为我们分配了一个公共IP地址的情况下,这种类型的NAT非常有用,如下图所示。
LAN网络(192.168.1.0/24)的所有IP地址将使用路由器的公共IP(20.20.20.1)进行转换。
接口FastEthernet0 / 0
ip地址20.20.20.1 255.255.255.0
ip nat外
!
接口FastEthernet0 / 1
ip地址192.168.1.1 255.255.255.0
ip nat里面
!
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 interface FastEthernet0 / 0 overload
2.静态端口地址转换(端口重定向)
现在假设我们只有一个公共IP地址,它是在我们的边界路由器的外部接口上配置的IP地址。我们希望流量在端口80上的路由器的公共IP 20.20.20.1被重定向到我们的内部Web服务器,IP 192.168.1.10
接口FastEthernet0 / 0
ip地址20.20.20.1 255.255.255.0
ip nat外
!
接口FastEthernet0 / 1
ip地址192.168.1.1 255.255.255.0
ip nat里面
!
ip nat inside source static tcp 192.168.1.10 80 20.20.20.1 80
3.配置静态NAT
NAT可以静态和动态地执行。静态NAT只是将一个私有IP地址映射到单个公共IP地址,这就是我们在本节中讨论的NAT的风格。
执行NAT的Cisco路由器将其Universe划分为内部和外部。通常,内部是私人企业,外部是公共互联网。除了内部和外部的概念之外,cisco nat路由器还将地址分类为本地或全局。
本地地址是内部设备可以看到的地址,全局地址是外部设备可以看到的地址。鉴于这四个术语,地址可能是以下四种类型之一:
内部本地地址分配给内部设备。这些地址不会向外界公布。
内部全局是外部已知内部设备的地址。
在本地之外是内部已知外部设备的地址。
外部全局地址分配给外部设备。这些地址不会在内部公布。
让我们直接进入Cisco路由器上的静态NAT配置,如下图所示:
R1是执行网络地址转换(NAT)的路由器,有两个接口:内部为Fa0 / 0,外部为Fa0 / 1。涉及的具体IP地址是:
NAT地址类型
IP地址
在当地
192.168.1.2
全球内部
89.203.12.47
在当地以外
202.14.35.28
全球之外
202.14.35.28
表1 上图中的NAT地址
您可能非常清楚如何在路由器接口上配置IP地址,因此我们跳过这些配置步骤直接转到有趣的东西。首先,我们必须将Fa0 / 0指定为接口内的NAT,将Fa0 / 1指定为R1上的NAT外接口。这将告诉路由器进入或退出这两个接口的有趣流量将受地址转换的影响。
R1#conf term
输入配置命令,每行一个。以CNTL / Z结束。
R1(config)#interface Fa0 / 0
R1(config-if)
R1 内的#ip nat (config-if)#interface Fa0 / 1
R1(config-if)#ip nat
R1(config-if)#end
现在我们告诉路由器如何执行地址转换,并提及在内部和外部接口之间移动的数据包中重写的IP地址(源或目标)。开始了:
R1(config)#ip nat inside source static 192.168.1.2 89.203.12.47
在这里,我们告诉路由器对进入内部接口Fa0 / 0的路由器的数据包执行NAT。更具体地说,路由器将识别这些分组中的哪些具有192.168.1.2的源IP地址,并且在将分组转发出外部接口Fa0 / 1之前将其改变为89.203.12.47。类似地,进入外部接口Fa0 / 1的返回数据包将经历目标IP地址的转换。
现在让我们验证NAT是否真正起作用,因为它应该工作。有几个非常有用的Cisco IOS命令可以用来做到这一点。命令show ip nat statistics显示静态和动态NAT转换的数量,内部和外部接口以及命中和未命中数。
R1#show ip nat statistics
总有效转换:1(1个静态,0个动态; 0个扩展)
外部接口:
FastEthernet0 / 1
内部接口:
FastEthernet0 / 0
命中:0未命中:0
CEF转换数据包:0,CEF打孔数据包:0
过期转换:0
动态映射:
Appl门:0
普通门:0
排队数据包:0
命令show ip nat translations显示NAT转换的IP地址。
R1#show ip nat translations
Pro Inside global Inside本地外部本地外部全球
– 89.203.12.47 192.168.1.2 – –
正如您在上面的输出中看到的,我们有一个NAT条目配置了Inside全局地址89.203.12.47和Inside本地地址192.168.1.2指定。外部本地和外部全局地址是空白的,因为我们的NAT配置不会更改这些地址。
使用TCP拦截来缓解DoS SYN攻击
现在让我们进入PC并ping服务器,然后再次运行命令show ip nat translations,看看它是否有任何区别。
R1#show ip nat statistics
总有效转换:2(1个静态,1个动态; 1个扩展)
外部接口:
FastEthernet0 / 1
内部接口:
FastEthernet0 / 0
命中:10个未命中:0个
CEF转换后的数据包:10,CEF打孔数据包:0
过期转换:0
动态映射:
Appl门:0
普通门:0
排队数据包:0
R1#show ip nat translations
Pro Inside global Inside本地外部本地外部全球
icmp 89.203.12.47:1 192.168.1.2:1 202.14.35.28:1 202.14.35.28:1
– 89.203.12.47 192.168.1.2 – –
正如您在上面的输出中所看到的,NAT是活动的,表现为ICMP协议的附加动态条目的出现以及一些额外的命中,对应于我们从PC到服务器的ping尝试。
我们刚刚配置并验证了一个简单的NAT场景,只转换源或目标(不是同时)在内部和外部接口之间移动的数据包的IP地址。这种NAT配置称为静态NAT,因为单个内部本地IP地址静态映射到单个外部本地IP地址。
NAT的另一个重要特性是静态端口地址转换(PAT)。静态PAT旨在允许本地和全局地址之间的一对一映射。静态PAT的常见用途是允许来自公共网络的Internet用户访问位于专用网络中的Web服务器。
假设我们打算在同一台PC上内部托管一台Web服务器,其IP地址为192.168.1.2。以下配置行将允许我们这样做:
R1(config)#ip nat inside source static tcp 192.168.1.2 80 89.203.12.47 80
此配置行执行Web服务器的静态地址转换。使用此配置行,尝试访问89.203.12.47端口80(www)的用户将自动重定向到192.168.1.2端口80(www)。在我们的例子中,192.168.1.2是PC的IP地址,也是Web服务器。可以使用相同的两个NAT验证命令验证此配置:show ip nat translations和show ip nat statistics。
请注意,端口号为80(HTTP)的地址89.203.12.47转换为192.168.1.2端口80,反之亦然。因此,即使Web服务器位于具有专用IP地址的专用网络上,Internet用户也可以浏览Web服务器。