基于 BGP 数据的 IP ASN 查询系统, 邀请测试

2016-07-17 20:22:08 +08:00
 notgod
一直特别想做个这东西 都快魔怔了
这个可能专业性比较强,大部分 IDC 会有这个需求

终于差不多算搞好了,现在数据还不太完善,比如上游和下游的 upstream ,采集到还不太全面
和 BGPHE 的数据有些差异

差不多这个样子
查询 IP 地址,然后可以看到 IP 归属哪个公司的 ASN
https://www.boip.net/ipv4/119.9.125.205

在点击,也可以直接查询 https://www.boip.net/asn
例如 https://www.boip.net/asn/AS45187
就可以获得该公司的信息
比如我们想要投诉侵权的 可以直接查看到 abuse 的邮箱信息 发投诉信就可以了
也有公司的邮箱,比如需要托管到这个公司 都可以直接联系
有 WHOIS 和 RADB 的信息可以看到

可以查看到该 ASN 下所有的 IPv4/IPv6 的网段,以及对等交换的 Peers
还可以查看到和哪些互联网交换中心有直连

BGP 路由的走向数据有 但是不太懂如何生成那种走向图
谁懂 教我下?
我只是路过抖个机灵,有什么建议或者意见 可以联系我!
8874 次点击
所在节点    分享创造
19 条回复
qhxin
2016-07-17 21:36:28 +08:00
啊赞
New2016
2016-07-17 22:10:05 +08:00
adrianzhang
2016-07-17 22:16:38 +08:00
很赞!十分需要这种服务。楼主可以学学 ipip.net 的商业模式
notgod
2016-07-17 22:21:13 +08:00
@qhxin 谢谢

@New2016 去哪里看是你的自由,:)

@adrianzhang 商业化不考虑,这是个人兴趣而已
商业化要考虑的问题太多,
yexm0
2016-07-17 22:22:15 +08:00
notgod
2016-07-17 22:29:06 +08:00
@yexm0 有这个错误
一旦查不到纪录 就会抛出异常
因为 IP 查询调用了 5 个数据商的来源
没有设置定时更新数据源机制

后面在修复吧 慢慢来
scys
2016-07-17 23:04:25 +08:00
之前写了一个差不多的功能的,不过数据量就是简单点: D
https://only-pass.com 楼主可以考虑将 whois 也加进去,还有一些奇怪的数据源也有,比如 https://www.iplocation.net/
wico77
2016-07-18 04:35:16 +08:00
LZ 的头像让人好有错觉
jizhidebocai
2016-07-18 08:55:59 +08:00
想了解一下是用什么语言写的, 基于哪种技术
alect
2016-07-18 09:00:47 +08:00
@jizhidebocai 看楼上错误日志, php
iphantom
2016-07-18 09:23:42 +08:00
哇塞 赞
Revoluton
2016-07-18 10:23:25 +08:00
LZ 的头像让人好有错觉 很像我贵州一个朋友
youKnowDai
2016-07-18 12:09:35 +08:00
zan
notgod
2016-07-18 13:16:37 +08:00
@jizhidebocai
php , python ,历史记录数据库和数据缓存使用 sqllite , peers 和 ix 节点其他信息 存储在 mysql
数据采集是 shell 和 awk
数据源就是 ip2loc 。 maxmind sina qq 淘宝 纯真
asn 是直接 ripe apnic 等机构下载的数据 然后 awk 提取出来的 有部分使用了 api

@iphantom 谢谢鼓励
@alect 是的, php 相对简单 有部分数据处理是 python 和 shell

@youKnowDai 谢谢鼓励


@scys 也不错 挺简洁,我那个偏重于数据展示那块
wujunze
2016-07-20 11:39:10 +08:00
很赞的功能 支持楼主
idblife
2016-07-20 14:03:26 +08:00
500 Internal Server Error

Undefined index: ripencc (8)

#0 /home/admin/domains/boip.net/public_html/init.php(176): flight\Engine->handleError(8, 'Undefined index...', '/home/admin/dom...', 176, Array)
#1 /home/admin/domains/boip.net/public_html/app/views/IPv4_result.php(116): get_rir('ripencc')
#2 /home/admin/domains/boip.net/public_html/app/flight/template/View.php(118): include('/home/admin/dom...')
#3 /home/admin/domains/boip.net/public_html/app/flight/Engine.php(440): flight\template\View->render('IPv4_result', Array)
#4 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(199): flight\Engine->_render('IPv4_result', Array)
#5 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(142): flight\core\Dispatcher::invokeMethod(Array, Array)
#6 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(48): flight\core\Dispatcher::execute(Array, Array)
#7 /home/admin/domains/boip.net/public_html/app/flight/Engine.php(64): flight\core\Dispatcher->run('render', Array)
#8 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(199): flight\Engine->__call('render', Array)
#9 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(199): flight\Engine->render('IPv4_result', Array)
#10 /home/admin/domains/boip.net/public_html/app/flight/Flight.php(65): flight\core\Dispatcher::invokeMethod(Array, Array)
#11 /home/admin/domains/boip.net/public_html/app/route/ipv4.php(66): Flight::__callStatic('render', Array)
#12 /home/admin/domains/boip.net/public_html/app/route/ipv4.php(66): Flight::render('IPv4_result', Array)
#13 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(162): {closure}('176.126.71.198')
#14 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(143): flight\core\Dispatcher::callFunction(Object(Closure), Array)
#15 /home/admin/domains/boip.net/public_html/app/flight/Engine.php(312): flight\core\Dispatcher::execute(Object(Closure), Array)
#16 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(191): flight\Engine->_start()
#17 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(142): flight\core\Dispatcher::invokeMethod(Array, Array)
#18 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(48): flight\core\Dispatcher::execute(Array, Array)
#19 /home/admin/domains/boip.net/public_html/app/flight/Engine.php(64): flight\core\Dispatcher->run('start', Array)
#20 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(191): flight\Engine->__call('start', Array)
#21 /home/admin/domains/boip.net/public_html/app/flight/core/Dispatcher.php(191): flight\Engine->start()
#22 /home/admin/domains/boip.net/public_html/app/flight/Flight.php(65): flight\core\Dispatcher::invokeMethod(Array, Array)
#23 /home/admin/domains/boip.net/public_html/index.php(41): Flight::__callStatic('start', Array)
#24 /home/admin/domains/boip.net/public_html/index.php(41): Flight::start()
#25 {main}
notgod
2016-07-20 20:29:12 +08:00
@idblife 感谢 已 Fix

数组的问题

$data = array();
$data['apnic'] = 'APNIC.NET 亚太管理机构 - 亚洲太平洋区域';
$data['arin'] = 'ARIN.NET 北美管理机构 - 美国,加拿大,加勒比群岛区域';
$data['afrinic'] = 'AFRINIC.NET 南非管理机构 - 南非区域';
$data['lacnic'] = 'LACNIC.NET 拉美管理机构 - 拉丁美洲和外岛区域 ';
$data['ripe'] = 'RIPE.NET 欧盟管理机构 - 欧洲中东和中亚区域';
暂时加了条 解决这个问题
$data['ripencc'] = 'RIPE.NET 欧盟管理机构 - 欧洲中东和中亚区域';

理论最佳的方式应该使用
match 匹配返回的 不过我懒 而且 :)
mibootore
2016-10-24 10:05:01 +08:00
不错,多了一个选择
usernametoolong
2017-02-21 08:16:21 +08:00
发现错别字 “无纪录”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/293062

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX