多通道蠕动泵:网络地址转换(NAT,Network Address Translation)

来源:百度文库 编辑:中财网 时间:2024/04/26 00:56:29

NAT

网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。 

NAT网络地址转换(NAT,NetworkAddressTranslation)被广泛应用于各种类型Internet接入方式和备种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。虽然NAT可以借助于某些代理服务器来实现,但考虑到运算成本和网络性能,很多时候都是在路由器上来实现的。随着接入Internet的计算机数量的不断猛增,IP地址资源也就愈加显得捉襟见肘。事实上,除了中国教育和科研计算机网(CERNET)外,一般用户几乎申请不到整段的C类IP地址。在其他ISP那里,即使是拥有几百台计算机的大型局域网用户,当他们申请IP地址时,所分配的地址也不过只有几个或十几个IP地址。显然,这样少的IP地址根本无法满足网络用户的需求,于是也就产生了NAT技术。

基本简介

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

NAT将自动修改IP报文头申的源IP地址和目的IP地址,Ip地址校验则在NAT处理过程中自动完成。有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文进行修改,以匹配IP头中已经修改过的源IP地址。否则,在报文数据都分别嵌入IP地址的应用程序就不能正常工作。

实现方式

NAT静态转换NAT的实现方式有三种,即静态转换StaticNat、动态转换DynamicNat和端口多路复用OverLoad。

静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。

动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址对是不确定的,而是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。

端口多路复用是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,PortAddressTranslation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

实现过程

路由器在配置网络地址转换的过程之前,首先必须搞清楚内部接口和外部接口,以及在哪个外部接口上启用NAT。通常情况下,连接到用户内部网络的接口是NAT内部接口,而连接到外部网络(如Internet)的接口是NAT外部接□。

(1)静态地址转换的实现

假设内部局域网使用的lP地址段为192.168.0.1~192.168.0.254,路由器局域网端口(即默认网关)的IP地址为192.168.0.1,子网掩码为255.255.255.0。网络分配的合法IP地址范围为61.159.62.128~61.159.62.135,路由器在广域网中的IP地址为61.159.62.129,子网掩码为255.255.255.248可用于转换的IP地址范围为61.159.63.130~61.159.62.134。要求将内部网止192.168.0.2~192.168.0.6分别转换为合法IP地址61.159.62.130~61.159.62.134。

第一步,设置外部端口。

interfaceserial0
ipaddress61.159.62.129.255.255.255.248
ipnatoutside

第二步,设置内部端口。

interfaceethernet0
ipaddress192.168.0.1.255.255.255.0
ipnatinside

第三步,在内部本地与内部合法地址之间建立静态地址转换。

ipnatinsidesourcestatic内部本地地址内部合法地址
示例:

ipnatinsidesourcestatic192.168.0.261.159.62.130//将内部网络地址192.168.0.2转换为合法IP地址61.159.62.130

ipnatinsidesourcestatic192.168.0.361.159.62.131//将内部网络地址192.168.0.3转换为合法IP地址61.159.62.131

ipnatinsidesourcestatic192.168.0.461.159.62.132//将内部网络地址192.168.0.4转换为合法IP地址61.159.62.132

ipnatinsidesourcestatic192.168.0.561.159.62.133//将内部网络地址192.168.0.5转换为合法IP地址61.159.62.133

ipnatinsidesourcestatic192.168.0.661.159.62.134//将内部网络地址192.168.0.6转换为合法IP地址61.159.62.134

至此,静态地址转换配置完毕。

(2)动态地址转换的实现

假设内部网络使用的IP地址段为172.16.100.1~172.16.100.254,路由器局域网端口(即默认网关)的IP地址为172.16.100.1,子网掩码为255.255.255.0。网络分配的合法IP地址范围为61.159.62.128~61.159.62.191,路由器在广域网中的IP地址为61.159.62.129,子网掩码为255.255.255.192,可用于转换的IP地址范围为61.159.62.130~61.159.62.190。要求将内部网址172.16.100.1~172.16.100.254动态转换为合法IP地址61.159.62.130~61.159.62.190。

第一步,设置外部端口。

设置外部端口命令的语法如下:
ipnatoutside
示例:
interfaceserial0//进入串行端口serial0
ipaddress61.159.62.129255.255.248//将其IP地址指定为61.159.62.129,子网掩码为255.255.255.248
ipnatoutside//将串行口serial0设置为外网端口
注意,可以定义多个外部端口。

第二步,设置内部端口。

设置内部接口命令的语法如下:
ipnatinside
示例:
interfaceethernet0//进入以太网端口Ethernet0
ipaddress172.16.100.1255.255.255.0//将其IP地址指定为172.16.100.1,子网掩码为255.255.255.0
ipnatinside//将Ethernet0设置为内网端口。
注意,可以定义多个内部端口。

第三步,定义合法IP地址池。

定义合法IP地址池命令的语法如下:
ipnatpool地址池名称起始IP地址终止IP地址子网掩码
其中,地址池名字可以任意设定。
示例:
ipnatpoolnet61.159.62.13061.159.62.190netmask255.255.255.192//指明地址缓冲池的名称为net,IP地址范围为61.159.62.130~61.159.62.190,子网掩码为255.255.255.192。需要注意的是,即使掩码为255.255.255.0,也会由起始IP地址和终止IP地址对IP地址池进行限制。或ipnatpooltest61.159.62.13061.159.62.190prefix-length26
注意,如果有多个合法IP地址范围,可以分别添加。例如,如果还有一段合法IP地址范围为"211.82.216.1~211.82.216.254",那么,可以再通过下述命令将其添加至缓冲池中。
ipnatpoolcernet211.82.216.1211.82.216.254netmask255.255.255.0
或ipnatpooltest211.82.216.1211.82.216.254prefix-length24

第四步,定义内部网络中允许访问Internet的访问列表。

定义内部访问列表命令的语法如下:
access-listl标号permit源地址通配符(其中,标号为1~99之间的整数)
access-listlpermit172.16.100.00.0.0.255//允许访问Internet的网段为172.16.100.0~172.16.100.255,主机掩码为0.0.0.255。需要注意的是,在这里采用的是主机掩码,而非子网掩码。子网掩码与主机掩码的关系为:主机掩码+子网掩码=255.255.255.255。例如,子网掩码为255.255.0.0,则主机掩码为0.0.255.255;子网掩码为255.0.0.0,则主机掩码为0.255.255.255;子网掩码为255.252.0.0,则主机掩码为0.3.255.255;子网掩码为255.255.255.192,刚主机掩码为0.0.0.63。另外,如果想将多个IP地址段转换为合法IP地址,可以添加多个访问列表。例如,当欲将172.16.98.0~172.16.98.255和172.16.99.0~172.16.99.255转换为合法IP地址时,应当添加下述命令:
access-list2permit172.16.98.0~0.0.0.255
access-list2permit172.16.99.0~0.0.0.255

第五步,实现网络地址转换。

在全局设置模式下,将由access-list指定的内部本地地址与指定的内部合法地址池进行地址转换。命令语法如下:
ipnatinsidesourcelist访问列表标号pool内部合法地址池名字
示例:
ipnatinsidesourcelist1poolchinanet
如果有多个内部访问列表,可以一一添加,以实现网络地址转换,如
ipnatinsdesourcelist2poolchinanet
ipnatinsdesourcelist2poolchinanet
如果有多个地址池,也可以一一添加,以增加合法地址池范围,如
ipnatinsdesourcelist2poolcernet
ipnatinsdesourcelist2poolcernet
ipnatinsdesourcelist2poolcernet
至此,动态地址转换设置完毕。

(3)端口复用动态地址转换

内部网络使用的IP地址段为10.100.100.1~10.100.100.254,路由器局域网端口(即默认网关)的IP地址为10.100.100.1,子网掩码为255.255.255.0。网络分配的合法IP地址范围为202.99.160.0~202.99.160.3,路由器广域网中的IP地址为202.99.160.1,子网掩码为255.255.255.252,可用于转换的IP地址为202.99.160.2。要求将内部网址10.100.100.1~10.100.100.254转换为合法IP地址202.99.160.2。

第一步,设置外部端口。

interfaceserial0
ipaddress202.99.160.1255.255.255.252
innatoutside

第二步,设置内部端口。

interfaceethernet0
ipaddress10.100.100.1255.255.255.0
ipnatinside

第三步,定义合法IP地址池。

innatpoolonlyone202.99.160.2202.99.160.2netmask255.255.255.252
//指明地址缓冲池的名称为onlyone,IP地址范围为202.99.160.2,子网掩码为255.255.255.252。由于本例只有一个IP地址可用,所以,起始IP地址与终止IP地址均为202.99.160.2。如果有多个IP地址,则应当分别键入起止的IP直址。

第四步,定义内部访问列。

access-list1permit10.100.100.00.0.0.255
允许访问Internetr的网段为10.100.100.0~10.100.100.255,子网掩码为255.255.255.0。需要注意的是,在这里子网掩码的顺序跟平常所写的顺序相反,即0.255.255.255。

第五步,设置复用动态地址转换。

在全局设置模式下,设置在内部的本地地址与内部合法IP地址间建立复用动态地址转换。命令语法如下:
ipnatinsidesourcelist访问列表号pool内部合法地址池名字overload
示例:
ipnatinsidesourcelist1poolonlyoneoverload//以端口复用方式,将访问列表1中的私有IP地址转换为onlyoneIP地址池中定义的合法IP地址。

至此,端口复用动态地址转换完成。

具体事例

端口复用地址转换示例一:全部采用端口复用地址转换

当ISP分配的IP地址数量很少,网络又没有其他特殊需求,即无需为Internet提供网络服务时,可采用端口利用地址转换方式,使网络内的计算机采用同一IP地址访问Internet,在节约IP地址资源的同时,又可有效保护网络内部的计算机。

网络环境为:

局域网采用10Mb/s光纤,以城域网方式接入Internet。路由器选用拥有2个10/100Mb/s自适应端口的Cisco2611。内部网络使用的IP地址段为192.168.100.1~192.101.254,局域网端口Ethernet0的IP地址为192.168.100.1,子网掩码为255.255.0.0。网络分配的合法IP地址范围为202.99.160.128~202.99.160.131,连接ISP的端口Ethernet1的IP地址为202.99.160.129,子网掩码为255.255.255.252。可用于转换的IP地址为202.99.160.130。要求网络内部的所有计算机均可访问Internet。

案例分析:

既然只有一个可用的合法IP地址,同时处于局域网的服务器又只为局域网提供服务,而不允许Internet中的主机对其访问,因此完全可以采用端口复用地址转换方式实现NAT,使得网络内的所有计算机均可独立访问Internet。
配置清单:

interfacefastethernet0/0
ipaddress192.168.100.1255.255.0.0//定义本地端口IP地址
duplexauto
speedauto
ipnatinside//定义为本地端口
!
interfacefastethernet0/1
ipaddress202.99.160.129255.255.255.252
duplexauto
speedauto
ipnatoutside
!
ipnatpoolonlyone202.99.160.130202.99.160.130netmadk255.255.255.252//定义合法IP地址池,名称为onlyone
access-list1permit192.168.100.00.0.0.255//定义本地访问列表
access-list1permit192.168.100.00.0.0.255
ipnatinsidesourcelist1poolonlyoneoverload//采用端口复用动态地址转换

示例二:动态地址+端口复用地址转换

许多FTP网站考虑到服务器性能和Internet连接带宽的占用问题,都限制同一IP地址的多个进程访问。如果采用端口复地址转换方式,则网络内的所以计算机都采用同一IP地址访问Internet,那么,将因此而被禁止对该网站的访问。所以,当提供的合法IP地址数量稍多时,可同时采用端口复用和动态地址转换方式,从而既可保证所有用户都能够获得访问Internet的权力,同时,又不致、某些计算机因使用同一IP地址而被限制权限。需要注意的是,由于所有计算机都采用动态地址转换方式,因此Internet中的所有计算机将无法实现对网络内部服务器的访问。

网络环境:

广域网模块局域网以2Mb/sDNA专线接入Internet,路由器选用安装了广域网模块的Cisco2611。内部网络使用的IP地址段为172.16.100.1~172.16.102.254,局域网端口Ethernet0的IP地址为172.16.100.1,子网掩码为255.255.0.0。网络分配的合法IP地址范围为202.99.160.128~202.99.160.129,子网掩码为255.255.255.192,可用于转换的IP地址范围为202.99.160.130~202.99.160.190。要求网络部分的部分计算机可以不受任何限制地访问Internet,服务器无需提供Internet访问服务。

案例分析:

既然要求网络中的部分计算机可以不受任何限制地访问Internet,同时,服务器无需提供Internet访问服务,那么,只需采用动态地址转换+端口复用地址转换方式即可实现。部分有特殊需求的计算机采用动态地址转换的NAT方式,其他计算机则采用端口复用地址转换的NAT方式。因此,部分有特殊需求的计算机可采用内部网址172.16.100.1~172.16.100.254,并动态转换为合法地址202.99.160.130~202.99.160.189,其他计算机采用内部网址172.16.101.1~172.16.102.254,全部转换为202.99.160.190。

配置清单:
interfacefastethernet0/1
ipaddress10.100.100.1255.255.255.0//定义局域网端口IP地址
duplexauto
speedauto
ipnatinside//定义为局域端口
!
interfaceserial0/0
ipaddress202.99.160.129255.255.255.192//定义广域网端口IP地址
!
duplexauto
speedauto
ipnatoutside//定义为广域端口
!
ipnatpoolpublic202.99.160.130202.130.160.190netmask255.255.255.192//定义合法IP地址池,名称为public
ipnatpoolsuper202.99.160.130202.130.160.189netmask255.255.255.192//定义合法IP地址池,名称为super
ipnatinsidesourcelist1poolsuper//定义列表达1采用动态地址转换
ipnatinsidesourcelist2poolpublicoverload?//定义列表2采用端口复用地址转换
access-list1permit172.16.100.00.0.0.255//定义本地访问列表1
access-list2permit172.16.102.00.0.0.255//定义本地访问列表2
access-list2permit172.16.102.00.0.0.255

示例三:静态地址转换+端口复用地址转换

网络中的服务器既为网络内部的客户提供网络服务,又同时为Internet中的用户提供访问服务。因此,如果采用端口复用地址转换或动态地址转换,将由于无法确定服务器的IP地址,而导致Internet用户无法实现对网络内部服务器的访问。应当采用静态地址转换+端口复用地址转换的NAT方式。也就是说,对服务器采用静态地址转换,以确保服务器拥有固定的合法IP地址。而对普通的客户计算机则采用端口复用地址转换,使所有用户都享有访问Internet的权力。

网络环境为:

局域网采用10Mb/s光纤,以城域网方式接入Internet。路由器选用拥有2个10/100Mb/s自适应端口的Cisco2611。内部网络使用的IP地址段为10.18.100.1~10.18.104.254,局域网端口Ethernet0的IP地址为10.18.100.1,子网掩码为255.255.0.0。网络分配的合法IP地址范围为211.82.220.80~211.82.220.87,连接ISP的端口Ethernet1的IP地址为211.82.220.81,子网掩码为255.255.255.248。要求网络内部的所有计算机均可访问Internet,并且在Internet中提供Web、E-mail、FTP和Media等4种服务。
案例分析:

既然网络内的服务器要求能够被Internet访问到,那么,这部分主机必须拥有合法的IP地址,也就是说,服务器必须采用静态地址转换。其他计算机由于没有任何限制,所以,可采用端口复用地址转换的NAT方式。因此,服务器可采用内网址10.18.100.1~10.18.100.254,并分别映射为一个合法的IP地址。其他计算机则采用内部网址10.18.101.1~172.16.104.254,并全部转换为一个合法的IP地址。

配置清单:
interfacefastethernet0/0
ipaddress10.18.100.1255.255.0.0//定义局域网口IP地址
duplexauto
speedauto
ipnatinside//定义局域网口
!
interfacefastethernet0/1
ipaddress211.82.220.81255.255.255.248//定义广域网口IP地址
duplexauto
speedauto
ipnatoutside//定义广域网口
!
ipnatpoolevery211.82.220.86211.82.220.86netmask255.255.255.248//定义合法IP地址池
access-list1permit10.18.101.00.0.0.255//定义本地访问列表1
access-list1premit10.18.102.00.0.0.255
access-list1premit10.18.103.00.0.0.255
access-list1premit10.18.104.00.0.0.255
ipnatinsidesourcelist1pooleveryoverload//定义列表达1采用端口复用地址转换
ipnatinsidesourcestatic10.18.100.10211.82.220.82//定义静态地址转换
ipnatinsidesourcestatic10.18.100.11211.82.220.83
ipnatinsidesourcestatic10.18.100.12211.82.220.84
ipnatinsidesourcestatic10.18.100.13211.82.220.85

示例四:TCP/UDP端口NAT映射

NAT映射如果ISP提供的合法IP地址的数量较多,我们自然可以采用静态地址转换+端口复用动态地址转换的方式得以完美实现。但如果ISP只提供4个IP地址,其中2个作为网络号和广播地址而不可使用,1个IP地址要用于路由器定义为默认网关,那么将只剩下1个IP地址可用。当然我们也可以利用这个仅存的一个IP地址采用端口复用地址转换技术,从而实现整个局域网的Internet接入。但是由于服务器也采用动态端口,因此,Internet中的计算机将无法访问到网络内部的服务器。有没有好的解决问题的方案呢?这就是TCP/UDP端口NAT映射。

不同应用程序使用的TCP/UDP的端口是不同的,比如,Web服务使用50,FTP服务使用21,SMTP服务使用25,POP3服务使用110,等等。因此,可以将不同的TCP端口绑定至不同的内部IP地址,从而只使用一个合法的IP地址,即可在允许内部所有服务器被Internet访问的同时,实现内部所有主机对Internet访问。

网络环境:

局域网采用10Mb/s光纤,以城域网方式接入Internet,如图4-2-5所示。路由器选用拥有2个10/100Mb/s自适应端口的Cisco2611。内部网络使用的IP地址段为192.168.1.1~192.168.1.254,局域网端口Ethernet0的IP地址为192.168.1.1,子网掩码为255.255.255.0。网络分配的合法IP地址范围为,211.82.220.128~211.82.220.131,连接ISP的端口Ethernet1的IP地址为211.82.220.129,子网掩码为255.225.255.252,可用于转换的IP地址为211.82.220.130。要求网络内部的所有计算机均可访问Internet。

案例分析:

既然只有一个可用的合法IP地址,当然只能采用端口复用方式实现NAT,不过,由于同时又要求网络内部的服务器可以被Internet访问到,因此,必须使用PAT创建TCP/UDP端口的NAT映射。需要注意的是,也可以直接使用广域端口创建TCP/UDP端口的NAT映射,也就是说,即使只有一个IP地址,也可以完美实现端口复用。由于合法IP地址位于路由器端口上,所以,不再需要定义NAT池,只简单地使用insidesourcelist语句即可。

需要注意的是,由于每种应用服务都有自己默认的端口,所以,这种NAT方式下,网络内部每种应用服务中只能各自有一台服务器成为Internet中的主机,例如,只能有一台Web服务器,一台E-mail服务,一台FTP服务器。尽管可以采用改变默认端口的方式创建多台应用服务器,但这种服务器在访问时比较困难,要求用户必须先了解某种服务采用的新TCP端口。

配置清单:
interfacefastethernet0/0
ipaddress192.168.1.1255.255.255.0//指定局域网口的IP地址
duplexauto
speedauto
ipnatinside//指定局域网接口
!
interfacefastethernet0/1
ipaddress211.82.220.129255.255.255.248//指定广域网口的IP地址
access-list1permit192.168.1.00.0.0.255
!
ipnatinsidesourcelist1interfacefastethernet0/1overload//启用端口复用地址转换,并直接采用fastethernet0/1的IP地址。
ipnatinsidesourcestatictcp192.168.1.1180202.99.160.129.80
ipnatinsidesourcestatictcp192.168.1.1221202.99.160.129.21
ipnatinsidesourcestatictcp192.168.1.1325202.99.160.129.25
ipnatinsidesourcestatictcp192.168.1.13110202.99.160.129110

示例五:利用地址转换实现负载均衡

随着访问量的上升,当一台服务器难以胜任时,就必须采用负载均衡技术,将大量的访问合理地分配至多台服务器上。当然,实现负载均衡的手段有许多种,比如可以采用服务器群集负载均衡、交换机负载均衡、DNS解析负载均衡等等。
其实除此以外,也可以通过地址转换方式实现服务器的负载均衡。事实上,这些负载均衡的实现大多是采用轮询方式实现的,使每台服务器都拥有平等的被访问机会。

网络环境:
局域网以2Mb/sDDN专线拉入Internet,路由器选用安装了广域网模块的Cisco2611。内部网络使用的IP地址段为10.1.1.1~10.1.3.254,局域网端口Ethernet0的IP地址为10.1.1.1,子网掩码为255.255.252.0。网络分配的合法IP地址范围为202.110.198.80~202.110.198.87,连接ISP的端口Ethernet1的IP地址为202.110.198.81,子网掩码为255.255.255.248。要求网络内部的所有计算机均可访问Internet,并且在3台Web服务器和2台FTP服务器实现负载均衡。

服务器案例分析:

既然要求网络内所有计算机都可以接入Internet,而合法IP地址又只有5个可用,当然可采用端口复用地址转换方式。本来对服务器通过采用静态地址转换,赋予其合法IP地址即可。但是,由于服务器的访问量太大(或者是服务器的性能太差),不得不使用多台服务器作负载均衡,因此,必须将一个合法IP地址转换成多相内部IP地址,以轮询方式减轻每台服务器的访问压力。

配置文件:
interfacefastethernet0/1
ipadderss10.1.1.1255.255.252.0//定义局域网端口IP地址
duplexauto
speedauto
pnatinside//定义为局域端口
!
interfaceserial0/0
ipaddress202.110.198.81255.255.255.248//定义广域网端口IP地址
duplexauto
speedauto
ipnatoutside//定义为广域端口
!
access-list1permit202.110.198.82//定义轮询地址列表1
access-list2permit202.110.198.83//定义轮询地址列表2
access-list3permit10.1.1.00.0.3.255//定义本地访问列表3
!
ipnatpoolwebsev10.1.1.210.1.1.4255.255.255.248typerotary//定义Web服务器的IP地址池,Rotary关键字表示准备使用轮询策略从NAT池中取出相应的IP地址用于转换进来的IP报文,访问202.110.198.82的请求将依次发送给web服务器:10.1.1.2、10.1.1.3和10.1.1.4
ipnatpoolftpsev10.1.1.810.1.1.9255.255.255.248typerotary//定义ftp服务器的IP地址池。
ipnatpoolnormal202.110.198.84202.110.198.84netmask255.255.255.248//定义合法IP地址池,名称为normal
ipnatinsidedestinationlist1poolwebsev//insidedestinationlist语句定义与列表1相匹配的IP地址的报文将使用轮询策略
ipnatinsidedestinationlist2poolftpsev

百科内容来自于: