ApacheでIPアドレスによるアクセス制限を行いたいとき、Allow fromやDeny fromを使いますが、IPv6アドレスの扱いについて参考になる記事が意外と見つからないのです・・・。
IPアドレス書くのが面倒ならホスト名を書けばいいじゃんという話にもなるのですが、IPv6アドレスの逆引きホスト名を設定されているISPが少ない少ない。(っいうかアドレス空間広いわ、アドレスが自動的に決まるわで逆引きの管理に無理がある)
というわけで、Allow from (Deny from) にIPv6アドレスを書いてみました。
【良い例】
Allow from 2001:3e0:82e::/48
Allow from 2001:3e0:82e:0::/64
Allow from 2001:3e0:82e:0:8458:cef7:d88d:d174
Allow from 2001:3e0:82e::8458:cef7:d88d:d174
上記はいずれも2001:03e0:082e:0000:8458:cef7:d88d:d174からのアクセス
を許可します。
【悪い例】
Allow from 2001:3e0:82e:
IPv4アドレスのように前方一致させようと思ってIPv6アドレスを途中で
切ることはできません。Allow from 2001:3e0:82e::
また、前方一致を狙って「::」で終わることもできません。
きちんとプレフィックスまで記述しましょう。
!!ご注意!!
IPv6アドレスにはMACアドレスから生成されるものとは別に「一時アドレス」(または匿名アドレス)と呼ばれるものがあります。
1つのインタフェースに同じプレフィックスの2つ以上のIPv6アドレスが割り当てられることが多いため、特定のホストだけを許可(または拒否)したい時にはサーバ側に書くIPアドレス、クライアント側が持つIPアドレス、ともに注意が必要です。
自分たちが使える土地(アドレス)が広くなれば管理も大変ですね・・・。