企业网络安全建设最佳实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 网络地址转换

所有的IPv4地址有232个,约为42.9亿个,而全球有70多亿人,平均每个人还分不到一个IP地址。IPv4的解决办法是在A类、B类、C类中划分出私有IP地址。但如何将私有 IP 地址转换为公有 IP 地址,用到的技术就是网络地址转换,即 NAT(Network Address Translation)。

NAT 是 1994 年被提出的,就是替换 IP 报文头部的地址信息。NAT 设备通常被部署在一个组织的网络出口位置,通过将内部私有网络IP地址替换为出口的IP地址来提供公网可达性和上层协议的连接能力,NAT 一般是由出口的防火墙或路由器完成的。NAT 的实现方式有三种,即静态转换(Static NAT,一对一)、动态转换(Dynamic NAT,多对多)和端口多路复用(PAT,多对一)。

对于有 Internet 访问需求而使用私有地址的网络,就要在组织的出口位置部署 NAT网关,在报文离开私网进入 Internet 时,将源 IP 地址替换为公网地址(通常是出口设备的接口地址)。

3.3.1 静态转换

静态转换是指将内部本地地址和外部全局地址相互转换,IP 地址对是一对一的,某个私有IP地址只转换为某个公有IP地址,别的私有IP不能使用这个公有IP地址,如图3-14所示。当访问这个公网地址时,该地址会转换为指定的私有IP地址,如果某机构全部使用静态转换访问网络,那么它并没有节约外部全局地址。

图3-14 静态转换

1)NAT的工作原理

(1)NAT 网关上配置静态转换后,在内部地址和外部地址一一映射。假设内部地址10.1.1.1对应外部地址166.1.1.1。

(2)内部主机10.1.1.1需要访问外部主机15.1.1.1上的HTTP服务,内部主机的数据包被发送到外部主机。

(3)NAT 网关在收到内部主机通往外部主机的数据包时,如果配置了 NAT 映射,则将内部主机10.1.1.1的源地址转换为166.1.1.1,然后发送出去。

(4)外部主机收到166.1.1.1(经过NAT)的请求进行应答。

(5)NAT 网关收到外部主机数据包时,检查 NAT 映射表,如果存在,则按照规则将数据包的目的地址修改为内部地址 10.1.1.1,然后进行转换;如果不存在,则会丢弃或拒绝数据包。

2)主要配置

全局模式下:ip nat inside source static 192.168.1.1 (需要转换的内网 IP 地址) 60.208.18.179(转换后的外网IP地址)。

在内网接口启用NAT:ip nat inside。

在外网接口启用NAT:ip nat outside。

3.3.2 动态转换

动态转换是指将内部网络的内部本地地址转换为外部全局地址时,外部全局地址来自一个地址池,所有被授权访问 Internet 的私有 IP 地址可随机转换为任何指定的合法外部全局地址,如图 3-15 所示。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址,就可以进行动态转换。动态转换可以使用多个合法外部地址集。

图3-15 动态转换

1)动态转换的工作原理

(1)在NAT网关上配置动态转换后,内部地址池与外部地址池映射。

(2)在某一时刻,如果内部主机 10.1.1.1 需要访问外部主机 15.1.1.1 上的 HTTP 服务,则内部主机的数据包被发送到外部主机。

(3)NAT 网关在收到内部主机通往外部主机的数据包时,会从外部地址池中选择一个未使用的地址,将内部主机 10.1.1.1 的源地址转换为选定的外部地址,发送出去。然后 NAT 网关记录内部本地地址和内部全局地址的对应关系,并将这种关系写入 NAT 映射表中。

(4)外部主机收到166.1.1.1(经过NAT)的请求,进行应答。

(5)NAT 网关收到外部主机数据包时,检查 NAT 映射表,如果存在,则按照规则将数据包的目的地址修改为内部地址 10.1.1.1,然后进行转换;如果不存在,则会丢弃或拒绝数据包。

2)主要配置

定义内网允许访问外部IP地址:access-list 1 permit 192.168.1.0 0.0.0.255。

定义转换成的 IP 地址池:ip nat pool test0 60.208.18.179 60.208.18.180 netmask 255.255.255.248。

做网络地址转换:ip nat inside source list 1 pool test0。

在内网接口启用NAT:ip nat inside。

在外网接口启用NAT:ip nat outside。

3.3.3 端口多路复用

端口多路复用(Port Address Translation,PAT)是指改变数据包的源端口并进行端口转换,即端口地址转换。采用端口多路复用方式,内部网络的所有主机均可共享一个合法外部 IP 地址实现对 Internet 的访问,从而可以最大限度地节约 IP 地址资源,同时可隐藏网络内部的所有主机,有效避免了来自 Internet 的攻击。因此,网络中应用最多的就是端口多路复用方式,如图 3-16 所示,端口多路复用还可以通过被转换的地址是源地址还是目的地址而分为源地址转换(Source Network Address Translation,SNAT)和目的地址转换(Destination Network Address Translation,DNAT)。

图3-16 端口多路复用

1)端口多路复用的工作过程

(1)在NAT网关上配置端口多路复用转换后,在内部地址池与外部地址池映射。

(2)在某一时刻,如果内部主机 10.1.1.1 需要访问外部主机 15.1.1.1 上的 HTTP 服务,则内部主机使用随机的源端口向外部主机发送HTTP请求(目的端口80)。

(3)NAT 网关在收到内部主机通往外部主机的数据包后,从外部地址池中选择一个未使用的地址,将内部主机10.1.1.1的源地址转换为选定的外部地址。

(4)外部主机收到166.1.1.1(经过NAT转换)的请求,进行应答。

(5)NAT 网关收到外部主机数据包时,检查 NAT 映射表,如果存在,则按照规则将数据包的目的地址修改为内部地址 10.1.1.1,然后进行转换,如果不存在,则丢弃或拒绝数据包。

2)主要配置

定义内网允许访问外部的IP地址:access-list 1 permit 192.168.1.0 0.0.0.255。

定义转换成的 IP 地址池:ip nat pool onlyone 60.208.18.179 60.208.18.179 netmask 255.255.255.248。

做网络地址转换:ip nat inside source list 1 pool onlyone overload。

在内网接口启用NAT:ip nat inside。

在外网接口启用NAT:ip nat outside。