Я делаю это:
function expand($ip){
$hex = unpack("H*hex", inet_pton($ip));
$ip = substr(preg_replace("/([A-f0-9]{4})/", "$1:", $hex['hex']), 0, -1);
return $ip;
}
function ipv6_reverse_calc($address){
$rev = chop(chunk_split(strrev(str_replace(':', '', expand($address))), 1, '.'), '.');
return "$rev.ip6.arpa";
}