Merge pull request #339 from KZumbusch/feature/support-for-multi-homed-dns-servers

Support for multi homed DNS servers
This commit is contained in:
Michael Kaufmann
2016-03-11 21:16:46 +01:00

View File

@@ -33,16 +33,21 @@ 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));
// ignore invalid responses
if (is_array($nameserver_ips)) {
if (substr($nameserver, -1, 1) != '.') {
$nameserver.= '.';
}
$this->nameservers[] = array(
'hostname' => trim($nameserver),
'ip' => trim($nameserver_ip)
'ips' => $nameserver_ips
);
}
}
}
if (Settings::Get('system.mxservers') != '') {
$mxservers = explode(',', Settings::Get('system.mxservers'));
@@ -233,7 +238,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