陈嘉欣,许 博,胡 超*
(陆军工程大学 指挥控制工程学院,江苏 南京)
IP 地址作为网络空间实体的重要标识,在整个互联网的构架中扮演着至关重要的角色。受隐私保护的影响,通常难以利用GPS 获取网络空间实体的地理位置信息,IP 地理定位则是解决这一问题的重要手段。目前IP 地理定位技术对多个领域都有重要的影响,包括商业服务、网络安全管理以及学术研究等[1]。
现有的IP 地理定位方法按照其原理主要分为基于推测的定位算法、基于时延的定位算法以及综合定位算法这3 类[2]。基于推测的定位方法主要利用IP 关联的Whois 信息或反向DNS 主机名等数据推测IP 所在的地理位置,而后两类定位方法主要是通过网络测量的方式,选择时延和路径等特征信息作为地理定位的主要依据。
目前,IP 地理定位商业数据库众多,且在城市级别的定位表现出较高的精度,同时提供了在线和离线查询方式,使其在许多应用场景中相对于其他定位方法更为高效。目前国内常见的IP 定位库包括IP138[3]、Chunzhen[4]、IPCN[5]等。
基于网络测量的定位方法则是在此基础上进一步提升定位的准确度,也是目前研究的主流,典型的方法包括CBG[6]、GeoWeight[7]和SLG[8],主要利用测量得到的时延以及路径等信息,基于时延和地理距离之间的一致性约束原则[2],并结合现有的地标节点,从而获取最终的定位结果。
尽管目前基于网络测量的定位方法能够取得不错的效果,但通常对于探测资源的需求相对较高。但在实际情况下,寻找如此大规模且广泛分布的测量主机可能会面临一些挑战,因此需要开发更具效率的测量方法、优化测量资源的使用方式,或者探索其他数据源来辅助地理定位。
本文主要采用分层定位的思想。首先采用多库对比的方式获取目标IP 所在城市,之后收集区域内部的锚节点地理信息,利用Scamper 工具进行Traceroute测量,获取目标IP 和锚节点的网络路径和时延信息,采用线性和非线性方法实现目标IP 区县级的地理定位。具体流程如图1 所示。
图1 IP 分层地理定位流程
锚节点也被称为地标节点,主要为已知地理位置IP 节点。本文结合目标驱动IP 地理方法[9]中锚节点收集方式,提出了一种区域内锚节点采集方法,其主要步骤如下:
首先,利用定位库提取目标区域内所有IP 地址,利用网络爬虫等手段获取对应的域名和网页数据,结合现有的命名体识别方法提取文本数据中可能包含的单位信息。
其次,针对采集的锚节点,利用IP 的归属单位信息,并结合其指纹信息对主机类型判定,去除其中的云主机节点从而保留有效锚节点。
最后,结合GIS 信息库,获取IP 对应的机构或企业的分布情况,收集其对应的地理位置信息。具体过程如图2 所示。
图2 锚节点采集流程
(1) 城市级定位
利用多定位数据库进行查询并比对其投票结果是实现城市级IP 地理定位的有效策略。为了确保定位的精确性,本文选择了三个知名的IP 地理定位数据库进行查询:IP138[3]、Chunzhen[4]、IPCN[5]。具体操作如下:
a.多数据库比对:若其中至少有两个数据库给出了相同的城市定位结果,则将IP 定位至该城市。
b.路径合理性校验:如果三个数据库给出的城市结果都不相同,进一步分析IP 关联的网络路径信息。查询每个路由IP 的地理定位,从避免路由环路的角度来看,网络路径不太可能出现迂回城市的情况。通过对网络路径的逐一分析,进一步排除不合理的城市定位,确认IP 地址最有可能所在的城市。
(2) 区县级定位
获取目标IP 所在城市后,首先收集城市内部的锚节点信息。其次对城市内活跃IP 地址进行Traceroute 测量,获取城市内较为完整的路由拓扑,采用谱聚类[10]的方法对路由IP 进行聚类,结合锚节点和目标IP 的路径测量结果,优先选择最后一跳路由在同一聚类簇的其他锚节点。为了确保定位的准确性,本文使用3 个及以上的测量节点对目标IP 和锚节点进行Traceroute 测量,利用网络路径和时延特征进行相似性匹配,寻找最接近的锚节点。其中多点路径测量如图3 所示。
图3 多点路径测量示意
为了减少网络性能对特征的影响,在进行多次测量的同时,综合选取路由跳数、时延以及最后一跳路由所属自治域(Autonomous System,AS)这三个属性特征进行相似性匹配。其中路由跳数和时延在进行归一化后,计算其M 维空间的欧式距离作为其相似性度量,如公式(1)和公式(2)。
为了验证本文定位方法的可行性,利用位于山东和福建的4 台云服务器进行路径和时延测量。实验主要所用到的定位库为纯真发布的免费IP 库社区版,提取其中广州市的IP 地址,并利用网络爬虫的方式收集广州市内951 条锚节点信息,随机挑选其中100个IP 作为待定位目标节点(其中各个区县选取IP 数不超过15%),测试分层地理定位的效果。表1 列出了锚节点所在区县分布情况。
表1 广州市锚节点区县分布
在此基础上总共进行5 轮定位测试,具体定位结果如图4 所示,由图4 的结果可以看出,该方法能够有效实现区县级的地理定位,平均正确率达到81%。
图4 区县级定位正确率
本文旨在利用有限的资源实现IP 地址高精度地理定位,提出了一种基于锚节点的分层IP 地理定位方法,以锚节点作为地标实现IP 的区县级地理定位。对广州市收集的锚节点定位结果显示,该方法能够在资源受限的情况下,有效实现IP 高精度地理定位,一定程度上解决了定位困难的问题。在未来的研究过程中需要进一步研究和规范网络探测手段,提取更多的有效锚节点,提升IP 地理定位的准确度和精度。