IP Guide - IPアドレス、ネットワーク、ASNデータの照会
(ip.guide)- 特定のIPを入力すると、そのアドレスが属するネットワーク範囲とASN情報をまとめて確認できる照会サービス
- 例のIP
2600:1900:0:4004::1a00は CIDR2600:1900::/31ネットワークに含まれる - このネットワークの範囲は
2600:1900::から2600:1901:ffff:ffff:ffff:ffff:ffff:ffffまでと表示される - 自律システム情報には ASN 396982、
GOOGLE-CLOUD-PLATFORM-Google LLC、組織Google Cloud Platform、国US、RIRARINが含まれる - 位置データもあわせて提供され、
The Dalles、United States、タイムゾーンAmerica/Los_Angeles、緯度45.5999、経度-121.1871を確認できる
IPとネットワークの応答構造
- 照会対象のIPは
2600:1900:0:4004::1a00 networkオブジェクトは、そのIPが属するネットワーク範囲と自律システム情報をまとめて提供する- CIDR:
2600:1900::/31 - ホスト開始:
2600:1900:: - ホスト終了:
2600:1901:ffff:ffff:ffff:ffff:ffff:ffff
- CIDR:
ASN情報
autonomous_systemオブジェクトでは、ネットワークの自律システムに関するフィールドを確認できる- ASN:
396982 - 名前:
GOOGLE-CLOUD-PLATFORM-Google LLC - 組織:
Google Cloud Platform - 国:
US - RIR:
ARIN
- ASN:
位置情報
locationオブジェクトは、IPに関連付けられた地理情報を提供する- 都市:
The Dalles - 国:
United States - タイムゾーン:
America/Los_Angeles - 緯度:
45.5999 - 経度:
-121.1871
- 都市:
1件のコメント
Hacker Newsのコメント
こういうサービスなら、学校かどうかを分かるようにしてくれるとよいと思う。未成年、共有環境、ファイアウォールを相手にしている可能性が分かるからだ
もちろん学校の識別はサービス側で行う必要があり、出発点としては rDNS が使えるかもしれない。応答速度は気に入っている
ASN と会社/組織を ISP、教育、ホスティング、ビジネスの4種類に分類しており、この ASN レベルの分類は主に WHOIS と公開インターネット記録に基づいている
ただし、学校、大学、公的研究機関、K-12 のように細分化はしていない。理由は精度だ。やり方自体は想像できるが、大規模に安定して実現するのは難しいためだ
データ提供者の立場としては、できるだけ高い精度を提供し、サービス品質を保証したい。このレベルの分類が必要なら、通常はまず必要なデータを確認し、ユーザーが自分で構築できる解決策を見つけられるよう支援する。ユーザーは自分が許容できる精度水準に合わせて、望む分類を作ることができる
RIPE、BGP、ARIN についての簡単な段落があると助かる
IPv6 でもこれを行う方法があるのかも気になる
その IP が AWS や Azure のような大手テック企業でホスティングされているかも分かるとよい。もしかするとネットワーク情報にすでに表れているのかもしれない
IP に結び付いたホスト名があるなら、それも分かるとよい。どこまでワンストップなツールにするのかは分からないが
IPv6 は標準でサポートしている。IPv6 アドレスがあれば自動で表示される。例: https://ip.guide/2600::
IP に結び付いたホスト名を表示するというアイデアも気に入っている。アプリをステートレスかつ高速に保ちながら、そのデータを取得する最善の方法を考える必要がある
今は
curl ipinfo.ioを使っているが、JSON を返し、今使っているホテルの Wi‑Fi を基準にすると、より正確なジオロケーション検索を使っているように見えるただしネットワークは報告せず、ASN も ASN と名前をつなげた文字列にすぎず、組織や国はないので、このツールのその部分は利点だ
ただ、
curl ip.guideはリダイレクトのせいで空の応答しか返さない。-Lでリダイレクトをたどると JSON が見やすく整形されていないただし、毎日更新され、精度を完全に備えた無料の IP-to-ASN 国別データベースがある。このデータベースは ASN、AS 組織、AS ドメイン情報を提供する
無料データベースではより多くの情報を提供しつつ、API に ASN 詳細をあまり入れていない理由は、対象ユーザーと IP メタデータの使いやすさにあると考えている
API はトークンなしで1日 1,000 回までアクセスでき、データ精度には妥協していない。目標は全体として有用で非常に高速なサービスであることだ。詳細な ASN 情報はウェブサイトでも引き続き無料でアクセスできる。したがって、無料 API、無料のウェブ情報、有料 API/データベースの間でバランスを取る必要がある
無料の IP-to-Country ASN データベースの採用を勧めている。無料で使え、精度も完全だ。誰かが IPinfo の無料データベースの上に、より多くの ASN 情報を返す公開 API を作りたいなら歓迎する
ジオロケーション情報をどこから取っているのか気になる。こういう用途で無料の MaxMind GeoLite2 データベースと GeoIP2 Python API を使ってきたが、マッピングしたい多くの IP アドレスが国レベルまでしか落ちず、その一部も怪しく見える
クエリにリクエスト制限があるのかも気になる
たとえばドイツでは、一部の通信事業者が国の半分で使うプールからランダムな IP を割り当て、24 時間ごとに新しい IP を与える。こういうものをダウンロード可能なデータベースでどうやってジオロケーションできるだろうか
リクエストに制限や認証はないが、下でも述べたように、API は同時リクエストが 2,000 件に達したあたりから負荷緩和を始める
[https://${domain}/${query}](<https://${domain}/${query}>)のような、シンプルでユーザーフレンドリーな URL を持つHTTP APIはよいと思う。こういうサービスの一覧を知っている人がいるか気になる。自分が知っている例では wttr.in があるデータベースをMMDB、CSV、JSON形式でダウンロードできるように提供する考えがあるのか気になる。そうすれば IPinfo.io が無料 IP データベースで提供しているように、オフラインで活用できる
API と応答時間が気に入った。いくつか気になる点がある
今後オープンソースとして公開する計画があるのか、Rust にすでに慣れていたのか、それとも性能や商用製品の計画のために Rust を選んだのか気になる
RIPE 情報と MaxMind データは最近どれくらいの頻度で更新されているのか、あるいはそれが 8 時間周期なのかも気になる
Rust は自分にとって大きな学習機会だった。このプロジェクト以前は、Rust で小さなプロジェクトを2つやった程度だった
BGP データを取得するMRT ダンプは 8 時間ごとに更新され、MaxMind は週 2 回更新されているようだ
シンプルでよい。自分は似たサービスを提供しているが、ボット/データセンター/VPN IP アドレスにより重点を置いている
https://ipdetective.io
ネットワークを照会するとき、開始/終了アドレスも一緒に表示されると助かる。このツールを使うたびに CIDR 計算機を別に開かなくて済む
https://wasab.is も似ている
ただしこちらはBGP データを 8 時間ごとに取得している点がとても素晴らしい