Given a (forward) zone file, here is a quick way to automagically generate all the reverse zone files you need:
#!/usr/bin/perl
#
# does not generate PTR records for $GENERATE lines
# does not generate PTR records for CNAME and AAAA RRs
# generates PTR records for A RRs
#
%revzones = ();
$domain = $ARGV[0] || "irc.gr";
$filter = $ARGV[1] || '\S+';
open (F, "<$domain");
while (<F>) {
next if ($_ =~ /^[;\#\$]/);
if ($_ =~ /(\S+)[\s]+(\d+[\s]+)?IN[\s]+A[\s]($filter)/) {
$host = $1;
$ip = $3;
($a, $b, $c, $d) = split (/\./, $ip);
$revzone = "$c.$b.$a.in-addr.arpa";
$ptr = "$d\tIN\tPTR\t$host.$domain.\n";
$revzones{$revzone} .= $ptr;
}
}
close (F);
open (NC, ">named.conf.rev");
foreach $revzone ( sort keys %revzones ) {
open (R, ">$revzone");
print R "\$INCLUDE \"soa-ns.inc\"\n";
print R "$revzones{$revzone}";
close (R);
print NC "zone \"$revzone\" { type master; file \"rev/$revzone\"; };\n";
}
close (NC);
Careful as it will overwrite any existing reverse zone files you have in your current working directory.
PS. I do have one zone that generates 263 reverse zone files!