Variable in name of file for named.conf

Jeff Sadowski jeff.sadowski at gmail.com
Thu Apr 2 17:09:13 UTC 2015


On Wed, Apr 1, 2015 at 8:09 PM, Barry Margolin <barmar at alum.mit.edu> wrote:
> In article <mailman.1867.1427927445.26362.bind-users at lists.isc.org>,
>  Jeff Sadowski <jeff.sadowski at gmail.com> wrote:
>
>> I have a number of slave domains that I would like a naming scheme and
>> not have to go to each and change the filename.
>>
>> I have the following zones
>>
>> zone "1.168.192.in-addr.arpa" {
>>         include "named.slave";
>> };
>> zone "2.168.192.in-addr.arpa" {
>>         include "named.slave";
>> };
>> zone "3.168.192.in-addr.arpa" {
>>         include "named.slave";
>> };
>> zone "4.168.192.in-addr.arpa" {
>>         include "named.slave";
>> };
>> zone "5.168.192.in-addr.arpa" {
>>         include "named.slave";
>> };
>> zone "6.168.192.in-addr.arpa" {
>>         include "named.slave";
>> };
>> zone "7.168.192.in-addr.arpa" {
>>         include "named.slave";
>> };
>> zone "8.168.192.in-addr.arpa" {
>>         include "named.slave";
>> };
>> zone "9.168.192.in-addr.arpa" {
>>         include "named.slave";
>> };
>> zone "10.168.192.in-addr.arpa" {
>>         include "named.slave";
>> };
>>
>> named.slave looks as follows
>>
>> type slave;
>> masters {192.168.1.2;};
>> file "data/db. at .slave";
>>
>> It appears to work on my queries.
>>
>> nslookup 192.168.1.2
>>
>> 2.1.168.192.in-addr.arpa      name = pdc.<domain>
>>
>> nslookup 192.168.1.1
>>
>> 1.1.168.192.in-addr.arpa      name = gw1.<domain>
>>
>> nslookup 192.168.2.1
>>
>> 1.2.168.192.in-addr.arpa      name = gw2.<domain>
>>
>> the only file created in my data directory seems to be db. at .slave
>> with the at sign.
>
> Why would you expect anything different? @ only has special meaning
> inside zone files, it's not special in named.conf.
>
>>
>> Do I really need to have each zone with its own file?
>
> Yes, you do. What's happening is that every time one of the reverse
> zones is transferred, it's overwriting that file. But the files are only
> used when initializing the zones when named starts up; you get the
> correct answers because the in-memory versions of the zones are
> distinct. But try restarting named and then see what happens when you do
> those nslookups. You'll see that 192.168.1.1 and 192.168.2.1 both return
> the same name.
>
>>
>> Is there a special syntax to get what I expect?
>> expected files:
>> data/db.1.168.192.in-addr.arpa.slave
>> data/db.2.168.192.in-addr.arpa.slave
>> data/db.3.168.192.in-addr.arpa.slave
>> ...
>> data/db.10.168.192.in-addr.arpa.slave
>>
>> if not I can have Make do it and build some scripts to do what I want
>> but if there is syntax to do what I want it would be nice.
>
> No, there's no built-in syntax to create the filename based on the zone
> name.
>
I wrote a php script to build my file for me

<?php
$myslave=array('type'=>'slave'
,'masters'=>array('192.168.1.2')
,'autofile'=>'data/db. at .slave');

$arpa192='.168.192.in-addr.arpa';
$domain='<domain>';
$zone['_msdcs.'.$domain]=$myslave;
$zone[$domain]=$myslave;
$slavedsubnets=range('1','10');

build_subnets($slavedsubnets
,$arpa192
,$myslave);

build_zones();

function build_subnets($subnets
,$net
,$info)
{global $zone;
 foreach($subnets as $subnet)
 {$zone[$subnet.$net]=$info;
}}

function build_zones()
{global $zone,$argv;
 $pounds=str_repeat('#',30);
 $warning=$pounds.' WARNING '.$pounds."\n";
 echo $warning. '# Do not edit this file. '.
      'It was generated using "php '.
      $argv[0]."\"\n".$warning;
 foreach($zone as $z=>$infos)
 {echo 'zone "'.$z.'" {'."\n";
  foreach($infos as $item=>$value)
  {echo "\t".$item.' ';
   if(is_array($value))
   {echo '{';
    foreach($value as $v){echo $v.';';}
    echo '}';
   }
   else
   {switch($item)
    {case 'file': echo '"'.$value.'"'; break;
     case 'autofile': echo '"'.
           str_replace('@',$z,$value).'"';
     break;
     default: echo $value; break;
   }}
   echo ";\n";
  }
  echo "};\n";
}}
?>


> --
> Barry Margolin
> Arlington, MA
> _______________________________________________
> Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe from this list
>
> bind-users mailing list
> bind-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/bind-users


More information about the bind-users mailing list