From 52448571ea1e87d781cceb6aa208f0d3557a9855 Mon Sep 17 00:00:00 2001 From: Kay Zumbusch Date: Sun, 28 Feb 2016 15:59:49 +0100 Subject: [PATCH 1/2] added support for multi homed name servers --- scripts/jobs/cron_tasks.inc.dns.10.bind.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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 From 641ee1f8a6c81fbf8407cbb7feb93022909cbcdc Mon Sep 17 00:00:00 2001 From: Kay Zumbusch Date: Wed, 9 Mar 2016 21:01:47 +0100 Subject: [PATCH 2/2] added check for invalid responses from gethostbynamel fixed indent --- scripts/jobs/cron_tasks.inc.dns.10.bind.php | 23 ++++++++++++--------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/scripts/jobs/cron_tasks.inc.dns.10.bind.php b/scripts/jobs/cron_tasks.inc.dns.10.bind.php index 27ded4d8..a69f0fd5 100644 --- a/scripts/jobs/cron_tasks.inc.dns.10.bind.php +++ b/scripts/jobs/cron_tasks.inc.dns.10.bind.php @@ -35,14 +35,17 @@ class bind { foreach ($nameservers as $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.= '.'; + $nameserver_ips = gethostbynamel(trim($nameserver)); + // ignore invalid responses + if (is_array($nameserver_ips)) { + if (substr($nameserver, -1, 1) != '.') { + $nameserver.= '.'; + } + $this->nameservers[] = array( + 'hostname' => trim($nameserver), + 'ips' => $nameserver_ips + ); } - $this->nameservers[] = array( - 'hostname' => trim($nameserver), - 'ips' => $nameserver_ips - ); } } @@ -235,9 +238,9 @@ class bind { // put nameservers in allow-transfer if (count($this->nameservers) > 0) { foreach ($this->nameservers as $ns) { - foreach($ns["ips"] as $ip) { - $bindconf_file.= ' ' . $ip . ";\n"; - } + foreach($ns["ips"] as $ip) { + $bindconf_file.= ' ' . $ip . ";\n"; + } } } // AXFR server #100