网络地址转换(NAT)是用于将一个地址域(如专用Intranet)映射到另一个地址域(如Internet)的标准方法。NAT允许一个机构专用Intranet中的主机透明地连接到公共域中的主机,无需内部主机拥有注册的(以及越来越缺乏的)Internet地址。
NAT的原理及其注意事项
IP地址耗尽促成了CIDR的开发,但CIDR开发的主要目的是为了有效的使用现有的internet地址。而同时根据RFC 1631(IP Network Address Translator)开发的NAT却可以在多重的internet子网中使用相同的IP,用来减少注册IP地址的使用。
NAT技术使得一个私有网络可以通过internet注册IP连接到外部世界,位于inside网络和outside网络中的NAT路由器在发送数据包之前,负责把内部IP翻译成外部合法地址。内部网络的主机不可能同时于外部网络通信,所以只有一部分内部地址需要翻译。
NAT的翻译可以采取静态翻译(static translation)和动态翻译(dynamic translation)两种。静态翻译将内部地址和外部地址一对一对应。当NAT需要确认哪个地址需要翻译,翻译时采用哪个地址pool时,就使用了动态翻译。采用port multiplexing技术,或改变外出数据的源port技术可以将多个内部IP地址影射到同一个外部地址,这就是PAT(port address translator)。
当影射一个外部IP到内部地址时,可以利用TCP的load distribution技术。使用这个特征时,内部主机基于round-robin机制,将外部进来的新连接定向到不同的主机上去。注意:load distributiong只有在影射外部地址到内部的时候才有效。
NAT使用的几种情况:
a,连接到internet,但却没有足够的合法地址分配给内部主机。
b,更改到一个需要重新分配地址的ISP。
c,有相同的IP地址的两个internat合并。
d,想支持负载均衡(主机)。
采用NAT后,一个最主要的改变就是你失去了端对端IP的traceability,也就是说,从此你不能再经过NAT使用ping和traceroute,其次就是曾经的一些IP对IP的程序不再可以正常运行,潜在的不易被观察到的缺点就是增加了网络延时。
NAT可以支持大部分IP协议,但有几个协议需要注意,首先tftp,rlogin,rsh,rcp和ipmulticast都被NAT支持,其次就是bootp,snmp和路由表更新全部给拒绝了。
NAT的几个相关概念:
Inside Local IP address: 指定于内部网络的主机地址,全局唯一,但为私有地址。
Inside Global IP address: 代表一个或更多内部IP到外部世界的合法IP。
Outside Global IP address: 外部网络主机的合法IP。
Outside Local IP address: 外部网络的主机地址,看起来是内部网络的,私有地址。
Simple Translation Entry: 影射IP到另一个地址的Entry。
Extended Translation Entry:影射IP地址和端口到另一个pair的Entry。
采用NAT,可以实现以下几个功能:
a,Translation inside local addresses
b,Overloading inside global addresses
c,TCP load distribution
d,Handing overlapping networks
下面我们一一叙述它们的工作原理。
a,内部地址翻译(Translation inside local addresses):
这是比较通用的一种方法,将内部IP一对一的翻译成外部地址
在内部主机连接到外部网络时,当第一个数据包到达NAT路由器时,router检查它的NAT表,因为是NAT是静态配置的,故可以查询出来(simply entry),然后router将数据包的内部局部IP(源地址)更换成内部全局地址,再转发出去。外部主机接受到数据包用接受到的内部全局地址来响应,NAT接受到外部回来的数据包,再根据NAT表把地址翻译成内部局部IP,转发过去。
b,内部全局地址复用(overloading inside glogal addresses)
使用地址和端口pair将多个内部地址影射到比较少的外部地址。这也是所谓的PAT。和内部地址翻译一样,NAT router同样也负责查表和翻译内部IP地址,唯一的区别就是由于使用了overloading,router将复用同样的内部全局IP地址,并存储足够的信息以区分它和其他地址,这样查询出来的是extended entry。
NAT router和外部主机的通讯采用翻译过的内部全局地址,故同一般的通信没有差别,router到内部主机通讯时,同样要查NAT表。
c,TCP负载重分配(TCP load distributing)和以上两种操作不同,这是NAT由外到内的翻译,所以那种以为WEB server一定要放置到NAT外部的说法是错误的。
工作原理:外部主机向虚拟主机(定义为内部全局地址)通讯,NAT router接受外部主机的请求并依据NAT表建立与内部主机的连接,把内部全局地址(目的地址)翻译成内部局部地址,并转发数据包到内部主机,内部主机接受包并作出响应。NAT router再使用内部局部地址和端口查询数据表,根据查询到的外部地址和端口做出响应。此时,如果同一主机再做第二个连接,NAT router将根据NAT表将建立与另一虚拟主机的连接,并转发数据。
d,处理重叠网络。
这种方法主要用于两个intranet的互连,同样给我们处理两个重叠网络提供了方法。它的实现要求DNS server的支持(用于区别两个不同的主机)。
1,主机A要求向主机C建立连接,先象DNS server做地址查询。
2,NAT router截获DNS的响应,如果地址有重叠,将翻译返回的地址。它将创建一个simply entry把重叠的外部全局地址(目的地址)翻译成外部局部地址。
3,路由器转发DNS响应到主机A,它已经把主机C的地址(外部全局地址)翻译成外部局部地址。
4,当路由器接受到主机C的数据包时,它将建立内部局部、全局,外部全局、局部地址间的转换,主机A将由内部局部地址(源地址)翻译成内部全局地址,主机C将由外部全局地址(目的地址)翻译成外部局部地址。
5,主机C接受数据包并继续通讯。
如何正确应用网络地址转换(NAT)技术
前言:随着Internet技术的不断以指数级速度增长,珍贵的网络地址分配给专用网络终于被视作是一种对宝贵的虚拟房地产的浪费。因此出现了网络地址转换(NAT)标准,就是将某些IP地址留出来供专用网络重复使用。本文将详细告诉你如何正确应用网络地址转换NAT技术。
一、NAT技术的定义
NAT英文全称是Network Address Translation,称是网络地址转换,它是一个IETF标准,允许一个机构以一个地址出现在Internet上。NAT将每个局域网节点的地址转换成一个IP地址,反之亦然。它也可以应用到防火墙技术里,把个别IP地址隐藏起来不被外界发现,使外界无法直接访问内部网络设备,同时,它还帮助网络可以超越地址的限制,合理地安排网络中的公有Internet 地址和私有IP地址的使用。
二、NAT技术的基本原理和类型
1、NAT技术基本原理
NAT技术能帮助解决令人头痛的IP地址紧缺的问题,而且能使得内外网络隔离,提供一定的网络安全保障。它解决问题的办法是:在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址在Internet上使用,其具体的做法是把IP包内的地址域用合法的IP地址来替换。 NAT功能通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中。NAT设备维护一个状态表,用来把非法的IP地址映射到合法的IP地址上去。每个包在NAT设备中都被翻译成正确的IP地址,发往下一级,这意味着给处理器带来了一定的负担。但对于一般的网络来说,这种负担是微不足道的。
2、NAT技术的类型
NAT有三种类型:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT)。其中静态NAT设置起来最为简单和最容易实现的一种,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。而动态地址NAT则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。NAPT则是把内部地址映射到外部网络的一个IP地址的不同端口上。根据不同的需要,三种NAT方案各有利弊。
动态地址NAT只是转换IP地址,它为每一个内部的IP地址分配一个临时的外部IP地址,主要应用于拨号,对于频繁的远程联接也可以采用动态NAT。当远程用户联接上之后,动态地址NAT就会分配给他一个IP地址,用户断开时,这个IP地址就会被释放而留待以后使用。
网络地址端口转换NAPT(Network Address Port Translation)是人们比较熟悉的一种转换方式。NAPT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。
在Internet中使用NAPT时,所有不同的TCP和UDP信息流看起来好像来源于同一个IP地址。这个优点在小型办公室内非常实用,通过从ISP处申请的一个IP地址,将多个连接通过NAPT接入Internet。实际上,许多SOHO远程访问设备支持基于PPP的动态IP地址。这样,ISP甚至不需要支持NAPT,就可以做到多个内部IP地址共用一个外部IP地址上Internet,虽然这样会导致信道的一定拥塞,但考虑到节省的ISP上网费用和易管理的特点,用NAPT还是很值得的。
三、在Internet中使用NAT技术
NAT技术可以让你区域网路中的所有机器经由一台通往Internet的server 线出去,而且只需要注册该server的一个IP就够了。 在以往没有NAT技术以前,我们必须在server上安装sockd,并且所有的clients都必须要支援sockd,才能够经过server的sockd连线出去。这种方式最大的问题是,通常只有telnet/ftp/www-browser支援sockd,其它的程式都不能使用;而且使用sockd的速度稍慢。因此我们使用网络地址转换NAT技术,这样client不需要做任何的更动,只需要把gateway设到该server上就可以了,而且所有的程式(例如kali/kahn等等) 都可以使用。最简单的NAT设备有两条网络连接:一条连接到Internet,一条连接到专用网络。专用网络中使用私有IP地址(有时也被称做Network 10地址,地址使用留做专用的从10.0.0.0开始的地址)的主机,通过直接向NAT设备发送数据包连接到Internet上。与普通路由器不同NAT设备实际上对包头进行修改,将专用网络的源地址变为NAT设备自己的Internet地址,而普通路由器仅在将数据包转发到目的地前读取源地址和目的地址。
四、应用NAT技术的安全策略
1、应用NAT技术的安全问题
在使用NAT时,Internet上的主机表面上看起来直接与NAT设备通信,而非与专用网络中实际的主机通信。输入的数据包被发送到NAT设备的IP地址上,并且NAT设备将目的包头地址由自己的Internet地址变为真正的目的主机的专用网络地址。而结果是,理论上一个全球唯一IP地址后面可以连接几百台、几千台乃至几百万台拥有专用地址的主机。但是,这实际上存在着缺陷。例如,许多Internet协议和应用依赖于真正的端到端网络,在这种网络上,数据包完全不加修改地从源地址发送到目的地址。比如,IP安全架构不能跨NAT设备使用,因为包含原始IP 源地址的原始包头采用了数字签名。如果改变源地址的话,数字签名将不再有效。 NAT还向我们提出了管理上的挑战。尽管NAT 对于一个缺少足够的全球唯一Internet地址的组织、分支机构或者部门来说是一种不错的解决方案,但是当重组、 合并或收购需要对两个或更多的专用网络进行整合时,它就变成了一种严重的问题。甚至在组织结构稳定的情况下,NAT系统不能多层嵌套,从而造成路由噩梦。
2、应用NAT技术的安全策略
当我们改变网络的IP地址时,都要仔细考虑这样做会给网络中已有的安全机制带来什么样的影响。如,防火墙根据IP报头中包含的TCP端口号、信宿地址、信源地址以及其它一些信息来决定是否让该数据包通过。可以依NAT设备所处位置来改变防火墙过滤规则,这是因为NAT改变了信源或信宿地址。如果一个NAT设备,如一台内部路由器,被置于受防火墙保护的一侧,将不得不改变负责控制NAT设备身后网络流量的所有安全规则。在许多网络中,NAT机制都是在防火墙上实现的。它的目的是使防火墙能够提供对网络访问与地址转换的双重控制功能。除非可以严格地限定哪一种网络连接可以被进行NAT转换,否则不要将NAT设备置于防火墙之外。任何一个淘气的黑客,只要他能够使NAT误以为他的连接请求是被允许的,都可以以一个授权用户的身份对你的网络进行访问。如果企业正在迈向网络技术的前沿,并正在使用IP安全协议(IPSec)来构造一个虚拟专用网(VPN)时,错误地放置NAT设备会毁了计划。原则上,NAT设备应该被置于VPN受保护的一侧,因为NAT需要改动IP报头中的地址域,而在IPSec报头中该域是无法被改变的,这使可以准确地获知原始报文是发自哪一台工作站的。如果IP地址被改变了,那么IPSec的安全机制也就失效了,因为既然信源地址都可以被改动,那么报文内容就更不用说了。那么NAT技术在系统中我们应采用以下几个策略:
①网络地址转换模块
NAT技术模块是本系统核心部分,而且只有本模块与网络层有关,因此,这一部分应和Unix系统本身的网络层处理部分紧密结合在一起,或对其直接进行修改。本模块进一步可细分为包交换子模块、数据包头替换子模块、规则处理子模块、连接记录子模块与真实地址分配子模块及传输层过滤子模块。
②集中访问控制模块
集中访问控制模块可进一步细分为请求认证子模块和连接中继子模块。请求认证子模块主要负责和认证与访问控制系统通过一种可信的安全机制交换各种身份鉴别信息,识别出合法的用户,并根据用户预先被赋予的权限决定后续的连接形式。连接中继子模块的主要功能是为用户建立起一条最终的无中继的连接通道,并在需要的情况下向内部服务器传送鉴别过的用户身份信息,以完成相关服务协议中所需的鉴别流程。
③临时访问端口表
为了区分数据包的服务对象和防止攻击者对内部主机发起的连接进行非授权的利用,网关把内部主机使用的临时端口、协议类型和内部主机地址登记在临时端口使用表中。由于网关不知道内部主机可能要使用的临时端口,故临时端口使用表是由网关根据接收的数据包动态生成的。对于入向的数据包,防火墙只让那些访问控制表许可的或者临时端口使用表登记的数据包通过。
④认证与访问控制系统
认证与访问控制系统包括用户鉴别模块和访问控制模块,实现用户的身份鉴别和安全策略的控制。其中用户鉴别模块采用一次性口令(One-Time Password)认证技术中Challenge/Response机制实现远程和当地用户的身份鉴别,保护合法用户的有效访问和限制非法用户的访问。它采用Telnet和WEB两种实现方式,满足不同系统环境下用户的应用需求。访问控制模块是基于自主型访问控制策略(DAC),采用ACL的方式,按照用户(组)、地址(组)、服务类型、服务时间等访问控制因素决定对用户是否授权访问。
⑤网络安全监控系统
监控与入侵检测系统作为系统端的监控进程,负责接受进入系统的所有信息,并对信息包进行分析和归类,对可能出现的入侵及时发出报警信息;同时如发现有合法用户的非法访问和非法用户的访问,监控系统将及时断开访问连接,并进行追踪检查。
⑥基于WEB的防火墙管理系统
管理系统主要负责网络地址转换模块、集中访问控制模块、认证与访问控制系统、监控系统等模块的系统配置和监控。它采用基于WEB的管理模式,由于管理系统所涉及到的信息大部分是关于用户帐号等敏感数据信息,故应充分保证信息的安全性,我们采用JAVA APPLET技术代替CGI技术,在信息传递过程中采用加密等安全技术保证用户信息的安全性。
结尾:尽管NAT技术可以给我们带来各种好处,例如无需为网络重分IP地址、减少ISP帐号花费以及提供更完善的负载平衡功能等,NAT技术对一些管理和安全机制的潜在威胁仍在,看你如何正确应用好网络地址转换NAT技术.
谈路由器NAT功能的配置
随着Internet的迅速发展,IP地址短缺已成为一个十分突出的问题。如我单位,200台计算机,4台服务器只分配了6个C类地址。那么,如何解决这个问题呢?我选择了在路由器上实现NAT的方法来解决这个问题。
NAT(Network Address Translation)顾名思义就是网络IP地址的转换。NAT的出现是为了解决IP日益短缺的问题,将多个内部地址映射为少数几个甚至一个公网地址。这样,就可以让我们内部网中的计算机通过伪IP访问INTERNET的资源。
设置NAT功能的路由器至少要有一个内部端口(Inside),一个外部端口(Outside)。
内部端口连接的网络用户使用的是内部IP地址(非法IP);外部端口连接的是外部的网络,使用电信部门分配给我们的IP地址。一般来说,内部端口应使用ETHERNET 端口,外部端口使用SERIAL 端口。另外,想要使用NAT功能,路由器的IOS必须支持NAT功能。
NAT设置可以分为静态地址转换、动态地址转换、复用动态地址转换。以下设置以Cisco路由器为例。
1.静态地址转换
静态地址转换将内部本地地址与内部合法地址进行一对一地转换,且需要指定和哪个合法地址进行转换。如果内部网络有WWW服务器或FTP服务器等可以为外部用户提供服务,则这些服务器的IP地址必须采用静态地址转换,以便外部用户可以使用这些服务。
2.动态地址转换
动态地址转换也是将内部本地地址与内部合法地址一对一地转换,但是动态地址转换是从内部合法地址池中动态地选择一个未使用的地址来对内部本地地址进行转换的。
3.复用动态地址转换
复用动态地址转换首先是一种动态地址转换,但是它可以允许多个内部本地地址共用一个内部合法地址。对只申请到少量IP地址但却经常同时有多个用户上外部网络的情况,这种转换极为有用。
PAT(Port Address Translation)也称为NAPT,就是将多个内部地址映射为一个公网地址,但以不同的协议端口号与不同的内部地址相对应。这种方式常用于拨号上Internet网。
以下是以2611路由器为例,配置清单如下:
Current configuration:
version 12.0
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname 2611
!
enable secret 5 $1$JIeG$UZJNjKhcptJXHPc/BP5GG0
enable password 2323ipro
!
ip subnet-zero
no ip source-route
no ip finger
!
!
!
interface Ethernet0/0
ip address 192.168.10.254 255.255.255.0 secondary
ip address 218.27.84.249 255.255.255.248
no ip directed-broadcast
ip accounting output-packets
no ip mroute-cache
no cdp enable
!
interface Serial0/0
ip unnumbered Ethernet0/0
no ip directed-broadcast
ip accounting output-packets
ip nat outside
no ip mroute-cache
no fair-queue
no cdp enable
!
interface Ethernet0/1
ip address 192.168.2.254 255.255.255.0
no ip directed-broadcast
ip nat inside
no ip mroute-cache
no cdp enable
!
interface Virtual-TokenRing35
no ip address
no ip directed-broadcast
no ip mroute-cache
shutdown
ring-speed 16
!
router rip
|