欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

网络地址转换(NAT)的原理和配置

最编程 2024-07-14 09:12:43
...

    随着网络的发展,公用IP地址的需求与日俱增。为了缓解公用IP地址的不足,并且保护公司内部服务器的私网地址,可以使用NAT(Network Address Translation,网络地址转换)技术将私网地址转化成为公网地址,缓解IP地址的不足,并且隐藏内部服务器的私网地址。


NAT的概述与现实方式

1. NAT概念

   网络地址转换(NAT)通过将内部网络的私有IP地址翻译成全球唯一的公网IP地址,使内部网络可以连接到互联网等外部网络上,广泛应用于各种类型的互联网接入方式和各种类型的网络中。原因很简单,NAT不仅解决了IP地址不足的问题,而且还能够隐藏内部网络的细节,避免来自网络外部的攻击,起到一定的安全作用。

   借助于NAT,私有保留地址的内部网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,这样一个局域网只需要少量地址(甚至是一个),即可实现使私有地址网络中的所有计算机与互联网的通信需求。


2. NAT的实现方式

NAT的实现方式有以下三种:

* 静态转换(Static Translation)

* 动态转换(Dynamic Translation)

* 端口多路复用(Port Address Translation,PAT)

   静态转换IP地址的对应关系是一对一且不变的,并没有节约公用IP地址,只是隐藏了主机的真实地址。动态转换虽然在一定情况下节约了公用IP地址,但是当内部网络同时访问Internet的主机数大于合法地址池中的IP地址数时就不适用了。端口多路复用可以使所有的内部网络主机共享一个合法的外部IP地址,从而最大限度的节约IP地址资源。

   由于动态转换形成的IP地址的对应关系是不确定的、随机的;端口多路复用使用的是端口号的转换,也是不确定的,所以内网服务器不能使用这两种转换方式,这是由于外网用户无法确定服务器合法的公网IP地址,导致无法访问服务器。这时使用静态转换将私有IP地址转换为固定的合法的IP地址,这样服务器有了固定的合法的公网IP地址,才能实现外网的访问。


NAT的术语与转换表

内部局部IP地址(Inside Local IP Address):在内部网络中分配给主机的私有IP地址。该地址是从RFC1918(私有互联网空间地址分配)所定义的私有地址空间中分配的,或者随机挑选的。

内部全局IP地址(Inside Global IP Address):一个合法的IP地址(由NIC或网络服务提供商分配)。它对外代表一个或多个内部局部IP地址。该地址通常是从全球统一可寻址的地址空间中分配的,一般由互联网服务提供商(ISP)提供。

外部局部IP地址(Outside Global IP Address):由其所有者给外部网络上的主机分配的IP地址。该地址通常也是从全球统一可寻址的地址空间中分配的。

外部局部IP地址(Outside Local IP Address):外部主机表现在内部网络的IP地址。这一地址是从内部可寻址的地址空间中分配的,很可能是从诸如RFC1918中所定义的保留地址空间分配的。

简单转换条目(Simple Translation Entry):将一个IP地址映射到另一IP地址的转换条目。

扩展转换条目(Extended Translation Entry):映射IP地址和端口到另一对IP地址和端口的条目。


NAT的特性

NAT的典型优势如下:

1.NAT允许企业内部网使用私有地址,并通过设置合法的地址集,使内部网可以与互联网进行通信,从而达到节省合法注册地址的目的。

2.NAT可以减少规划地址时发生的地址重叠情况。

3.NAT增强了内部网络与公用网络连接时的灵活性。

4.NAT支持地址重叠。

   当然,NAT也不是没有缺点。用于地址转换的处理过程会带来功能和性能上的一些损失,特别是在IP报文承载的数据中包含发送IP地址信息的情况下。


NAT的典型缺点如下:

1.NAT会使延迟增大。

2.NAT增加了配置和排错的复杂性。

3.NAT也可能会使某些需要使用内嵌IP地址的应用不能正常工作,因为它隐藏了端到端的IP地址。


NAT的配置

1.静态NAT配置

  一个私有地址对应一个公有地址,向外网发布服务器。

(1) 在内部局部地址和内部全局地址之间建立静态地址转换。

1
Router(config) #ip nat inside source static local-ip global-ip [extendable]

   其中,参数“extendable”(可选)表示允许同一个内部局部地址映射到多个内部全局地址。“inside”表示从inside口进入的流量将源地址(source)进行静态转换。

例如:将内部局部地址192.168.100.2转换为内部全局地址61.159.62.130

   Router(config)# ip nat inside source static 192.168.100.2 61.159.62.130    


(2) 在内部和外部端口上启用NAT。

   设置NAT功能的路由器需要有一个内部端口(inside)和一个外部端口(outside)。内部端口连接的网络用户使用的是内部IP地址,外部端口连接的是外部的网络,如互联网。要NAT发挥作用,必须在这两个端口上启用NAT。

1
2
3
4
Router(config) # int f0/0
Router(config- if ) # ip nat inside
Router(config) # int f1/0
Router(config- if ) # ip nat outside

NAT端口映射

  需要使用NAT的端口映射功能,在内部局部地址和内部全局地址之间建立NAT端口映射的语法如下:

1
Router(config) # ip nat inside source static protocol local-ip UDP/TCP-port global-ip UDP/TCP-port [extendable]

  此命令是将TCP或UDP协议中内部局部地址需要转换的端口号转换成为内部全局地址的端口号。

例如:希望外网通过80端口访问公司内部的Web服务器192.168.100.2

   Router(config)# ip nat inside source static tcp 192.168.100.2 80 61.159.62.131 80 extendable   

  NAT端口映射还可以将不同服务器的不同服务(端口)映射到同一公网地址的不同端口,给人的感觉是通过一个地址访问了所有的服务。


2.动态NAT配置

  多个私有地址对应多个公有地址,负责上网。

(1) 定义内部网络中允许访问外部网络的访问控制列表

(2) 定义合法IP地址池

1
Router(config) # ip nat pool pool-name start-ip end-ip { netmask netmask | prefix-length prefix-length} [type rotary]

  下面是对该命令相关参数的说明:

pool-name放置转换后地址的地址池名称。

start-ip/end-ip地址池内起始和终止ip地址。

netmask netmask子网掩码,以点分十进制数表示。

prefix-length prefix-length子网掩码,以掩码中1的数量表示(如:prefix-length 24 等同于netmask 255.255.255.0)。两种掩码的表示方式等价,任意使用一个即可。

type rotary(可选):地址池中的地址为循环使用。

   如果有多个地址池,可以重复使用此命令添加地址池。

注意:配置访问控制列表时,可以将其配置为标准访问控制列表,也可以将其配置为扩展访问控制列表。

(3) 实现网络地址转换

在全局配置模式中,将由access-list指定的内部局部地址与指定的内部全局地址池进行地址转换。命令语法如下:

1
Router(config) # ip nat inside source list access-list-name pool pool-name [overload]

  其中,“overload”(可选)表示使用地址复用,用于PAT。

例如:将访问控制列表1中的局部地址转换为test0地址池中定义为全局IP地址。

   Router(config)# ip nat inside source list 1 pool test0    

如果有多个地址池,可以一一添加,以增加合法地址池的数量范围。命令如下:

   Router(config)# ip nat inside source list 1 pool test1    

   Router(config)# ip nat inside source list 1 pool test2    

4) 在内部和外部接口上启用NAT。



PAT

1. 使用外部全局地址

  如图所示,按以下配置说明使用外部全局地址的方法配置PAT

(1) 配置内部访问控制列表

1
Router(config) # access-list 1 permit 10.1.1.0 0.0.0.255

(2) 定义合法的IP地址池

1
Router(config) # ip nat pool ysf 61.159.62.131 61.159.62.131 netmask 255.255.255.0

(3) 设置复用动态IP地址转换

上一篇: 在 LINUX 中使用 IPTABLES 防火墙

下一篇: 网络地址转换(NAT)详解

推荐阅读