質問: 現在、spring(java)を使って、海外からのアクセスがあった際に対象のページを表示しようとしています。 JavaServletのfilterClassを使用して行おうとしていますが、その際に、取得したIPアドレスが国内(日本)のものかを判別しようとしています。 国内のIPアドレスは下記URLのリストのように多いです。 その際に、処理を重くしないで、国内(日本)のIPアドレスかどうかを判別したい場合どのようにするのがベストプラクティスなんでしょうか... ご教示いただけると助かります。
回答: 大した量ではないので、メモリ上にテーブルを持っておいてアクセスしてきたIPアドレスがそのテーブルの中のアドレスに含まれるか調べる、という素直な実装で十分だと思いますが。調べる処理にしても、IPアドレスについてわかってれば1から書いてもそんな難しい物でもないですし既存のライブラリもあると思います。 なお、上記のリストは国内で使われている全てのアドレスを網羅しているわけではありません。例えば、 * JPNIC以外から割り当てを受けている組織 * 他国で割り当てを受けているが国内で運用されているアドレス などがあります。それらも「国内」と扱う必要があるのであれば、それなりのデータを用意する必要があります。 例えばRIRが公開している割り当て一覧(のAPNICの例) ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-extended-latest とか、「GeoIP データ CSV」とかで検索してみると良いでしょう。