added support for multi homed name servers

This commit is contained in:
Kay Zumbusch
2016-02-28 15:59:49 +01:00
parent 7bba4112b9
commit 52448571ea

View File

@@ -33,13 +33,15 @@ class bind {
if (Settings::Get('system.nameservers') != '') { if (Settings::Get('system.nameservers') != '') {
$nameservers = explode(',', Settings::Get('system.nameservers')); $nameservers = explode(',', Settings::Get('system.nameservers'));
foreach ($nameservers as $nameserver) { 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) != '.') { if (substr($nameserver, -1, 1) != '.') {
$nameserver.= '.'; $nameserver.= '.';
} }
$this->nameservers[] = array( $this->nameservers[] = array(
'hostname' => trim($nameserver), 'hostname' => trim($nameserver),
'ip' => trim($nameserver_ip) 'ips' => $nameserver_ips
); );
} }
} }
@@ -233,7 +235,9 @@ class bind {
// put nameservers in allow-transfer // put nameservers in allow-transfer
if (count($this->nameservers) > 0) { if (count($this->nameservers) > 0) {
foreach ($this->nameservers as $ns) { foreach ($this->nameservers as $ns) {
$bindconf_file.= ' ' . $ns['ip'] . ';' . "\n"; foreach($ns["ips"] as $ip) {
$bindconf_file.= ' ' . $ip . ";\n";
}
} }
} }
// AXFR server #100 // AXFR server #100