我正在开发一个 IP 地理定位库,它使用 IPv4 地址的前三个八位字节来确定用户的国家、城市、纬度、经度等。就像一个魅力。
但它不处理 IPv6 地址,我希望它这样做。
有什么方法可以转换 IPv6 地址以获得相当于 IPv4 地址的前三个八位字节的地址,还是它们使用完全不同的编号方案,需要完全不同的 ipgeo 映射?
我正在开发一个 IP 地理定位库,它使用 IPv4 地址的前三个八位字节来确定用户的国家、城市、纬度、经度等。就像一个魅力。
但它不处理 IPv6 地址,我希望它这样做。
有什么方法可以转换 IPv6 地址以获得相当于 IPv4 地址的前三个八位字节的地址,还是它们使用完全不同的编号方案,需要完全不同的 ipgeo 映射?
典型的IPv6 分配是将 /32(四个八位字节)分配给 Internet 提供商(可以是跨国公司),然后将/48(六个八位字节) 分配给终端站点(通常是客户组织)。您可以在IANA 授权块列表中找到一个起点。
这仅适用于在 RIR 数据库中找到的注册。通常不会记录对最终用户的分配,因此,我当前的地址
2a01:e35:8bd9:8bb0:92b:8628:5ca5:5f2b
只会告诉您我的提供商的总部在巴黎(因为它是一家全国性公司,客户可以在法国的任何地方)。
另一个例外是 PI(独立于提供商)分配,通常是 /48。
此外,存在许多用于 IPv4 的地理定位数据库,据我所知,没有用于 IPv6 的数据库。您必须自己做所有事情。
总结一下:工作量比你明显相信的要多。
对诺亚评论的友好更正(6 月 3 日 7:57)--
根据 MaxMind 的客户服务部门(强调我的):“目前不支持 IPv6。在未来的某个时间,我们确实计划实施它,但我们目前没有具体日期。”
与 IPv4 相比,IPv6 使用完全不同的寻址方案。除了一个例外,您无法将 IPv6 地址映射到 IPv4 地址。如果您看到以 2002 开头的 IPv6 地址:则该地址是 6to4 地址。您可能不会看到很多正在使用的,并且它们已被弃用,但它们可映射到 IPv4。
公共 IPv4 地址的每个用户都可以使用 IPv6 空间的 /48(65536 个子网)。这些地址总是以 2002 开头:接下来的两个十六进制数字是 IPv4 地址。所以 2002:5389:1164: 对应于我自己的网络服务器的 IPv4 地址(83.137.17.100):
0x53 = 83
0x89 = 137
0x11 = 17
0x64 = 100
但是所有“正常”的 IPv6 地址都与任何 IPv4 地址完全无关。至少以标准方式。在向其客户推出 IPv6 时,ISP 可以定义 IPv4 和 IPv6 地址之间的关系。但你不会知道这种关系,所以它对你毫无用处......
maxmind.com 的地理定位服务和库可以处理 IPv6。也许他们的东西是你的选择。(我和他们没有任何关系。)
如果你在 wiki 上阅读了一些 ipv6、地址和转换机制,你会发现一些 IPv6 地址模式可能会推断出 ipv4(siit、ipv4-mapped ipv6、nat64、上面写的 2002:* 等等)。其中一个开始: http ://en.wikipedia.org/wiki/IPv6_transition_mechanisms
我不会指望这些方案足够流行来进行通常的地理报告、欺诈保护或事件检测,但我肯定会优先考虑对此类推断的 ipv4 地址进行 ipv4 地理查找而不是 ipv6 地理查找(假设 ipv4 db 更完整)。
我对 ipv6 地理信息的担忧是子网数量惊人。数据库将变得更大(更多 ip 范围),这是预期的,但是对于相同数量的终端地理信息,数据库将变得更稀疏,并且更深的树也需要更长的迭代时间(对于使用二叉树或基数树的实现),这意味着一些性能成本。使用具有 ip 范围的 sql 表的地理数据库可能也会受到影响,因为据我所知,我们没有 128 位的 big-bigint 来使用算术。
另一个问题是手机:如果我没记错的话,ipv6 旨在促进漫游。您可以更换手机信号塔并保留您的 IP。甚至可能在改变城市、地区或国家时。我有点怀疑,因为强大的地址亲和力是 MAC 地址的目的。IP 地址的存在正是为了路由目的,但我认为公平地说,它们可能会变得足够不变,从而削弱地理位置的准确性,显然。
我觉得用户代理/浏览器在应用程序层(例如一些地理位置标头)的协作很可能是未来,即使这可能会被恶作剧的人欺骗。
有一个称为“推荐 Whois ”的协议,它允许提供商发布 IP 地理位置信息,其他人可以检索它。
比如我现在的IP 2001:470:b4ea:babe:d57:15c8:97b:60c9 属于美国的Hurricane Electric。我使用的 IPv4-IPv6 隧道终止的实际服务器在瑞士,但我在奥地利。HE发布了所有这些,所以如果你在这样的支持RWhois的工具中输入IP ,你会在你看到的底部附近找到HE的联系方式
联系人:姓名:私人客户 - 飓风电气
联系方式:街道-地址:私人住宅
联系方式:国家代码:AT
这是我的位置。
没有多少供应商会发布它,也没有多少地理定位工具支持它,但至少它存在。
大多数 IP 地理定位提供商(支持 IPv6,有些仍然不支持)将此 IP 放到瑞士,有些甚至在美国。
由于似乎还没有一种简单的方法可以做到这一点,也许我们有机会做一些在 IPv4 的情况下没有做过的事情 (*)
我们可以停下来问问自己这是否是个好主意。
(*) 或者如果它完成了,它没有工作!
地理位置不好,嗯?互联网与位置无关,我从未见过地理定位用于非平凡非邪恶的事情。也就是说,我见过的唯一好的应用程序(语言选择)是微不足道的(可能很容易成为下拉菜单)。存在许多邪恶的应用程序(此视频在您的国家/地区不可用,针对我的实际位置进行广告和跟踪)我们不能阻止此类应用程序的存在,但我们应该推动使其非法或至少在社会上不可接受的使用。