(連載)MySQLでASN・ASOをDBに登録しIPアドレスがCIDR範囲内にあるか判定するWordPressショートコードを作成する方法

  • 2022.03.23
  • MySQL
(連載)MySQLでASN・ASOをDBに登録しIPアドレスがCIDR範囲内にあるか判定するWordPressショートコードを作成する方法
(連載)MySQLでASN・ASOをDBに登録しIPアドレスがCIDR範囲内にあるか判定するWordPressショートコードを作成する方法

 

 
読了目安:249

Are you want to translate this page to English? Please click this link to translate via ‘©Google Translate'!

ganohr.net favicon

みなさんこんにちは! ガノー(Ganohr)です! (≧▽≦)

GeoIP’(ジオ・アイピー)というものをご存知でしょうか? IPアドレスには物理的な位置に偏りがあり、それを基に大まかな住所が特定できます。それらのIPアドレスと住所や国名などを体系的に取り扱う技術をいいます。

そして、これらのIPアドレスとGeoIPは‘ASN’(Autonomous Service Number、エーエスエヌ/自律システム)と呼ばれる番号で紐付けがされています。

今回は特定のIPアドレスが所属するASNを検索して表示できる、WordPressのショートコードを開発する一連の作業を記録しながら、記事として公開していこうと思います。

サムネイル自律システム (インターネット) - Wikipedia ... 外部サイトへアクセスja.wikipedia.org サムネイルInternet geolocation - Wikipedia ... 外部サイトへアクセスen.wikipedia.org サムネイルWordPress - Wikipedia ... 外部サイトへアクセスja.wikipedia.org
 
更新履歴
2022/03/16 公開開始(コンテンツ自体はまだありません)。
 

今回対象とする内容

以下のデータを見てください。これはIPアドレス範囲の‘CIDR’(Classless Inter-Domain Routing)表記と‘ASN’(Autonomous Service Number、エー・エス・エヌ)と、ASO(Autonomous Service Organization)のデータセットの一部です。

1.0.0.0/24,13335,CLOUDFLARENET
1.0.4.0/22,38803,"Wirefreebroadband Pty Ltd"
1.0.64.0/18,18144,"Energia Communications,Inc."
1.0.128.0/17,23969,"TOT Public Company Limited"
1.1.1.0/24,13335,CLOUDFLARENET
1.1.64.0/19,2519,"ARTERIA Networks Corporation"
1.1.96.0/20,2519,"ARTERIA Networks Corporation"
1.1.112.0/21,2519,"ARTERIA Networks Corporation"
1.1.120.0/22,2519,"ARTERIA Networks Corporation"
1.1.124.0/23,2519,"ARTERIA Networks Corporation"

今回はこのようなデータをMySQLのデータベース上に登録し、最終的にWordPressで指定したIPアドレスのASNを調べられるショートコードを開発することを目的に記事を書いていきます。

ただし、解説内容が膨大となるため、日々少しずつ更新することとなります。更新はページ毎に行いつつ適宜に公開し、修正を行いますので、ぜひページをブックマークしながらお読みください。

本記事が対象とする読者層

本記事では、以下の方々を対象に記事を書いていきます。

  • IPアドレスからASNやASO、住所や地名、緯度経度などを取得するGeoIPを実現したい方
  • My SQL初心者でDBの基本的な事項は理解できている方、MySQLでCIDRを扱う方法を知りたい方
  • WordPressのショートコードでMySQLを利用する方法を知りたい方
  • IPアドレスからASNを引いたり、GeoIPを使いたい方。それも無償で。
  • 車輪の再発明で技術を習得したい方。実践を通して確かな技術を習得したい方

サンプル

現在開発中ですが、今回の記事と同様の方法で、以下のサービスを展開しています(4月1日以降に公開予定)。

サムネイルhttps://ganbal.ganohr.net/ ... 外部サイトへアクセスganbal.ganohr.net

なお、今回紹介するデータセットは、2022年3月16日現在で『GANBAL』が利用しているデータセットよりも精度が劣っています。

よりよいデータセットを発見したため、そちらに内容を移行するべく、「どうせなら一緒に記事も書こう」という感じです。

簡易目次(今後の記事執筆方針)

  1. 今回使用するレンタルサーバー
  2. PHPでGeoIPを扱う方法
  3. PHPでWhoisを扱う2つの方法
  4. PHPでRDAPを扱う方法
  5. GeoIP(IPとASNのマッチングを行える)データセットを入手する方法と仕様策定・戦略の構築
  6. MySQLでIPアドレスを扱う方法
  7. GeoIP用データセットを扱うDBのテーブル構築
  8. トータル60万件弱のデータベースを高速に更新し高速に検索する方法の解説(未定)
  9. GeoIPデータセットを実際にMySQLへ登録する(未定)
  10. WordPressでデバッグする2つの方法
  11. WordPressのショートコードと留意点
  12. WordPressのtransientが便利すぎる件
  13. WordPressでデータベースを扱う方法
  14. WordPressで実際にGeoIPのDBを利用する方法

※書きかけ

WordPressの不具合対応/カスタマイズ¥15,000~

PC歴25年超、SE歴10年超、WordPress運営歴7年超、WordPressエンジニア歴5年超のスキルとノウハウを提供します

当サイト管理人の「ガノー」(Ganohr)は、日本最大手且つ東証一部上場企業が運営するクラウドソーシングサイト『Lancers』にて、認定ランサーとして活動しています。


※ 認定ランサーとはLancersにより様々な能力 ( 高い仕事遂行率・高い顧客満足度・多くの実績、など ) を評価したプロフェッショナルを認定する制度です。

 

MySQLカテゴリの最新記事