代码之家  ›  专栏  ›  技术社区  ›  benjismith

使用ipv6定位?

  •  19
  • benjismith  · 技术社区  · 15 年前

    我正在开发一个IP地理位置库,它使用IPv4地址的前三个八位字节来确定用户的国家、城市、纬度、经度等。它的工作方式很有魅力。

    但它不处理ipv6地址,我希望它这样做。

    有没有任何方法可以转换一个ipv6地址以获得ipv4地址的前三个八位字节的等效值,或者它们是在一个完全不同的编号方案上,需要一个完全不同的ipgeo映射?

    8 回复  |  直到 15 年前
        1
  •  16
  •   bortzmeyer    15 年前

    这个 typical IPv6 allocation 互联网是A/32(四个八位字节) 供应商(可以是跨国公司),然后 /48 (six octets) 到最终站点(通常是客户组织)。你可以得到一个 中的起点 IANA list of delegated blocks .

    这只是为了 在RIR数据库中找到的注册。分配结束 通常不会记录用户,所以,我的当前地址, 2a01:e35:8bd9:8bb0:92b:8628:5ca5:5f2b 只会告诉你 供应商总部位于巴黎(因为它是一家全国性公司, 客户可以在法国的任何地方)。

    另一个例外是PI(独立于提供者)分配,它 通常为/48。

    此外,存在许多IPv4地理位置数据库,以及 知识,ipv6没有。你必须自己做每件事。

    总结:比你想象的要多。

        2
  •  2
  •   cjo30080    14 年前

    对诺亚评论的友好修正(6月3日7:57)--

    每个MaxMind的客户服务部门(Emphasis Mine):“目前不支持IPv6。在将来的某个时候,我们确实计划实施它,但目前还没有日期。”

        3
  •  2
  •   Sander Steffann    13 年前

    与IPv4相比,IPv6使用完全不同的寻址方案。除了一个例外,您无法将IPv6地址映射到IPv4地址。如果看到从2002开始的IPv6地址:那么地址是6to4地址。你可能不会看到很多人在使用,他们被否决了,但是那些 可映射到IPv4。

    公共IPv4地址的每个用户都可以使用IPv6空间的A/48(65536个子网)。这些地址总是以2002开头:接下来的两个十六进制数字是IPv4地址。所以2002:5389:1164:对应于我自己的Web服务器的IPv4地址(83.137.17.100):

    0x53 = 83
    0x89 = 137
    0x11 = 17
    0x64 = 100
    

    但所有“普通”的IPv6地址都与任何IPv4地址完全无关。至少以标准的方式。在向客户推出IPv6时,ISP可以定义IPv4和IPv6地址之间的关系。但你不会知道这段关系,所以它对你没用…

        4
  •  1
  •   Noah    15 年前

    maxmind.com的地理定位服务和库可以处理ipv6。也许他们的东西是你的选择。(我和他们没有任何关系。)

        5
  •  0
  •   John Saunders    15 年前

    由于目前还没有一个简单的方法来实现这一点,也许我们有机会做一些在IPv4中没有做的事情(*)

    我们可以停下来问问自己这是不是个好主意。


    (*)或者如果完成了,它就不起作用了!

        6
  •  0
  •   privacydude    14 年前

    地理位置不好,嗯? 互联网是不可知位置的,我有 从未 看到地理位置用于非平凡非邪恶的东西。也就是说,我看到的唯一好的应用程序(语言选择)是微不足道的(可以很容易地是下拉列表)。存在许多邪恶的应用程序(此视频在您的国家不可用,针对我的实际位置进行广告和跟踪) 我们不能阻止类似的事情从现有的,但我们应该推动使它非法或至少在社会上不能接受使用。

        7
  •  0
  •   quartz    12 年前

    如果你在wiki上阅读了大量的ipv6、地址和转换机制,你会发现一些可以推断ipv4的ipv6地址模式(siit、ipv4-mapped ipv6、nat64、2002:*上面写的东西等等)。其中一个开始: http://en.wikipedia.org/wiki/IPv6_transition_mechanisms

    我不会指望这些方案足够流行来进行常见的地理报告、欺诈保护或事件检测,但我绝对会优先考虑对此类推断的IPv4地址使用IPv4地理查找,而不是使用IPv6地理查找(假设IPv4 DB更完整)。

    我对ipv6地理信息的关注是大量的子网。数据库将变得更大(更多IP范围),这是预期的,但对于相同数量的终端地理信息,数据库将更稀疏,更深的树也更长的迭代(对于使用二进制或基数树的实现),这意味着一些性能成本。使用IP范围的SQL表的地理数据库也可能会受到影响,因为我知道我们没有128位的大整数来使用算术。

    另一个问题是手机:如果我没有弄错的话,ipv6的设计是为了方便漫游。你可以换手机发射塔并保留你的IP。甚至在改变城市、地区或国家的时候。我有点怀疑,因为强地址亲和力是MAC地址的目的。IP地址的存在正是为了路由的目的,但我认为公平地说,它们可能会变得足够不变,从而明显削弱地理位置的准确性。

    我觉得用户代理/浏览器在应用层(例如一些地理位置标题)的协作很可能是未来的事情,即使这可能被恶作剧的人所欺骗。

        8
  •  0
  •   Josef    9 年前

    有一个协议叫做 Referral Whois 它允许提供者发布IP地理位置信息,并允许其他人检索。

    例如,我目前的IP 2001:470:B4EA:BABE:D57:15C8:97B:60C9属于美国的飓风电力公司。我使用的IPv4-IPv6隧道终止的实际服务器在瑞士,但我在奥地利。 他发布了所有这些,所以如果你在一个支持Rwhois的工具中输入IP this ,你会在你看到的底部附近找到他和索姆的联系方式。

    联系人:姓名:私人客户-Hurricane Electric

    联系人:街道地址:私人住宅

    联系人:国家代码:AT

    这是我的位置。

    很少有提供者发布它,并且很少有地理定位工具支持它,但至少它是存在的。

    大多数IP地理位置提供商(那些支持IPv6的提供商,有些还没有)将此IP发送到瑞士,有些甚至在美国。