逆引きできないIPアドレス(SoftBankケータイ)のアクセス制限 - MONO*LOG

逆引きできないIPアドレス(SoftBankケータイ)のアクセス制限

SoftBankガラケー(Y!ケータイ) のIPアドレス帯域は こちら で公開されている。

携帯アクセスの判定には、USER_AGENT もしくは接続元の IPアドレス を参考にすることになるのだが、各キャリアは定期的にネットワークを増強するために IPアドレス は 追加/変更/削除されることになる。
公開されているIPアドレス帯域を個別に指定し、Apache の mod_access などの WEBサーバ 側でアクセス許可することもできるが、その場合、IPアドレス帯域が変更されるたびに、すべてのWEBサーバの設定を変更しなくてはならない。

具体的に、上記の SoftBank を例にすると、こうだ。

# 2012-02-08 現在 ~ 2012-03末
allow from 123.108.237.224/27
allow from 202.253.96.0/27

# 2012-03末 ~ 2012-06末
allow from 123.108.237.224/27
allow from 202.253.96.0/27
allow from 123.108.237.128/28
allow from 123.108.239.240/28
allow from 202.253.96.160/28
allow from 202.253.99.160/28
allow from 210.228.189.196/30

# 2012-06末 ~
allow from 123.108.237.128/28
allow from 123.108.239.240/28
allow from 202.253.96.160/28
allow from 202.253.99.160/28
allow from 210.228.189.196/30


これを運用しているすべてのWEBサーバ、サーバの各 Virtual Host に反映することは、苦痛以外のなにものでもない。もちろん SoftBank だけではなく docomo や au も同様である。
そこで、動的なコンテンツでは コンテンツ内部で IPアドレスを逆引きした結果のホスト名がマッチするか判定することで、IPアドレス帯域が変更になってもサーバ設定をメンテナンスする必要がない。

ホスト名マッチングとしては、以下のような判定が可能である。

*.docomo.ne.jp (docomo)
*.ezweb.ne.jp (au)
*.jp-[tkqc].ne.jp (SoftBank)
*.spmode.ne.jp (docomo SPモード)
*.au-net.ne.jp (au IS NET/au.NET)
*.panda-world.ne.jp (SoftBank iPhone)


しかし SoftBankガラケー の場合、逆引きできない IPアドレス からアクセスがある場合がある。その場合、コンテンツ側で拒否しないよう注意が必要だ。
結局、そうなるとリモートホストでのアクセス制限が意味をなさなくなってしまい、IPアドレス帯域が変更されると、今度は対象のコンテンツをすべて改修しなくてはいけなくなってしまうのだ。

ということで、逆引きができない(リモートホストが引けない) IPアドレスのアクセス制限を、WEBサーバやコンテンツで保守しないでも済むための Tips。
このトリッキーな対応をするためには、各WEBサーバ/アプリケーションサーバ群が参照しているDNSサーバに細工をすることで、一元管理が可能だ。

ポイントとしては、

・逆引きできないIPアドレス帯域ごとに、ダミーのゾーンを用意する
・アプリケーション側でのパラノイドチェック用に、正引きダミーゾーンも用意する
・各WEBサーバ/アプリケーションサーバ群は、この内向きDNSサーバを参照する

である。サンプルとして、上記 SoftBank IPアドレス帯域 向けの設定を以下に示す。

named.conf

zone "dummy.jp-t.ne.jp." {
    type master;
    file "dummy.jp-t.ne.jp.zone";
};
zone "237.108.123.in-addr.arpa" {
    type master;
    file "123.108.237.rev";
};
zone "239.108.123.in-addr.arpa" {
    type master;
    file "123.108.239.rev";
};
zone "96.253.202.in-addr.arpa" {
    type master;
    file "202.253.96.rev";
};
zone "99.253.202.in-addr.arpa" {
    type master;
    file "202.253.99.rev";
};
zone "189.228.210.in-addr.arpa" {
    type master;
    file "210.228.189.rev";
};
// until 2012/06/30
zone "7.146.210.in-addr.arpa" {
    type master;
    file "210.146.7.rev";
};


7.146.210.in-addr.arpa ゾーンは、6月末 以降にコメントアウトすればよい。

dummy.jp-t.ne.jp.zone

;SoftBank
$TTL    3600    ;Minimum TTL 1 hours
@       IN      SOA     ns1.example.com. dnsadmin.example.com. (
                2012020701      ;Serial
                7200            ;Refresh 2 hours
                1800            ;Retry 30 minutes
                1209600         ;Expire 2 week
                3600            ;Minimum TTL 1 hours
                )

                IN      NS      ns1.example.com.
                IN      NS      ns2.example.com.

$GENERATE 112-127 123.108.237.$ IN      A       123.108.237.$
$GENERATE 224-239 123.108.239.$ IN      A       123.108.239.$
$GENERATE 144-159 202.253.96.$  IN      A       202.253.96.$
$GENERATE 144-159 202.253.99.$  IN      A       202.253.99.$
$GENERATE 188-191 210.228.189.$ IN      A       210.228.189.$
; until 2012-06-30
$GENERATE 0-31 123.108.237.$    IN      A       123.108.237.$
$GENERATE 224-255 202.253.96.$  IN      A       202.253.96.$
$GENERATE 192-255 210.146.7.$   IN      A       210.146.7.$


20-22 行目は、6月末 以降にコメントアウトすればよい。
SOAレコード、NSレコードはダミーなので適宜変更すること。


123.108.237.rev

;SoftBank
$TTL    10800   ;Minimum TTL 3 hours
$ORIGIN 237.108.123.in-addr.arpa.
@       IN      SOA     ns1.example.com. dnsadmin.example.com. (
                2012020701      ;Serial
                10800           ;Refresh 3 hours
                3600            ;Retry 1 hour
                1209600         ;Expire 2 week
                10800           ;Minimum TTL 3 hours
                )
        IN      NS      ns1.example.com.
        IN      NS      ns2.example.com.

$GENERATE 112-127 $     IN      PTR     123.108.237.$.dummy.jp-t.ne.jp.
; until 2012-06-30
$GENERATE 0-31 $        IN      PTR     123.108.237.$.dummy.jp-t.ne.jp.


16 行目は、6月末 以降にコメントアウトすればよい。
SOAレコード、NSレコードはダミーなので適宜変更すること。

サンプルの例では、スレーブのDNSサーバ(ns2.example.com) も用意しているので、ゾーンファイルの転送設定も行っておくとよいだろう。

コメントする

アーカイブ