基于SOCKS地IPv4向IPv6过渡技术

摘要:SOCKS协议是可用的功能最强大、应用最灵活、安全性较高的代理协议,基于SOCKS的IPv4向IPv6过渡技术已经成为一种不错的选择 。
首先讨论了直接在双栈主机上实现IPv4和IPv6的地址转换的BIA技术,然后讨论了通过一个双栈网关来进行IPv4和IPv6的地址转换的SOCKS64技术,最后对这两种技术进行了比较分析 。
要害词:IPv4,IPv6,SOCKS,BIA,SOCKS64
一、概述
由于IPv6与IPv4相比具有诸多的优越性,IPv6代替IPv4已经成为网络发展的必然趋势 。然而现有IPv4网络是如此的庞大,以至于短时间之内不可能将它全部废除 。因此,需要寻找一种合适的过渡技术来解决这一难题 。由于无状态IP/互联网控制消息协议翻译算法(SIIT)、网络地址翻译-协议转换器(NAT-PT)和栈内凸块(BIS)等过渡技术都存在着这样那样的缺点,隧道技术又不能解决IPv6节点与IPv4节点之间相互通信的问题,而在网络中应用代理服务既可以充分利用IP地址资源,又能够保证网络安全,尤其是全能代理协议SOCKS,它可以完成网页浏览、文件传输和远程登陆等所有工作的代理,是可用的功能最强大、应用最灵活、安全性较高的代理,因而基于具有强大功能的SOCKS代理的IPv4向IPv6过渡技术已经成为一种不错的选择 。基于SOCKS的过渡技术分为两种 。一种是API内凸块(BIA)技术,这种技术直接在双栈主机上实现IPv4和IPv6的地址转换;另一种是SOCKS64技术,这种技术是通过一个双栈网关来进行IPv4和IPv6的地址转换 。
二、BIA技术
BIA技术在双栈主机的SocketAPI模块与TCP/IP模块之间加入一个API翻译器(如图1所示) 。API翻译器包含三个模块:域名解析器,地址映射器和函数映射器 。其中,域名解析器负责对IPv4应用程序的请求域名返回一个正确的应答,地址映射器在主机内部维护一张IPv4与IPv6地址对的表格(分配的IPv4地址来自IPv4地址池中,采用未使用的IPv4地址,如0.0.0.1~ 0.0.0.255),函数映射器负责在IPv4的Socket API函数与IPv6的Socket API函数间相互翻译 。
图1; 采用BIA机制的双栈主机的结构模型
RFC3338中描述了采用BIA机制的双栈主机与IPv6主机之间相互通信的过程 。其中双栈主机DualStack向IPv6主机Host6发起通信的过程如下:
·当双栈主机DualStack上的IPv4应用向它的域名服务器(DNS)发送查询目的主机的地址请求时,域名解析器拦截了这个请求,并产生一个新的查询请求转发给DNS来解析A和AAAA两种记录 。
·DNS解析出Host6的AAAA记录后,将它返回给域名解析器 。
·域名解析器要求地址映射器为IPv6地址分配一个IPv4地址 。
·地址映射器在IPv4地址池中选择一个未用的保留地址,在映射表中注册后返回给域名解析器 。
·域名解析器为分配的IPv4地址产生一条A记录,返回给IPv4应用程序 。
·IPv4应用程序调用IPv4的SocketAPI函数,函数映射器对调用命令进行拦截,判定其是否来自于IPv6的应用 。若不是,跳过翻译程序;否则,函数映射器向地址映射器请求该IPv4地址对应的IPv6地址,地址映射器从映射表中查找后将结果返回 。函数映射器使用收到的这个AAAA型地址调用Host6上相应的IPv6socketAPI函数 。
·当函数映射器接收到Host6上IPv6socketAPI函数的应答后,向地址映射器请求与Host6对应的IPv4地址 。然后,函数映射器利用此IPv4地址继续完成socketAPI函数的调用 。
由IPv6主机Host6发起到双栈主机DualStack的通信过程相对简单一些 。Host6通过它的DNS解析DualStack的AAAA记录,然后向DualStack发送一个IPv6的数据包 。为了通过调用IPv4的API函数和IPv4应用通信,函数映射器检测到IPv6数据包到达Dual Stack后,向地址映射器发送一个IPv4地址请求,并用返回的IPv4地址发起一个IPv4的Socket API调用 。然后,函数映射器再向地址映射器请求与该IPv4地址对应的原来的IPv6地址,按照这个地址对Host6答复 。三、SOCKS64技术

推荐阅读