论坛5 | We. Developers. 高春辉 「看着容易,做着难—— IP 库背后的故事」



  • 时间: 2016年7月28日
    发言人: 高春辉| IPIP.NET 创始人
    主题: 看着容易,做着难—— IP 库背后的故事


    我想问问,知道我们这个事情的人有多少?剩下的是不知道呢?还是不太清楚呢?可能我还得跟大家讲一讲。

    0_1470722828765_upload-254886f6-00d8-44ff-b741-8e1d654c67af

    这是我经常拿来做演讲的,我不知道大家能看明白我想跟大家表达的意思是什么吗?

    0_1470722840108_upload-7777da52-9682-495b-88e8-27f618724610

    可能大家也不太注意,其实是一个LOGO,这是美国国防安全部的LOGO。如果大家看美剧应该注意到。这是14年类似的会议上面,美国国防安全部分享相关主题的内容。

    所以我想跟大家说,这个东西不仅仅是互联网公司才会关心的事情。而是在安全角度和各种角度都会有一个很重要的事,在我们看来,我们做的事实际上是提高互联网支撑度的东西,而它被认为是互联网的地图。

    0_1470722855129_upload-d0c7ecd5-b469-4135-806f-92fa35fed071

    这个定义我就不给大家讲了,因为是我自己写的,可能不是一个定义,我只是让大家先想一想,这跟大家从教科书上得到的说法不太一样。

    0_1470722865078_upload-e2293b8b-025d-480f-a74c-86f49324357b

    这是几个相对来说的用途,可能还有一些小的,比如说我不知道大家在海外连上优酷,像音乐类的网站可能给你提示,你不在中国地区,我不能为你提供服务,大部分都是基于IP的范围来做的。可能在欧洲用的情况很多,因为有的国家很小,但是有的国家说我拿到的授权只能在本国用,他们在这方面的需求比较多,但是在国内并没有那么多。

    0_1470722875623_upload-a08f3e3f-cfca-4ece-83d8-72d5f2e2c986

    比如说我要用IP库来做一些选择,这个是大概的说法。这个PPT是我2014年写的,没有特别改,我们其实已经把自己的重要程度从最后在往前走。

    0_1470722886077_upload-d3f38dcb-25f3-4a80-8ca5-427eaeb65c4c

    这是我们自己总结的谈一个库准不准的方法,大家都知道8.8.8.8是谷歌的 Public DNS,它接入了覆盖全球的 Anycast 技术(https://en.wikipedia.org/wiki/Anycast),你不能看到说他在美国你就信了,所以我们在自己的库里面没有具体的标位置,因为我们是没法标的,不能标单一的位置。但是现在所有的库里面都把它标成美国。

    0_1470722897097_upload-e5039639-b943-406c-82f0-77a81c87b93a

    而我们自己大概是从2013年开始做,14年算是发布,到现在差不多做了能有三年的时间,也算是积累了很长的时间,差不多有200多个客户。

    0_1470722908686_upload-fa817857-1705-42f7-8ad6-0cd37f0ced52

    然后我们大概总结,一个库大家纠结的是这四个问题,就是你到底能不能做的比较准,能不能做的比较规范,能不能做的比较及时。另外,能不能做的更持续。其实最后的问题,我们2014年会被问的比较多,因为大家都知道你这个库现在很准,但是你能做一年、两年、三年吗?但是现在我们不需要解决了,我们需要解决前面两个问题,我们能不能根据用户的需求提供更多的数据源给客户,因为他们有时候需要的数据不再去维护。刚才有人问我经纬度,现在其实我们基本上已经能做到了。

    我们可能更偏向于是一个商务的版本,而不像纯真那样,纯真是爱好者维护的版本,它以UGC为主,而我们是以自有的方式主动更新。所以有时候我们可能比较骄傲的说,我们自己的客户群里面,一个礼拜都没人说话。因为他不需要反馈他碰到什么样的问题,而我们基本能够提前把不准数据校准好,而不是说它要靠他们提问题,我们来更新数据,现在不是这样的。

    既然这是一个背后的故事,我们说这里面如果有人维护过,可能会比较知道后面会有很多的事情做。但是我们觉得这首先是一个力气活,再者他是一个技术活,并不是拿到技术我拼起来成一个文本,连接到库就可以做的,这个方法在现在这个角度已经不行了。

    现在一般来说大家用的方法是我去查,我批量抓,把数据转换成地理位置再用,或者我再抓那几个库新浪、腾讯、淘宝的,把这些库抓下来做对比做投票,我们不可能通过这个方案做出更好的库了。

    0_1470722939327_upload-6c3c2f6e-0cb4-4834-99ac-19453f8ccdb2

    我们大概有这些数据来源,这里面我们大部分都不是靠UGC,我觉得那个方案已经是不可能采用的方案了,我们基本上都是通过主动去进行数据抓取。无论是我们大概确定了300多个监测点,还是我们有BGP的数据和ASN的数据和全球交换中心的数据,我们把这些数据找来跟这个库做一个校验,有些数据就是这个库的一部分,这样我们才能慢慢把路径画的更清楚。有的我们还有rDNS的数据,我们现在可以很清楚的几个大的运营商的全网的路径。当然有的人他不太关心,做网络运维的人这是特别重要的事情。后面我们可以给大家提供工具,可能大家会用到。

    0_1470722951600_upload-358d2c6d-a460-4f45-acad-8f5f44224dd0

    我不知道大家理解不理解,虽然IPV4大概有43亿,但是我们知道这里面本地IP和保留IP,其实算下来只有36亿可以用,那7亿是不可以用的。然后BGP数据,它的投入大家也不是特别了解,因为在国内用的人确实并不多,我们只是做这个事才慢慢了解到的。我们觉得跟IP相关的公司,从运营商到互联网公司到各种各样的公司,实际上做IP库的公司全球大大小小算到一起也不到100家。但是你发现这些公司每天只要有变动,对我们来讲压力都会在我们这里产生。如果变动很多,我们跟不上第二天就会变成任务,这样我们离百分之百的正确率就会越来越远。

    0_1470722965812_upload-2d61f90a-0c56-46c7-be9c-eb19024f3b83

    我们大概有这些知识是需要了解的,我们没有做过这些事之前觉得自己能够胜任。但是越到后面越觉得你需要研究的很多,这是一个综合性的。你不但要做到这些,后面还需要做这些。

    0_1470722976046_upload-d36f5bf0-8d8c-4dcb-8a8e-be22224b003c

    我真的有京东上买过世界地图、美国地图和欧洲地图,趴在地上看的经历,但是现在不用了。这里面有一个问题,你要想维护俄罗斯的数据,你要懂俄文。如果你不会语言或者找不到翻译的地方,你怎么办呢?你连个文章都看不明白,这才是我们觉得最郁闷的事。全球大概180个国家有多少语言呢?这对我们来说是比较大的考验,像这里面的缩写和时区,包括中国行政区划的变更,其实每个月都有变更。比如说最近又在做县级一层的事情,每个月都会有,我们也要及时变更,也要跟着走,否则你拿到的数据都不是准确的。

    0_1470722992420_upload-c159b44b-32be-47a5-8de4-45256281a8d0

    我们可能还有一些,因为国外有数据叫时延测量,包括像BGP和安全类的知识多少都需要有一定的了解。包括你对这些公司的了解,你看了公司基本上是干吗的,你也需要知道,它是一个很综合性的知识的涵盖。

    0_1470723003858_upload-cdf44355-18d7-4fb7-bb81-3263748b0b55

    现在我们的情况大概是这样的,我们大概有300多台云主机,还有80台独立主机做数据采集,我们在不断强化自己做采集和挖掘的能力,包括处理。我今天上午还跟我的同事说,能不能把处理时间从两个小时变成一个小时,因为速度提高了,从人的角度上来讲我们能提高效率。

    0_1470723016155_upload-a9e8a389-f580-404c-92dd-b10a6369467e

    这是我们做数据处理机器的截图,大概是380G的内存,这是老图,今年机器不够用了,所以又换了一台更好的。

    0_1470723030227_upload-9b73c8c3-c2e0-428e-8151-f96fe0b0adec

    主要的问题是,我们前面讲所有的东西,没有人告诉你,这些东西要自己一点一点积累,一点一点去想。而且有的弯路你也是必不可少要去走的。

    0_1470723040327_upload-c13ff4a8-b4c9-459a-a5ca-d48d1de73a4f

    这里面还有这样的问题,这种问题大家觉得我就这样做就能得到结果,这些情况你往往是得不到结果的,你也不知道到底怎么回事,我们也会被这种事困扰。这几类情况要怎么处理,要怎么发现,这是一个挺麻烦的事。我后面有一个基站IP再跟大家讲一下。

    0_1470723056601_upload-4e5c006d-4bf3-4e5d-9471-20f9a2721a5b

    这是我们的数据分享,大约有35万行。现在我们差不多搜索BP的数据要两个小时,每天要跑一遍需要两个小时,这只是搜集数据+处理,并不是采集数据的时间。

    0_1470723069999_upload-c5d64012-a99e-41b2-af9c-11850c4adaef

    0_1470723075593_upload-974bc218-66db-4b1a-bbd7-dbe7ee2207a4

    0_1470723080671_upload-bd3000fe-2879-4b7c-8a95-ec2f142a31e2

    这是我们网站上面大概的截图,下面是时间的截图,大家可以看到随着时间的增长我们的行数也是在慢慢变大。

    0_1470723094389_upload-1a076e2c-8d18-46bd-b3a9-725eea153650

    这是我们自己做的,我们命令行的代码比网站的代码还多,我们要人为做数据验证,这个就是香港的AS里面做的数据。

    0_1470723104874_upload-2a2db2a2-bf88-457c-b0f3-932af6996b83

    这是我们里面提的给每个BP做的数据围栏的标注,这个文件差不多有15万行,这是从01年写出来的,没有任何地方可以参考,完全是需要手工编的。

    0_1470723116957_upload-711ce774-c2b0-44de-9b92-fd8b3306b2b0

    这是我们BP里面的每个AIS里面包括的IP情况。

    0_1470723131140_upload-70399649-f6e0-4ae2-bea2-3e30161e2523

    这是BP上下游的数据,它的上游是什么,它的下游是什么,对我们来说可能了解到运营商网络的情况。

    0_1470723141359_upload-3714fa77-ab16-4423-9e38-daffdd0deb93

    这是公司拥有的,它的名字叫什么,它是干吗的,这里面有一些情况大家可以参考。

    0_1470723154848_upload-5c896a10-9473-41cc-8425-71aad82bfbb1

    这是rDNS数据的解析,比如说这里面vie是指奥地利和维也纳,我们在国外看的比较多,国内比较少,即使是有也是错的。这个文件差不多有一万多行,也是三年下来自己慢慢一点一点积累的。

    0_1470723168827_upload-05c29509-dae2-491c-82af-3a6b824e475f

    这是我们自己做的注册地网站,从某一个地方到另外一个地方中间经过了哪些城市,这里面都可以看的很清楚。

    0_1470723179124_upload-2bfc7f92-9831-422d-b810-4c7e34537744

    这是我们自己有合作伙伴提供的GPS数据,根据GPS数据做的聚合,在地图上画的位置。

    0_1470723192734_upload-53bd7a8c-c820-4b89-9c27-6416e440504c

    这个是基站IP段,我们其实经常被问道一个情况,就是基站的IP情况。

    0_1470723203859_upload-b1794dae-64f6-4924-93e6-8ee0ea21a12f

    这是第三方出口,我不知道大家理解第三方出口吗?IP运营商经常用的方案,你可能会发现一个用户人在北京,但是他的IP却不在北京,大概就是这类的情况。

    0_1470723216484_upload-4919455b-c823-437e-8cd7-be39427eacd6

    这个我可以考考大家,这个就是刚才说的缩写,谁知道LAX代表哪里?知道的可以举手,这是洛杉矶。AMS呢?阿姆斯特丹。STO呢?谁要天天在外面跑机场可能比较熟,还有我们这种宅在家里,需要这种数据的可能知道,这是斯德哥尔摩。NRT是东京的,这个数据大多数都是根据机场代码标注的缩写,不光是机场,还有四位和六位的代码,但是那个数据要不断的积累。

    0_1470723227718_upload-37cecb43-5341-46e0-bc0c-1085392feb2e

    因为我们的库地理位置是其中比较重要的标签,刚才我们看了那里面,我们有一块是叫地级市的精度,我给你标到北京,我的任务就完成了。随着现在我们能够积累的数据足够多,我们推出了区县的版本,我可以告诉你这个IP是在北京朝阳区,还是在海淀区,还是在郊区。

    它的主要精度是多了层次,因为地级市在中国只有300多个,但是区县大概有3000多个,等于说你加了一个数量级。中国的互联网的用户,我记得在一个报上说已经有8亿了,不管是PC或者是手机的,加一块已经有8亿了,这8亿哪怕在中国和港澳台的IP加在一块也只有不到4个亿,你可以想象这个IP情况是什么样的。我们这个库大概是1.92亿,我们差不多已经覆盖了IP的一半,所以我们觉得这个精度如果有需求的话,已经足够用了。而且我可以说一下,这个库买的公司基本上月活是过亿的。

    0_1470723251609_upload-e6579082-1da7-4e96-b6fa-e99d2dd98669

    这是文本,这是我们到今天还有人经常问我们的地方,就是基站,大家知道手机上网,不用WiFi,你知道IP是什么呢?可能大家都不知道,你作为一个服务商,你为用户提供服务的时候,可能会把它屏蔽掉,因为它可能会攻击或者采集,但这样做会把很多用户拒绝掉。

    0_1470723263094_upload-20cd0bef-c76d-4007-b6dd-dfaa2c2c00f5

    这里面大概的定义我就不念了,我想大家读的速度比我念的快。这个告诉你,我们能够给你一个白名单,告诉你这个IP段哪些是,这样你在做处理的时候可以比较有效率的做,到底哪些是采集,哪些是用户的正常访问,这样对你来讲更有把握一些。因为前几天有一个客户买了以后,他跟我说用你的库做了处理以后我们大概多了5%的流量,也就是说他之前把那5%的流量一定是封错了。

    0_1470723274217_upload-2580f0a4-234f-4820-af15-6a8e78f38292

    为什么这个会被问的多,因为在我们的库里面大部分没有标到城市,这也是客户会问的情况,因为IP段往往是拿省一级做部署,这个IP出来了,用户可能在任何一个地方,比如说那个是河北省的,他有可能在石家庄,有可能在邯郸,也有可能在唐山,我怎么把这个IP段标成一个具体城市呢?这个不好标了,所以我们宁可不标,也不会标上看着是对的结果。

    0_1470723285437_upload-e0269bd3-8e78-4516-b941-9c68e451aa73

    我们拿这个图证明,这是北京移动的一个基站,你会发现你连区县都做不了,为什么?因为它是全城的,整个北京都会有。

    0_1470723304374_upload-7f46a11a-68d3-4ab5-9609-a4ddbdd646f2

    这个是辽宁省的,我回老家时候截的图,我怎么标到每个城区呢?我没法标。

    0_1470723327046_upload-36a70f5a-39c2-4356-9757-45af5e2b6f6a

    这是我们刚刚说的例子,一个段只覆盖两三个城市的,这个大概覆盖的是广州、深圳和中山那一块,我们把这三个分成三种情况都没法标到城市的,这就是一个例子。

    0_1470723338140_upload-0403a6ea-3b9b-4d7f-a8ec-70968b5b1a70

    这是我们大概这个月和上个月刚刚做完的,如果你的规模比较大对流量有需求的时候,你可能需要在IP上打标签做流量识别。所以你没法说,包括你的网站被攻击了或者你的网站秒杀的效果特别好,结果你的服务器扛不住了,你对流量做控制的时候,我们觉得这个也是有些公司会做这样一个库的情况。

    基于我们有位置的数据,有BGP的数据,有域名解析的数据,加上我们现在还做了端口扫描与协议检测的数据,这个方案其实我们做的能够让你在IP后面有很多的事。比如说它在哪个位置,后面是人还是机器,我们最后会做这样的事,是不是机器做代理,我们希望未来有更多的产品线。但是到现在我们要看更多的时候我们做了端口扫描和协议检测,这一块会针对这个做。我们根据测试的数据做预测,所以我们有两个数据,一个是经过确认的数据,我们在这里面大概有46万行。还有一个数据是经过预测差不多也有40多万行,加一块差不多有100万个C段。至少全球的至少有两三个亿左右。

    0_1470723364343_upload-8285d30b-33e0-4386-be7a-ac36de453f6d

    这里面也是注意事项,有些人说我是不是基于这个可以拿来做黑名单,其实不是这样的,它是灰名单,里面总有一些例外。比如说在中国基于第三方出口,如果你们在网上搜可以找到第三方出口的说明,我在这里不仔细说了。

    另外国外的浏览器基本上从UC到腾讯的,只要你装上默认会开启云加速,但是云加速你相应走了代理。所以我在做这个库的时候,有一个人他在网上问我,我在网上访问你,但是IP不对,我看了半天才知道他用了云加速,他用的是代理服务器,当然是错的,我们这边一开始有一个误解,后来把云加速关掉以后IP就是对的。所以这里面代理的工具都是在机房里,这个大家能够理解。但是如果是默认开启,用户根本不知道,如果他用这样的东西去访问你的网站,对不起你不能访问我的网站,这样你天天的投诉电话很多,这个怎么处理呢?要结合你的业务数据去做,面对流量的问题你一定要跟自己的业务情况结合。

    这个库因为精力有限,我们只能偏向以中国的情况为主,我们优先处理中国的数据,再结合海外的数据做,争取到最后变成真正是全球的库。

    这个是数据量,计算工具刚才说的都很虚,你拿过去在电脑上装一个能用的工具,这是我们自己做的截图。你可以理解,大家在做入口的时候,你会发现你拿一个IP库,你查的话会很麻烦。如果你对海外不熟的话,你也不知道路线到底是怎么走的,我们可以看到路径是怎么走的。

    0_1470723394718_upload-08f02bc4-ee5a-4c75-9de6-3e9d718fb378

    这个跟刚才图一样,这是客户端的,这是我前几天跟别人演示的时候做的我们国内用的比较多的五个运营商,联通、电信、移动、教育网和铁通,你发现这五个运营商去一个地方,它的路线是完全不一样的。你知道我的目标是哪里吗?你访问它的路径是不一样的。

    0_1470723406823_upload-2715819a-ec09-4ff3-93a6-9a44127136d4

    这是联通,它是从北京到广州再去洛杉矶。

    0_1470723418359_upload-ebccbd9d-6c58-4fad-b2fb-109367499f7d

    这是北京电信,只有北京电信是最直接的。

    0_1470723431281_upload-3663e3be-6f73-44e7-8137-883982ddf414

    这是移动,移动跟大家不太一样,它是从欧洲过去,因为他们觉得阿姆斯特丹是美国的东部,其实你去那边要么往西,要么往东,只不过看着比较多。

    0_1470723442702_upload-b7d542b7-5dcd-4f42-ae61-4e0f959b80f5

    这是铁通,铁通比较好玩,铁通是从北京到香港,从香港到新加坡,再从新加坡到洛杉矶,这是不一样的路。

    0_1470723454781_upload-5a48f71f-4cf9-470e-9f2c-707f04f17212

    还有一个是教育网,教育网是从北京到香港,再从香港到洛杉矶,是这样一个路径。我们发现这里面虽然不清楚,但是你发现每个运营商每个情况都是不一样的。

    我们也希望能够有更多的人加入我们,因为我们大家看似很窄,但是其实是非常有重要度的东西。现在我们也面临一个问题就是不好招人,所以大家如果有兴趣可以加入我们团队。交流时间,有人有问题吗?

    Q&A

    IPV6可以做什么呢?

    高春辉: 即使IPV6来了,在很长的时间下,因为这个网络可能是必须要保证两个都能访问,因为你想前一段时间看FaceBook前一段时间上了IPV6的声音,结果上来之后被很多用户投诉看不到图,结果是运营商的衔接有问题,后来下线了。虽然IPV6上来了,但是从运营商到下面大家都不关心,而且还有一个问题,IPV4大家还可以记住,IPV6大家只能写在纸上,这是大家从心里抵触的原因。

    再一个是复杂度变高了,运营商要维护两套东西,用户还要维护两套东西,大家只是为了上网,我要那么复杂的网干吗,所以大家都不是特别愿意。在国内你发现从运营商到用户,IP枯竭的事可以有很多办法延缓,它的生命力还会有,不是说今年底我们就上不了网了,这个不会存在。IPV6在很大程度下它的好处跟我们个人没有关系,跟你个人上网其实没有太大的关系在里面。

    谢谢大家。


登录后回复
 

与 青云QingCloud 社区 的连接断开,我们正在尝试重连,请耐心等待