【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的术语与转换表
【内部局部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,如需转载请自行联系原作者