diff --git a/scripts/jobs/cron_tasks.inc.dns.10.bind.php b/scripts/jobs/cron_tasks.inc.dns.10.bind.php index 34515c97..27ded4d8 100644 --- a/scripts/jobs/cron_tasks.inc.dns.10.bind.php +++ b/scripts/jobs/cron_tasks.inc.dns.10.bind.php @@ -33,13 +33,15 @@ class bind { if (Settings::Get('system.nameservers') != '') { $nameservers = explode(',', Settings::Get('system.nameservers')); foreach ($nameservers as $nameserver) { - $nameserver_ip = gethostbyname(trim($nameserver)); + // DNS servers might be multi homed; allow transfer from all ip + // addresses of the DNS server + $nameserver_ips = gethostbynamel(trim($nameserver)); if (substr($nameserver, -1, 1) != '.') { $nameserver.= '.'; } $this->nameservers[] = array( 'hostname' => trim($nameserver), - 'ip' => trim($nameserver_ip) + 'ips' => $nameserver_ips ); } } @@ -233,7 +235,9 @@ class bind { // put nameservers in allow-transfer if (count($this->nameservers) > 0) { foreach ($this->nameservers as $ns) { - $bindconf_file.= ' ' . $ns['ip'] . ';' . "\n"; + foreach($ns["ips"] as $ip) { + $bindconf_file.= ' ' . $ip . ";\n"; + } } } // AXFR server #100