几句话就能让你明白:网络地址转换(NAT)

【NAT:网络地址转换】

原理:通过转换源地址或目标地址来实现

实现方法:根据公有IP个数的多少

      #静态转换:一对一,常用于内部服务器的发布

      #动态转换:多对多,内网访问外网

      #端口多路复用:一个公有IP对应多个私有IP,用于内网访问外网

【PAT:端口多路复用】

原理:通过端口号区分内部不同路径

作用:实现多个内部主机共享一个IP上网

1、可以使用内网访问外网

2、可以将内部服务器发布到外网中

【端口映射】

多台内部服务器通过一个公有IP进行发布

、NAT概述

   NAT(Network Address Translation,网络地址转换),将私有地址转换成公网地址,缓解IP地址的不足,并且隐藏内部服务器的私有地址

(1)、NAT的概念与实现方法

1、NAT概述

ØNAT将自动修改IP包头中的源IP地址或目的IP地址,IP地址的检验则在NAT处理过程中自动完成

Ø有一些应用程序将源IP地址嵌入到IP数据包的数据部分中,所以还需要同时对数据部分进行修改,以匹配IP头中已经修改过的源IP地址,否则,在包的数据部分嵌入了IP地址的应用程序不能正常工作

2、NAT的实现方法

【静态转换,Static  Translation】

Ø将内部网络的私有IP地址转换为公有合法的IP地址

ØIP地址的对应关系是一对一的,而且是不变的

【动态转换,Dyanmic  Translation】

Ø将内部网络的私有IP地址转换为公有合法的IP地址

ØIP地址的对应头系是不确定的,而且是随机的

Ø动态转换也是一对一的转换,所以只有内部网络同时访问Internet的主机数少于配置的合法地址集中的IP地址数时,才可以使用动态转换

【端口多路复用,Port  Address  Translation,PAT】

Ø改变外出数据包的源IP地址和源端口并进行端口转换,即端口地址转换采用此方法

Ø内部网络的所有主机均可共享一个合法的外部IP地址实现互联网的访问,从而可以最大限度地节约IP地十资源

Ø目前网络中使用最多的就是端口多路复用的方式

(2)、NAT的术语与转换表


几句话就能让你明白:网络地址转换(NAT)


【内部局部IP地址:inside local ip address】

Ø在内部网络中分配给主机的私有IP地址

Ø该地址是从RFC1918(私有互联网空间地址分配)所定义的私有地址空间中分配的

【内部全局IP地址:inside global ip address】

Ø一个合法的IP地址(由NIC或网络服务提供商分配)

Ø该地址通常是从全球统一可寻址的地址空间中分配的,一般由互联网服务提供商(ISP)提供

【外部局部IP地址:outside local ip address】

Ø外部主机表现在内部网络的IP地址

Ø这一地址是从内部可寻址的地址空间中分配的

【外部全局IP地址:outside global ip address】

Ø由其所有者给外部网络上的主机分配的IP地址

Ø该地址通常也是从全球统一可寻址的地址空间中分配的

【简单转换条目:simple translation entry】

Ø将一个IP地址映射到另一个IP地址的转换条目

【扩展转换条目:extended translation entry】

Ø映射IP地址和端口到另一对IP地址和端口条目

(3)、NAT实现方法

1、静态转换和动态转换

使用NAT转换内部局部地址,就是在内部局部地址和内部全局地址之间建立

一个映射关系

2、PAT

   #复用内部的全局地址,就是通过准许对TCP连接或UDP会话的端口进行转换,从而节省内部全局地址的合法地址

   #当多个不同的内部局部地址映射到同一个内部全局地址时,使用各个内部

主机的TCP或UDP端口号来区分它们

(4)、NAT的特性

【NAT的优势】

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

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

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

ØNAT支持地址重叠

【NAT的缺点】

ØNAT会使延迟增大

ØNAT增加了配置和排错的复杂性

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

、NAT的配置

Ø首先必须弄清楚内部和外部接口,以及哪个外部接口上启用NAT

Ø连接到用户内部网络的接口是NAT内部接口,而连接到外部网络(互联网)的接口是NAT外部接口

(1)、静态NAT

1、静态NAT配置

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 static192.168.100.2  61.159.62.160

【在内部和外部端口上启用NAT】

   #内部端口连接的网络使用的是内部IP地址;

   #外部端口连接的网络使用的是外部的网络地址

   #要NAT发挥作用,必须在这两个端口上启用NAT

Router(config)#int f0/0               /外网接口

Router(config-if)#ip nat outside

Router(config)#int f1/0               /内网接口

Router(config-if)#ip nat inside

《注意》:

边缘设备一定存在“默认路由、NAT”

2、NAT端口映射

Router(config)#ip nat inside source static protocol local-ip udp/tcp-port global-ipudp/tcp-port [ extendable ]

【例:公司内部有两台服务器,web和smtp,参应IP是192.168.100.3和192.168.100.2,使用端口映射将两个服务器转换成公网IP‘65.52.21.10’】

   Router(config)# ip nat inside source statictcp 192.168.100.2  25  65.52.21.10 25  extendable

   Router(config)# ip nat inside source statictcp 192.168.100.3  80  65.52.21.10 80  extendable

(2)、动态NAT

【定义内部网络中允许访问外部网络的访问控制列表】

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

《注意》

   ACL单独使用时,实现包过滤,和其他技术结合使用时(如NAT),仅表示一个范围而以

【定义合法IP地址池】

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

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

   #start-ip/end-ip:起如IP和终止IP地址

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

   #prefix-length prefix-length:子网掩码,以掩码中1的数组表示(如,

      prefix-length 24等同于netmask 255.255.255.0)。两种掩码的表示方

式等价,任意使用一种即可

   #type rotary:地址池中的地址池为循环使用

【例:有多个合法地址池,可以重复使用此条命令添加地址池】

Router(config)#ip nat pool test 1 61.159.62.130 61.159.62.200 netmask

              255.255.255.0

Router(config)#ip nat pool test 2 61.159.62.130 61.159.62.200 netmask

              255.255.255.0

【实现网络地址转换】

Router(config)#ip nat inside soure list access-list-number pool

              pool-name [ overload ]

   ‘overload’(可选),表示使用地址复用,用于PAT

【例:将访问控制列表1中的局部地址转换为test1、test2地址池中定义的全局IP地址】

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

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

(3)、PAT

两种实现方式:

1、使用外部接口IP

2、使用非接口IP

【具体实施步骤】

a)配置外部、内部接口IP地址(此处省略)

b)内部访问列表

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

c)定义合法的IP地址池

Router(config)# ip nat pool benet61.159.62.131  61.159.62.131

               netmask 255.255.255.248

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

Router(config)# ip nat inside source listaccess-list-number pool

               pool-name [overload]

如:Router(config)# ip nat inside source list 1 pool benet overload

注意:如果定义的是接口,就不用定义地址池了

e)在内部和外部端口上启用NAT

f)配置默认路由

(4)、验证NAT的配置

Router#show ip nat translations          /显示当前存在的转换

Router#show ip nat statistics            /查看NAT的统计信息

Router#show ip nat translations verbose  /显示更多的信息

      #UDP超时值:5分钟

      #DNS超时值:1分钟

      #TCP超时值:24小时

      #结束和复位值:1分钟

Router(config)#ip nat transiation { dns-timeout | icmp-timeout | tcp-timeout | udp-timeout |finrst-timeout | syn-timeout }

{seconds | nevers }

(上面的这段命令可以改变超时的默认值,一般情况不改变这些时间)

举例说明:

Router(config)#ip nat translation icmp-timeout 120

                                       /将ICMP协议NAT转换超时设为120秒

Router#clear ip nat translation *       /清除NAT转换表中的所有条目

Router#clear ip nat translation inside   /清除内部转换的条目

Router#clear ip nat translation outside  /清除外部转换的条目

Router#debug ip nat                      /显示每个转换的数据包


本文转自甘兵 51CTO博客,原文链接:http://blog.51cto.com/ganbing/1230462,如需转载请自行联系原作者

上一篇:【MHA】--MHA 介绍(1)


下一篇:netty中的ChannelHandler和ChannelPipeline