×
嵌入式 > 技术百科 > 详情

NAT-PT过渡策略中地址欺骗技术的研究

发布时间:2021-08-02 发布时间:
|

摘要:介绍了nat-pt用到的地址欺骗技术,详细阐述了地址欺骗技术的原理并且在此基础上提出了解决方案。

当肖internet的基础技术ipv4面临的两个最大问题是地址资源耗尽和骨干路由器路由表规模爆炸,这两个问题是ipv4协议本身存在的缺陷,只有对其进行较大的修改才能解决。经过多年的讨论、各种方案的比较权衡,下一代ip协议目前已经基本制定完成,并分配了版本号6,称为ipv6。

ipv6大规模普及面临的一个关键问题:如何渐进地、无伤害地由基于ipv4的网络过渡到基于ipv6的网络,同时尽可能减少过渡的成本。ietf已成立专门的工作组ngtrans来研究从ipv4向ipv6的过渡问题。目前提出的解决方案主要有三种:双协议栈(dual stack)、隧道(tunnel)和网络地址/协议翻译(napt-pt)。

由于现有的ipv4网络仍在工作而且工作得不错,而升级到ipv6的成本很高,所以可以预测,最先升级到ipv6的肯定是那些ipv4很难满足要求的特殊应用驱动的网络,譬如第三代移动通信(3g)、信息家电等。这些网络将采用纯粹的ipv6,而不是ipv4/ipv6共存的双协议栈。

但是现有网络资源绝大多数存在于ipv4网络中,必须保证纯ipv6网络能够与现有ipv4网络通信。网络地址翻译/协议翻译(nat-pt)作为一种支持纯ipv6网络与现有ipv4 internet透明通信的技术,具有其独特的优势。

1 ipv4向ipv6过渡机制研究现状

在未来的一段时间里,ipv4与ipv6将同时并存,相互作用。从ipv4到ipv6的演进必然是一个渐进的过程。引入ipv6技术并实现全球ipv6网络互联,仍然需要一段时间,才能使所有服务都实现对ipv6的支持。在这种情况下,可以预见,internet由ipv4向ipv6过渡需要一个相当长的时间才能完成,完全升级。

目前,解决ipv4网络向ipv6过渡问题成熟的技术主要有三种:

·双协议栈技术(dual stack);

·隧道技术(tunnel);

·协议翻译技术(nat-pt)。 1.1 双协议栈技术(dual stack,rfc2893)

主机同时运行ipv4和ipv6两套协议栈,同时支持两套协议。ipv6和ipv4是功能相近的网络协议,两者都基于相同的物理平台,而且加载于其上的传输层协议tcp和udp又没有任何区别。由图1所示的协议栈结构可以看出:如果一台主机同时支持ipv4和ipv6两种协议,那么该主机既能使用ipv4与支持ipv4协议的主机通信,又能使用ipv6与支持ipv6协议的主机通信,这就是双协议栈技术的工作机理。

“双栈”这个称呼本身有些误导。大多数ipv6实现并不提供两个完全不同的tcp/ip栈分别为ipv4和ipv6服务,而是提供一个混合的栈,在两套协议酷共享大部分代码。

1.2 隧道技术(tunnel,rfc3053)

这种机制用来在ipv4网络之上连接ipv6的站点,站点可以是一台主机,也可以是多个主机。隧道技术将ipv6的分组封装到ipv4的分组中,封装后的ipv4分组将通过ipv4的路由体系传输,分组报头的“协议”域设置为41,指示这个分组的负载是一个ipv6的分组,以便在适当的地方恢复出被封装的ipv6分组并传送给目的站点。隧道技术只要求在隧道的入口和出口处进行修改,对其它部分没有要求,因而非常容易实现。但是隧道技术不能实现ipv4主机与ipv6主机的直接通信。

1.3 ddress translation-protocol translation,rfc2766)

rfc1631详细说明了nat(network address translator)技术的基本原理。虽然nat技术是针对ipv4网络提出的,但只要将ipv4地址和ipv6地址分别看作nat技术中的内部地址和全局地址,就能适用于ipv6技术的演进,这时nat就演进成了nat-pt。利用转换网关在ipv4和ipv6网络之间转换ip报头的地址,同时根据协议不同对分组做相应的语义翻译,就能使纯ipv4和纯ipv6站点之间透明通信。

2 基于napt-pt的方案中地址欺骗技术的研究与实现

2.1 什么是地址欺骗技术

由于当前的ipv6兼容ipv4的机制基于双栈,要实现纯ipv6主机对纯ipv4主机的访问,这时要做类似的地址欺骗和转换。基于napt-pt的过渡方案是在纯ipv4或纯ipv6的网络中提供一个或多个特殊的dns服务器作“地址欺骗”,同时提供一个或多个双栈的服务器做napt-pt网关。dns服务器为整个站点服务,当纯ipv6主机(addr6)发起一个dns查询时,如果dns服务发现目的主机只有ipv4地址(addr4),将会返回该ipv4主机一个按某种策略选定的ipv6地址(addr46)作为查询结果,同时通知napt-pt网关addr6、addr4和addr46这三个地址之间的对应关系,这样napt-pt网关就可以根据这些信息进行地址/协议翻译了。其中,addr46必须是站点内可以路由的。在边界网关处将把目的地址是addr46的报文路由到相应的napt-pt网关。

2.2 地址欺骗解决方案

本方案是建立一张hash表,如表1所示。表1 hash表

表索引源地址源端口
indexaddr6port6

同时提供一个配置文件:其中与hash表有关的内容包括:

·欺骗用的公用ipv4地址,例如:210.25.132.120/29

·欺骗用的ipv6地址前缀,例如:cheating_ip6_addr_pf=0x3f,0xfe,0x81,0xb1,0x00,0x01,0x03,0x00,0x00,0x00,0x00,0x00

nat-pt解决方案如图2所示。

首先,对于纯ipv6主机(host6)发起的访问纯ipv4主机(host4)的情况:

(1)首先host6对dns服务器发出对host4的域名解析请求;

(2)dns服务器解析出host4的地址是addr4,同时发现它是一台纯ipv4主机;

(3)dns服务器通过配置文件naptgw6.conf进行地址欺骗,将目的ipv4地址加上ipv6欺骗地址前缀组成addr46,作为目的主机的ipv6地址,反回给host6,同时通知nat-pt网关进行相应处理;

(4)nat-pt网关通过hash算法得到hash表索引值,在hash表中相应位置保留源ipv6地址和源端口信息;

(5)hash算法得到的索引值作为host6欺骗用的ipv4源端口值,同时nat-pt网关通过配置文件naptgw6.conf选择一个欺骗用ipv4地址addr64作为协议翻译后的源地址;

(6)host6向addr46发出ipv6报文,ipv6报文路由到支持双栈的边界路由器router_dualstack,路由器router_dualstack接收到ipv6报文,把它路由给nat-pt网关,router_dualstack的路由表如表2所示;表2 router_dualstack路由表项

ipv4路由表ipv6路由表
……addr64/29>(7)nat-pt网关发现该报文的目的地址是addr46,于是将源地址改变addr64,将目的地址改为addr4,然后做协议转换,以ipv4数据报文方式发给host4。

对纯ipv4主机(host4)回该纯ipv6(host6)的情况:

(1)host4收到host6发来的数据报,并返回ipv4数据给出addr64。

(2)反回ipv4数据报通过路由器router_dualstack路由到nat-pt网关,根据host4源端口值hash表中查到对应的表项作为目的ipv6地址和端口;

(3)同时源ipv4地址加期骗前缀后地址变为addr46,随后做协议转换,通过nat-pt网关以ipv6数据包方式发给host6;

(4)host6收到返回数据报,一次报文交换成功。

当host4与host6通信时过程正好相反。

2.3 实现负载均衡的方法

在最简单的情况下,假设要使用两个协议翻译网关(gw1和gw2)实现负载均衡,只需要为gw1使用10.0.0.0/9和2001:1000:1::/64做地址欺骗,为gw2使用10.129.0.0/9和2001:1000:2::/64做地址欺骗,在边缘ipv4/v6双栈路由器如表3所示。表3 负载均衡路由表项

ipv4路由表ipv6路由表
……10.0.0.0/9 gw110.129.0.0/9 gw2defualt ………2001:1000:1::/64 gw12001:1000:2::/64 gw2

gw1和gw2理论上自动分配各一半的流量,而所有的设置只需要在网络边缘进行,程序代码不需要做任何修改;对于被服务的站点也是透明的,只需要改dns服务器的设置。

2.4 数据结构

map_tb1数据结构的主要作用是记录hash表中的数据,包括索引值、源ipv6地址和源ipv6端口,以及是否使用标志位。

map_tb1数据结构如下:

strcut map_tb1[index]

{

unsigned char used;

struct in6_addrsrc_ipv6_addr;

in_port_t src_port;

};

hash表存取地址的效率高低直接影响nat-pt网关的连接速度,因此hash表中index的算法很重要。为了尽量避免冲突,提高效率,hash函数涉及的参数有源ipv6地址、源ipv6端口、目的ipv4地址(欺骗用ipv6地址的8~11byte)、目的ipv6端口。这些参数对于每次新的连接都是变化的,通过这些参数相加计算出hash表的index(16位),取1025~65535(去掉0~1024端口值)作为hash表的索引,同时标志位置为1表示已占用,算法计算公式如下所示:

hash程序的简单处理流程如图3所示。

对于hash表地址发生冲突的处理,通过检验标志位得知此索引处是否已存有欺骗地址,然后index值自动加1,继续检验标志位,直至发现没有被占用index。

2.5 方案测试

具体测试方案如表4~6所示。表4 测试环境

nat-pt网关纯ipv6主机纯ipv4主机
操作系统redhat linux 9.0freebsd 4.5 releasewindows 2000
cpuintel piii 800mhzamd k7 500mhzintel p iii 800mhz
内存128mb64mb128mb
网卡全双工100m全双工10m全双工100m
ip地址10.0.0.224/282001:2:1000::1/642001:1:1000:1/6410.0.0.129
主机域名pure6.6.bupt.edu.cnpure4.6test.bupt.edu.cn

表5 ping测试

测试方法在纯ipv6主机上ping对端纯ipv4主机(域名):ping6 pure4.6test.bupt.edu.cn
测试结果pinging 2001:1000:1::a0e1 with 32 bytes 10ms ttl=128ping statistics for 2001:1000:1::a0e1:packets:sent=3,received=3,lost=0(0%)approximate round trip times in milli-seconds:minimum=0ms,maximum=0ms,average=0ms
结果分析在同一台ipv6主机上同时进行多个ping6对端纯ipv4主机(域名)的测试,反

表6 telnet测试

测试方法在纯ipv4主机上telnet对端纯ipv6主机(域名):telnet pure6.6test.bupt.edu.cn 23
测试结果
结果分析

2.6 方案总结

基于napt-pt的方案只是增加了几台设备,而没有对现有设备做任何改动,特别是不要求客户端做任何改动,只需要客户端操作系统实现纯ipv4协议栈或纯ipv6协议栈即可。由于这个方案可以很自然地实现负载均衡,所以可以被大的isp用来为下面接入的所有站点服务,并可以保证被服务的ipv4站点中的任务部分可以在任意时刻升级成双栈,从而实现平稳过渡。

总的来说,本方案具有以下特点:

·适用于纯ipv4与纯ipv6站点间的通信;

·对被服务的站点的主机完全透明;

·不需要主机做任何修改,路由器也不需要升级;

·能与其他现存的过渡技术结合使用,而且保持透明。

从理论上讲,采用napt-pt并不是一种完善的过渡方案,最好的方案是采用双协议栈技术,保持现有ipv4的体系不变,逐渐在ipv4体系上增加ipv6支持,直到最后整个网络都变成双协议栈,建立起全球的ipv4与ipv6共存的体系。然后逐渐去掉ipv4协议,最终过渡到纯粹的ipv6网络。但是这种想法带有很强的理想主义色彩,实际上很难做到。很有可能在过渡的某个阶段出现这种情况:internet的大部分已经支持双栈并实现了ipv6的连接,但是还有一部分仍然是纯粹的ipv4网络,同时由于ipv4地址耗尽等种种原因,有些网络需要马上就使用纯ipv6,因此在现实过渡过程中使用地址欺骗技术的napt-pt方案情况的可能性要远远大于前者。

热门资讯

数据库触发器机投影的设计与实现 EPON中一种基于QoS的MAC协议设计 3G业务的实现及发展趋势 一种DRM数字广播接收机的同步算法 一种HDLC数据转发的全自动硬件引擎设计 为FM基带信号产生19kHz导频音的简单正弦波合成器 基于PSTN的家用电器远程控制系统 超宽带(UWB)极窄脉冲的产生与实现 粗粒度可配置计算结构的研究与发展 滤波多音频系统中图像的有效传输方法 基于Internet的智能家庭网络控制器的实现 便携数据库管理系统的网络连接与安全 基于网络处理器IXP1200的以太网上联卡设计 多队列FIFO——支持网络QoS的重要芯片 多路异步串行通信系统在光纤陀螺组合中的设计与实现

关键字标签

电路IC电源电压单片机电池电容芯片电流电阻电路图传感器接线变压变频变压器功率模块直流变频器原理图液晶波滤串口封装继电器引脚二极管三相接线图天线变比滤波蓝牙电感工作原理控制器贴片充电器压电锂电元件万用总线半导体开关电源逆变器件锂电池嵌入式电路板整流示波器放大器稳压逆变器滤波器步进三极管线圈并联晶振射频物联网定时器干扰微波运放步进电机电压器液屏波形单相并谐负载串联电路原理数码管压器阻抗放大电路电机控制互感器连接器元器件隔离电容器测试仪存器电源电路端子拆解调制编码器集成电路阻器可控开发板电平

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题