`
cdtdx
  • 浏览: 28261 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

NAT

 
阅读更多

nat

求助编辑百科名片

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

编辑本段网络地址转换(NAT)简介

NAT概述

  NAT(Network Address Translation,网络地址转换)是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程。在实际应用中,NAT 主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用IP 地址空间的枯竭。
  说明:
  私有 IP 地址是指内部网络或主机的IP 地址,公有IP 地址是指在因特网上全球唯一的IP 地址。
  RFC 1918 为私有网络预留出了三个IP 地址块,如下:
  A 类:10.0.0.0~10.255.255.255
  B 类:172.16.0.0~172.31.255.255
  C 类:192.168.0.0~192.168.255.255
  上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP 或注册中心申请而在公司或企业内部自由使用。

NAT工作流程

  ①如右图这个 client 的 gateway 设定为 NAT 主机,所以当要连上 Internet 的时候,该封包就会被送到 NAT 主机,这个时候的封包 Header 之 source IP 为 192.168.1.100 ;
Nat-流程1

Nat-流程1

  ②而透过这个 NAT 主机,它会将 client 的对外联机封包的 source IP ( 192.168.1.100 ) 伪装成 ppp0 ( 假设为拨接情况 )这个接口所具有的公共 IP ,因为是公共 IP 了,所以这个封包就可以连上 Internet 了!同时 NAT 主机并且会记忆这个联机的封包是由哪一个 ( 192.168.1.100 ) client 端传送来的;
Nat流程2

Nat流程2

  ③由 Internet 传送回来的封包,当然由 NAT 主机来接收了,这个时候, NAT 主机会去查询原本记录的路由信息,并将目标 IP 由 ppp0 上面的公共 IP 改回原来的 192.168.1.100 ;
  ④最后则由 NAT 主机将该封包传送给原先发送封包的 Client 。

NAT架设需求

  由前面 NAT( Network Address Translation ) 的介绍,我们知道他可以作为频宽分享的主机,当然也可以管理一群在NAT 主机后面的 Client 计算机。所以 NAT 的功能至少有这两项:
  ①频宽分享:这是 NAT 主机的最大功能。
  ②安全防护:NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了!外界在进行 portscan 的时候,就侦测不到源Client 端的 PC 。

编辑本段NAT技术背景

NAT技术的产生

  虽然NAT可以借助于某些代理服务器来实现,但考虑到运算成本和网络性能,很多时候都是在路由器上来实现的。
  随着接入Internet的计算机数量的不断猛增,IP地址资源也就愈加显得捉襟见肘。事实上,除了中国教育和科研计算机网(CERNET)外,一般用户几乎申请不到整段的C类IP地址。在其他ISP那里,即使是拥有几百台计算机的大型局域网用户,当他们申请IP地址时,所分配的地址也不过只有几个或十几个IP地址。显然,这样少的IP地址根本无法满足网络用户的需求,于是也就产生了NAT技术。

NAT技术的作用

  借助于NAT,私有(保留)地址的"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。
  NAT将自动修改IP报文的源IP地址和目的IP地址,Ip地址校验则在NAT处理过程中自动完成。有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文的数据部分进行修改,以匹配IP头中已经修改过的源IP地址。否则,在报文数据都分别嵌入IP地址的应用程序就不能正常工作。

NAT技术实现方式

  NAT的实现方式有三种,即静态转换Static Nat动态转换Dynamic Nat 端口多路复用OverLoad
  静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。
  动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。
  端口多路复用(Port address Translation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

网络地址转换(NAT)的实现

  在配置网络地址转换的过程之前,首先必须搞清楚内部接口和外部接口,以及在哪个外部接口上启用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.62.130~61.159.62.134。要求将内部网址192.168.0.2~192.168.0.6分别转换为合法IP地址61.159.62.130~61.159.62.134。
  第一步,设置外部端口
  interface serial 0
  ip address 61.159.62.129 255.255.255.248
  ip nat outside
  第二步,设置内部端口。
  interface ethernet 0
  ip address 192.168.0.1 255.255.255.0
  ip nat inside
  第三步,在内部本地与外部合法地址之间建立静态地址转换。
  ip nat inside source static 内部本地地址内部合法地址。
  示例:
  ip nat inside source static 192.168.0.2 61.159.62.130 //将内部网络地址192.168.0.2转换为合法IP地址61.159.62.130
  ip nat inside source static 192.168.0.3 61.159.62.131 //将内部网络地址192.168.0.3转换为合法IP地址61.159.62.131
  ip nat inside source static 192.168.0.4 61.159.62.132 //将内部网络地址192.168.0.4转换为合法IP地址61.159.62.132
  ip nat inside source static 192.168.0.5 61.159.62.133 //将内部网络地址192.168.0.5转换为合法IP地址61.159.62.133
  ip nat inside source static 192.168.0.6 61.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。
  第一步,设置外部端口。
  设置外部端口命令的语法如下:
  ip nat outside
  示例:
  interface serial 0 //进入串行端口serial 0
  ip address 61.159.62.129 255.255.255.192//将其IP地址指定为61.159.62.129,子网掩码为255.255.255.192
  ip nat outside //将串行口serial 0设置为外网端口
  注意,可以定义多个外部端口。
  第二步,设置内部端口。
  设置内部接口命令的语法如下:
  ip nat inside
  示例:
  interface ethernet 0 //进入以太网端口Ethernet 0
  ip address 172.16.100.1 255.255.255.0 // 将其IP地址指定为172.16.100.1,子网掩码为255.255.255.0
  ip nat inside //将Ethernet 0 设置为内网端口。
  注意,可以定义多个内部端口。
  第三步,定义合法IP地址池。
  定义合法IP地址池命令的语法如下:
  ip nat pool 地址池名称起始IP地址 终止IP地址子网掩码
  其中,地址池名字可以任意设定。
  示例:
  ip nat pool chinanet 61.159.62.130 61.159.62.190 netmask 255.255.255.192 //指明地址缓冲池的名称为chinanet,IP地址范围为61.159.62.130~61.159.62.190,子网掩码为255.255.255.192。需要注意的是,即使掩码为255.255.255.0,也会由起始IP地址和终止IP地址对IP地址池进行限制。
  或ip nat pool test 61.159.62.130 61.159.62.190 prefix-length 26
  注意,如果有多个合法IP地址范围,可以分别添加。例如,如果还有一段合法IP地址范围为"211.82.216.1~211.82.216.254",那么,可以再通过下述命令将其添加至缓冲池中。
  ip nat pool cernet 211.82.216.1 211.82.216.254 netmask 255.255.255.0
  或
  ip nat pool test 211.82.216.1 211.82.216.254 prefix-length 24
  第四步,定义内部网络中允许访问Internet的访问列表
  定义内部访问列表命令的语法如下:
  access-list 标号 permit 源地址通配符(其中,标号为1~99之间的整数)
  access-list 1 permit 172.16.100.0 0.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-list2 permit 172.16.98.0 0.0.0.255
  access-list3 permit 172.16.99.0 0.0.0.255
  第五步,实现网络地址转换
  在全局设置模式下,将第四步由access-list指定的内部本地地址列表与第三步指定的合法IP地址池进行地址转换。命令语法如下:
  ip nat inside source list 访问列表标号 pool 内部合法地址池名字
  示例:
  ip nat inside source list 1 pool chinanet
  如果有多个内部访问列表,可以一一添加,以实现网络地址转换,如
  ip nat inside source list 2 pool chinanet
  ip nat inside source list 3 pool chinanet
  如果有多个地址池,也可以一一添加,以增加合法地址池范围,如
  ip nat inside source list 1 pool cernet
  ip nat inside source list 2 pool cernet
  ip nat inside source list 3 pool cernet
  至此,动态地址转换设置完毕。
  3).端口复用动态地址转换(PAT)   
内部网络使用的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。
  第一步,设置外部端口。
  interface serial 0
  ip address 202.99.160.1 255.255.255.252
  ip nat outside
  第二步,设置内部端口。
  interface ethernet 0
  ip address 10.100.100.1 255.255.255.0
  ip nat inside
  第三步,定义合法IP地址池。
  ip nat pool onlyone 202.99.160.2 202.99.160.2 netmask 255.255.255.252
  // 指明地址缓冲池的名称为onlyone,IP地址范围为202.99.160.2,子网掩码为255.255.255.252。由于本例只有一个IP地址可用,所以,起始IP地址与终止IP地址均为202.99.160.2。如果有多个IP地址,则应当分别键入起止的IP地址。
  第四步,定义内部访问列。
  access-list 1 permit 10.100.100.0 0.0.0.255
  允许访问Internetr的网段为10.100.100.0~10.100.100.255,子网掩码为255.255.255.0。需要注意的是,在这里子网掩码的顺序跟平常所写的顺序相反,即0.0.0.255。
  第五步,设置复用动态地址转换。
  在全局设置模式下,设置在内部的本地地址与内部合法IP地址间建立复用动态地址转换。命令语法如下:
  ip nat inside source list访问列表号pool内部合法地址池名字overload
  示例:
  ip nat inside source list1 pool onlyone overload //以端口复用方式,将访问列表1中的私有IP地址转换为onlyone IP地址池中定义的合法IP地址。
  注意:overload是复用动态地址转换的关键词。
  至此,端口复用动态地址转换完成。
  还可以这样写:
  ip nat inside source list 1 interface serial 0 overload

编辑本段网络地址转换(NAT)实例

  示例一:全部采用端口复用地址转换
  当ISP分配的IP地址数量很少,网络又没有其他特殊需求,即无需为Internet提供网络服务时,可采用端口复用地址转换方式,使网络内的计算机采用同一IP地址访问Internet,在节约IP地址资源的同时,又可有效保护网络内部的计算机。
  网络环境为:
  局域网采用10Mb/s光纤,以城域网方式接入Internet。路由器选用拥有2个10/100 Mb/s自适应端口的Cisco 2611。内部网络使用的IP地址段为192.168.100.1~192.168.100.254,局域网端口Ethernet 0的IP地址为192.168.100.1,子网掩码为255.255.0.0。网络分配的合法IP地址范围为202.99.160.128~202.99.160.131,连接ISP的端口Ethernet 1的IP地址为202.99.160.129,子网掩码为255.255.255.252。可用于转换的IP地址为202.99.160.130。要求网络内部的所有计算机均可访问Internet。
  案例分析:
  既然只有一个可用的合法IP地址,同时处于局域网的服务器又只为局域网提供服务,而不允许Internet中的主机对其访问,因此完全可以采用端口复用地址转换方式实现NAT,使得网络内的所有计算机均可独立访问Internet。
  配置清单:
  interface fastethernet0/0
  ip address 192.168.100.1 255.255.0.0 //定义本地端口IP地址
  duplex auto
  speed auto
  ip nat inside // 定义为本地端口
  !
  interface fastethernet0/1
  ip address 202.99.160.129 255.255.255.252
  duplex auto
  speed auto
  ip nat outside
  !
  ip nat pool onlyone 202.99.160.130 202.99.160.130 netmask 255.255.255.252 //定义合法IP地址池,名称为onlyone
  access-list 1 permit 192.168.100.0 0.0.0.255 //定义本地访问列表
  ip nat inside source list1 pool onlyone overload //采用端口复用动态地址转换
  示例二:动态地址+端口复用地址转换
  许多FTP网站考虑到服务器性能和Internet连接带宽的占用问题,都限制同一IP地址的多个进程访问。如果采用端口复地址转换方式,则网络内的所有计算机都采用同一IP地址访问Internet,那么,将因此而被禁止对该网站的访问。所以,当提供的合法IP地址数量稍多时,可同时采用端口复用和动态地址转换方式,从而既可保证所有用户都能够获得访问Internet的权力,同时,又不致、某些计算机因使用同一IP地址而被限制权限。需要注意的是,由于所有计算机都采用动态地址转换方式,因此Internet中的所有计算机将无法实现对网络内部服务器的访问。
  网络环境:
  局域网以2Mb/s DDN专线接入Internet,路由器选用安装了广域网模块的Cisco 2611,如图4-2-2所示。内部网络使用的IP地址段为172.16.100.1~172.16.102.254,局域网端口Ethernet 0的IP地址为172.16.100.1,子网掩码为255.255.0.0。网络分配的合法IP地址范围为202.99.160.128~202.99.160.192,子网掩码为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。
  配置清单:
  interface fastethernet0/1
  ip address 172.16.100.1 255.255.0.0 //定义局域网端口IP地址
  duplex auto
  speed auto
  ip nat inside //定义为局域端口
  !
  interface serial 0/0
  ip address 202.99.160.129 255.255.255.192 //定义广域网端口IP地址
  !
  duplex auto
  speed auto
  ip nat outside //定义为广域端口
  !
  ip nat pool public 202.99.160.190 202.130.160.190 netmask 255.255.255.192 //定义合法IP地址池,名称为public
  ip nat pool super 202.99.160.130 202.130.160.189 netmask 255.255.255.192 //定义合法IP地址池,名称为super
  access-list1 permit 172.16.100.0 0.0.0.255 //定义本地访问列表1
  access-list2 permit 172.16.101.0 0.0.0.255 //定义本地访问列表2
  access-list2 permit 172.16.102.0 0.0.0.255
  ip nat inside source list1 pool super //定义列表1采用动态地址转换
  ip nat inside source list2 pool public overload //定义列表2采用端口复用地址转换
  示例三:静态地址转换+端口复用地址转换
  其实在很多时候,网络中的服务器既为网络内部的客户提供网络服务,又同时为Internet中的用户提供访问服务。因此,如果采用端口复用地址转换或动态地址转换,将由于无法确定服务器的IP地址,而导致Internet用户无法实现对网络内部服务器的访问。此时,就应当采用静态地址转换+端口复用地址转换的NAT方式。也就是说,对服务器采用静态地址转换,以确保服务器拥有固定的合法IP地址。而对普通的客户计算机则采用端口复用地址转换,使所有用户都享有访问Internet的权力。
  网络环境为:
  局域网采用10Mb/s光纤,以城域网方式接入Internet。路由器选用拥有2个10/100 Mb/s自适应端口的Cisco 2611。内部网络使用的IP地址段为10.18.100.1~10.18.104.254,局域网端口Ethernet 0的IP地址为10.18.100.1,子网掩码为255.255.0.0。网络分配的合法IP地址范围为211.82.220.80~211.82.220.87,连接ISP的端口Ethernet 1的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地址。
  配置清单:
  interface fastethernet0/0
  ip address 10.18.100.1 255.255.0.0 //定义局域网口IP地址
  duplex auto
  speed auto
  ip nat inside //定义局域网口
  !
  interface fastethernet0/1
  ip address 211.82.220.81 255.255.255.248 //定义广域网口IP地址
  duplex auto
  speed auto
  ip nat outside //定义广域网口
  !
  ip nat pool every 211.82.220.86 211.82.220.86 netmask 255.255.255.248 //定义合法IP地址池
  access-list 1 permit 10.18.101.0 0.0.0.255 //定义本地访问列表1
  access-list 1 premit 10.18.102.0 0.0.0.255
  access-list 1 premit 10.18.103.0 0.0.0.255
  access-list 1 premit 10.18.104.0 0.0.0.255
  ip nat inside source list1 pool every overload //定义列表达1采用端口复用地址转换
  ip nat inside source static 10.18.100.10 211.82.220.82 //定义静态地址转换
  ip nat inside source static 10.18.100.11 211.82.220.83
  ip nat inside source static 10.18.100.12 211.82.220.84
  ip nat inside source static 10.18.100.13 211.82.220.85
  示例四:TCP/UDP端口NAT映射
  如果ISP提供的合法IP地址的数量较多,我们自然可以采用静态地址转换+端口复用动态地址转换的方式得以完美实现。但如果ISP只提供4个IP地址,其中2个作为网络号和广播地址而不可使用,1个IP地址要用于路由器定义为默认网关,那么将只剩下1个IP地址可用。当然我们也可以利用这个仅存的一个IP地址采用端口复用地址转换技术,从而实现整个局域网的Internet接入。但是由于服务器也采用动态端口,因此,Internet中的计算机将无法访问到网络内部的服务器。有没有好的解决问题的方案呢?这就是TCP/UDP端口NAT映射。
  我们知道,不同应用程序使用的TCP/UDP的端口是不同的,比如,Web服务使用80,FTP服务使用21,SMTP服务使用25,POP3服务使用110,等等。因此,可以将不同的TCP端口绑定至不同的内部IP地址,从而只使用一个合法的IP地址,即可在允许内部所有服务器被Internet访问的同时,实现内部所有主机对Internet访问。
  网络环境:
  局域网采用10Mb/s光纤,以城域网方式接入Internet。路由器选用拥有2个10/100 Mb/s自适应端口的Cisco 2611。内部网络使用的IP地址段为192.168.1.1~192.168.1.254,局域网端口Ethernet 0的IP地址为192.168.1.1,子网掩码为255.255.255.0。网络分配的合法IP地址范围为,211.82.220.128~211.82.220.130,连接ISP的端口Ethernet 1的IP地址为211.82.220.129,子网掩码为255.255.255.252,可用于转换的IP地址为211.82.220.129。要求网络内部的所有计算机均可访问Internet。
  案例分析:
  既然只有一个可用的合法IP地址,当然只能采用端口复用方式实现NAT,不过,由于同时又要求网络内部的服务器可以被Internet访问到,因此,必须使用PAT创建TCP/UDP端口的NAT映射。需要注意的是,也可以直接使用广域端口创建TCP/UDP端口的NAT映射,也就是说,即使只有一个IP地址,也可以完美实现端口复用。由于合法IP地址位于路由器端口上,所以,不再需要定义NAT池,只简单地使用inside source list语句即可。
  需要注意的是,由于每种应用服务都有自己默认的端口,所以,这种NAT方式下,网络内部每种应用服务中只能各自有一台服务器成为Internet中的主机,例如,只能有一台Web服务器,一台E-mail服务,一台FTP服务器。尽管可以采用改变默认端口的方式创建多台应用服务器,但这种服务器在访问时比较困难,要求用户必须先了解某种服务采用的新TCP端口。
  配置清单:
  interface fastethernet0/0
  ip address 192.168.1.1 255.255.255.0//指定局域网口的IP地址
  duplex auto
  speed auto
  ip nat inside //指定局域网接口
  !
  interface fastethernet0/1
  ip address 211.82.220.129 255.255.255.248 //指定广域网口的IP地址
  access-list 1 permit 192.168.1.0 0.0.0.255
  !
  ip nat inside source list1 interface fastethernet0/1 overload //启用端口复用地址转换,并直接采用fastethernet0/1的IP地址。
  ip nat inside source static tcp 192.168.1.11 80 211.82.220.129 80
  ip nat inside source static tcp 192.168.1.12 21 211.82.220.129 21
  ip nat inside source static tcp 192.168.1.13 25 211.82.220.129 25
  ip nat inside source static tcp 192.168.1.13 110 211.82.220.129 110
  示例五:利用地址转换实现负载均衡
  随着访问量的上升,当一台服务器难以胜任时,就必须采用负载均衡技术,将大量的访问合理地分配至多台服务器上。当然,实现负载均衡的手段有许多种,比如可以采用服务器群集负载均衡、交换机负载均衡、DNS解析负载均衡等等。
  其实除此以外,也可以通过地址转换方式实现服务器的负载均衡。事实上,这些负载均衡的实现大多是采用轮询方式实现的,使每台服务器都拥有平等的被访问机会。
  网络环境:
  局域网以2Mb/s DDN专线拉入Internet,路由器选用安装了广域网模块的Cisco 2611。内部网络使用的IP地址段为10.1.1.1~10.1.3.254,局域网端口Ethernet 0的IP地址为10.1.1.1,子网掩码为255.255.252.0。网络分配的合法IP地址范围为202.110.198.80~202.110.198.87,连接ISP的端口Ethernet 1的IP地址为202.110.198.81,子网掩码为255.255.255.248。要求网络内部的所有计算机均可访问Internet,并且在3台Web服务器和2台FTP服务器实现负载均衡。
  案例分析:
  既然要求网络内所有计算机都可以接入Internet,而合法IP地址又只有5个可用,当然可采用端口复用地址转换方式。本来对服务器通过采用静态地址转换,赋予其合法IP地址即可。但是,由于服务器的访问量太大(或者是服务器的性能太差),不得不使用多台服务器作负载均衡,因此,必须将一个合法IP地址转换成多相内部IP地址,以轮询方式减轻每台服务器的访问压力。
  配置文件:
  interface fastethernet0/1
  ip adderss 10.1.1.1 255.255.252.0 //定义局域网端口IP地址
  duplex auto
  speed auto
  ip nat inside //定义为局域端口
  !
  interface serial 0/0
  ip address 202.110.198.81 255.255.255.248 //定义广域网端口IP地址
  duplex auto
  speed auto
  ip nat outside //定义为广域端口
  !
  access-list 1 permit 202.110.198.82 //定义轮询地址列表1
  access-list 2 permit 202.110.198.83 //定义轮询地址列表2
  access-list 3 permit 10.1.1.0 0.0.3.255 //定义本地访问列表3
  !
  ip nat pool websev 10.1.1.2 10.1.1.4 255.255.255.248 type rotary //定义Web服务器的IP地址池,Rotary关键字表示准备使用轮询策略从NAT池中取出相应的IP地址用于转换进来的IP报文,访问202.110.198.82的请求将依次发送给web服务器:10.1.1.2、10.1.1.3和10.1.1.4
  ip nat pool ftpsev 10.1.1.8 10.1.1.9 255.255.255.248 type rotary //定义ftp服务器的IP地址池。
  ip nat pool normal 202.110.198.84 202.110.198.84 netmask 255.255.255.248 //定义合法IP地址池,名称为normal
  ip nat inside destination list 1 pool websev //inside destination list 语句定义与列表1相匹配的IP地址的报文将使用轮询策略
  ip nat inside destination list 2 pool ftpsev

编辑本段NAT的端口转换方法

Full cone NAT

  即著名的一对一(one-to-one)NAT

一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。任意外部主机都能通过给eAddr:port2发包到达iAddr:port1

Address-Restricted cone NAT

  限制地址,即只接收曾经发送到对端的IP地址来的数据包。

一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。任意外部主机(hostAddr:any)都能通过给eAddr:port2发包到达iAddr:port1的前提是:iAddr:port1之前发送过包到hostAddr:any. "any"也就是说端口不受限制

Port-Restricted cone NAT

  类似受限制锥形NAT(Restricted cone NAT),但是还有端口限制。
  一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。一个外部主机(hostAddr:port3)能够发包到达iAddr:port1的前提是:iAddr:port1之前发送过包到hostAddr:port3.

Symmetric NAT(对称NAT)

  每一个来自相同内部IP与port的请求到一个特定目的地的IP地址和端口,映射到一个独特的外部来源的IP地址和端口。
  同一个内部主机发出一个信息包到不同的目的端,不同的映射使用
  外部主机收到了一封包从一个内部主机可以送一封包回来

编辑本段受NAT影响的应用程序

  一些高层协议(比如FTP,Quake,SIP,VPN)是在IP包的有效数据内发送网络层(第三层)信息的。比如,主动模式的FTP使用单独的端口分别来控制命令传输和数据传输。当请求一个文件传输时,主机在发送请求的同时也通知对方自己想要在哪个端口接受数据。但是,如果主机是在一个简单的NAT防火墙后发送的请求,那么由于端口的映射将会使对方接收到的信息无效。
  一个应用层网关(Application Layer Gateway或ALG)可以修正这个问题。运行在NAT防火墙设备上的ALG软件模块可以更新任何由地址转换而导致无效的信息。显然,ALG需要明白它所要修正的上层协议,所以每个有这种问题的协议都需要有一个单独的ALG。
  但是,除FTP外的大多数传统的客户机-服务器协议不需要发送网络层(第三层)信息,也就不需要ALG。
  这个问题的另一个可能的解决方法是使用象STUN这样的技术,但是这只针对建立在UDP上的高层协议,并且需要它内建这种技术。这种技术对对称NAT也是无效的。还有一种可能的方案是UPnP,但它需要和NAT设备配合起来使用

编辑本段NAT穿透的方法

  目前常用的针对UDP的NAT 穿透(NAT Traversal)方法主要有:
  STUN
  TURN
  ICE
  uPnP等。
  其中ICE方式由于其结合合了STUN和TURN的特点,所以使用最为广泛。
  针对TCP的NAT 穿透技术目前仍为难点。实用的技术仍然不多。
  NAT ( natthew)

编辑本段NAT 常见问题

1. NAT的作用是什么?

  NAT的作用是把内网的私有地址,转化成外网的公有地址。使得内部网络上的(被设置为私有IP地址的)主机可以访问Internet。

2. NAT分为哪几种?

  NAT可以分为Basic NAT和PAT:
  - Basic NAT只转化IP,不映射端口
  - PAT除了转化IP,还做端口映射,可以用于多个内部地址映射到少量(甚至一个)外部地址。
  NAT还可以分为静态NAT和动态NAT:
  - 静态NAT,将内部网络中的每个主机都永久映射成外部网络中的某个合法的地址,多用于服务器。
  - 动态NAT,则是在外部网络中定义了一个或多个合法地址,采用动态分配的方法映射到内部网络。

3.为什么需要有NAT?

  NAT的主要作用,是解决IP地址数量紧缺。当大量的内部主机只能使用少量的合法的外部地址,就可以使用NAT把内部地址转化成外部地址。
  NAT还可以防止外部主机攻击内部主机(或服务器)。

4. 怎样映射?

  如何将大量的内部地址,映射成少量的外部地址?
  对于第四层是TCP或UDP的数据包,NAT通过更改源端口号,来实现多对少的映射。
  例如:内部IP1~IP4,4个地址映射成外部一个地址IP5。
  (IP1,Port1)映射成(IP5,Port1)
  (IP2,Port1)映射成(IP5,Port2)
  (IP3,Port2)映射成(IP5,Port3)
  (IP4,Port2)映射成(IP5,Port4)
  对于ICMP包,NAT通过更改ICMP的ID,来实现多对少的映射。

5.TCP或UDP的端口,原本是用来做什么的?

  端口号是用来连接上层程序的。例如,端口号23,对应了Telnet;端口号80,对应了Http等等。
  因此,在本动画中,当R1转化H1发送给Server的TCP包的时候,不能转化目的地端口。Server正是通过端口号23,才知道把收到的TCP交给Telnet处理。

6. NAT有什么弊端?

  在一个具有NAT功能的路由器下的主机并没有建立真正的端对端连接,并且不能参与一些因特网协议。一些需要初始化从外部网络建立的TCP连接,和使用无状态协议(比如UDP)的服务将被中断。除非NAT路由器作一些具体的努力,否则送来的数据包将不能到达正确的目的地址。(一些协议有时可以在应用层网关的辅助下,在参与NAT的主机之间容纳一个NAT的实例,比如FTP。)NAT也会使安全协议变的复杂。

NAT的局限性

  (1)NAT违反了IP地址结构模型的设计原则。IP地址结构模型的基础是每个IP地址均标识了一个网络的连接。Internet的软件设计就是建立在这个前提之上,而NAT使得有很多主机可能在使用相同的地址,如10.0.0.1。
  (2)NAT使得IP协议从面向无连接变成立面向连接。NAT必须维护专用IP地址与公用IP地址以及端口号的映射关系。在TCP/IP协议体系中,如果一个路由器出现故障,不会影响到TCP协议的执行。因为只要几秒收不到应答,发送进程就会进入超时重传处理。而当存在NAT时,最初设计的TCP/IP协议过程将发生变化,Internet可能变得非常脆弱。
  (3)NAT违反了基本的网络分层结构模型的设计原则。因为在传统的网络分层结构模型中,第N层是不能修改第N+1层的报头内容的。NAT破坏了这种各层独立的原则。
  (4)有些应用是将IP地址插入到正文的内容中,例如标准的FTP协议与IP Phone协议H.323。如果NAT与这一类协议一起工作,那么NAT协议一定要做适当地修正。同时,网络的传输层也可能使用TCP与UDP协议之外的其他协议,那么NAT协议必须知道并且做相应的修改。由于NAT的存在,使得P2P应用实现出现困难,因为P2P的文件共享与语音共享都是建立在IP协议的基础上的。
  (5)NAT同时存在对高层协议和安全性的影响问题。RFC对NAT存在的问题进行了讨论。NAT的反对者认为这种临时性的缓解IP地址短缺的方案推迟了Ipv6迁移的进程,而并没有解决深层次的问题,他们认为是不可取的。
分享到:
评论

相关推荐

    sort_nat.zip_sort nat_sort_nat

    标题中的"sort_nat.zip_sort nat_sort_nat"可能是指一个用于整理文件名的程序或脚本,它采用了自然排序(Natural Sort)的方式,使得文件名按照人类阅读习惯进行排序。自然排序不仅考虑字符的顺序,还能理解数字序列...

    专用接口芯片NAT9914及其应用_nat9914_专用接口芯片NAT9914及其应用_

    《专用接口芯片NAT9914及其应用》 在信息技术领域,接口芯片扮演着至关重要的角色,它们是系统间通信的关键桥梁。其中,NAT9914是一款专为通用接口总线(GPIB)设计的高性能接口芯片,广泛应用于测试与测量设备、...

    UDP穿越Symmetric NAT(对称型NAT)的端口猜测方法

    标题中的“UDP穿越Symmetric NAT(对称型NAT)的端口猜测方法”涉及到的是互联网通信中的一个关键问题,即如何在对称型网络地址转换(Symmetric NAT)环境中实现用户数据报协议(UDP)的数据传输。Symmetric NAT是一种...

    NatTypeTest工具,NAT类型测试小工具

    **NAT类型测试工具——NatTypeTest** 在互联网通信中,NAT(Network Address Translation,网络地址转换)是一种网络技术,用于将私有IP地址转换为公共IP地址,以解决IPv4地址短缺的问题。NAT类型是描述网络连接中...

    专用接口芯片NAT9914及其应用

    ### 专用接口芯片NAT9914及其应用 #### 概述 随着自动化测量技术的发展,对于带有通用接口总线(GPIB)接口的仪器需求日益增长。为了实现这一目标,通常采用专用的大规模集成电路(IC)来构建GPIB接口。这些专用IC...

    网络地址转换nat实验详细配置

    ### 网络地址转换(NAT)实验详细配置 #### 实验背景及目标 本实验旨在通过实际操作深入理解并掌握网络地址转换(Network Address Translation, NAT)的不同类型及其配置方法,包括静态NAT、动态NAT以及PAT(Port ...

    windows 系统NAT类型检测工具

    NAT类型通常分为三种:完全锥形NAT、限制锥形NAT和端口限制锥形NAT,这决定了设备对外部网络的可达性和可识别性。本文将详细介绍NAT类型及其检测工具。 **NAT类型详解** 1. **完全锥形NAT (Full Cone NAT)** 在...

    NAT64-rfc6146

    NAT64是一种网络地址和协议转换技术,它允许IPv6-only(只有IPv6地址的)客户端能够与IPv4服务器通信。这种技术在RFC6146文档中得到了标准化,它是由IETF(互联网工程任务组)在2011年发布的标准跟踪文档。NAT64是...

    何为NAT 何为NAT 何为NAT

    NAT(Network Address Translation)是网络地址转换的缩写,是一种网络技术,用于解决公网IP地址短缺的问题。通过NAT,内部网络中的设备可以使用私有IP地址进行通信,而对外界显示统一的公网IP地址,从而有效地节省...

    ASA中的策略NAT

    **策略NAT(Policy-Based NAT)**是一种网络地址转换技术,它允许管理员基于特定的源和目的IP地址以及端口来定义NAT规则,与传统的源NAT(PAT)不同,策略NAT不仅可以转换源地址,还可以根据需要转换目的地址。...

    windows网络流量nat工具

    NAT(Network Address Translation)是网络地址转换技术,主要用于解决IP地址稀缺问题,它允许内部网络的设备使用私有IP地址,通过一个公共IP地址访问外部网络。在Windows操作系统中,实现NAT功能通常依赖于操作系统...

    NAT配置实验报告_17113501

    【NAT配置实验报告_17113501】是关于网络地址转换(NAT)配置的一个实验报告,主要涉及在Windows Server 2003虚拟机和Cisco Packet Tracer仿真环境中实施NAT的过程,以实现内外网的通信。 **NAT(Network Address ...

    wireshark的NAT分析

    ### Wireshark的NAT分析 #### 一、引言 在现代网络环境中,网络地址转换(Network Address Translation,简称NAT)是一项重要的技术,它允许一个或多个私有IP地址在网络边界路由器上被转换为一个公共IP地址,从而...

    九、常用网络协议与应用-静态NAT、动态NAT、NAPT、Easy ip NAT、NAT server【基于华为ensp】

    本篇文章将深入探讨几种常见的NAT类型,包括静态NAT、动态NAT、NAPT、Easy IP NAT以及NAT Server,并结合华为的ENSPI(Enterprise Network Simulation Platform - Interactive)进行实践操作。 1. 静态NAT:静态NAT...

    NAT探测 使用stun协议 java和python版本

    NAT(Network Address Translation)探测是一项关键的网络技术,它涉及到P2P(对等网络)通信中的内网穿透问题。在P2P网络中,由于很多设备位于NAT之后,它们不能直接与外部网络进行通信,因此需要通过NAT探测来识别...

    Java实现UDP穿透NAT技术

    在处理网络通信时,NAT(Network Address Translation)技术被广泛应用于路由器上,用于将私有IP地址转换为公共IP地址,以便内部网络设备能够与外部网络通信。然而,NAT会阻碍对等(Peer-to-Peer)通信,因为每个设备...

    实验:使用静态NAT对外发布公司官网.docx

    实验:使用静态NAT对外发布公司官网 在IT领域,特别是网络管理中,NAT(Network Address Translation)是一种网络技术,用于将内部网络中的私有IP地址转换为全球唯一的公网IP地址,以便内部网络的设备可以与外部...

    路由NAT和代理的区别

    ### 路由NAT与代理的区别 随着互联网技术的发展,如何高效地连接至互联网成为了一个重要的议题。本文旨在深入探讨路由、网络地址转换(NAT)与代理服务器(Proxy)之间的区别及其应用场景。 #### 一、直接路由 ...

    实验:Jan16公司使用动态NAT访问互联网.docx

    **实验:Jan16公司使用动态NAT访问互联网** **一、实验内容** Jan16公司的网络环境中,内部网络需要通过动态NAT技术访问互联网。动态NAT是一种网络地址转换方式,它允许内部网络的私有IP地址通过共享一组公网IP地址...

    多出口NAT策略路由配置

    多出口NAT策略路由案例·已完成·GNS3 通过配置实现: 宿舍区访问互联网使用电信出口.教学区使用联通出口 任何一条链路故障,能够自动切换 宿舍区和教学区均使用路由器出口地址做PAT 配置思路: 基础拓扑搭建. 划分...

Global site tag (gtag.js) - Google Analytics