Aqui estão algumas informações sobre minha configuração. Eu tenho um servidor DNS mestre na minha sub-rede LAN em execução em uma caixa do Ubuntu 16.04. Além disso, tenho alguns servidores DNS escravos nas minhas várias outras sub-redes (sub-rede DMZ, sub-rede de serviço, etc.). Todos os servidores escravos DNS executam diferentes tipos de Linux.
Como meu servidor DNS mestre deve conhecer várias sub-redes diferentes, ele é configurado como split DNS / split horizon.
Meu firewall define três zonas: LAN, WAN e DMZ. Por razões de segurança, nenhuma conexão de DMZ para LAN pode ser iniciada. A conexão deve ser iniciada a partir da sub-rede da LAN. Tal é por política e não quero alterá-lo.
Informações técnicas sobre servidores relevantes:
Master DNS on my LAN subnet:
OS: Ubuntu 16.04
Hostname: master.lan.mydomain.dk
IP: 192.168.1.4 255.255.255.0
Slave DNS on DMZ subnet:
OS: Debian 9
Hostname: tools.dmz.mydomain.dk
IP: 172.16.1.4 255.255.255.0
Imediatamente, minha configuração do split horizon funciona bem no meu servidor mestre. Mas eu não posso replicar entre o servidor mestre e escravo. Não há transferência de arquivos de zona.
Aqui estão os arquivos de configuração relevantes:
named.conf do servidor DNS mestre:
key "rndc-key" {
algorithm hmac-md5;
secret "w26wwSa7rJB04IsuW99kGQ==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
include "/etc/bind/named.conf.logging";
include "/etc/bind/named.conf.keys";
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
named.conf.keys do servidor DNS mestre:
As principais definições são colocadas em um arquivo separado, para que possam ser facilmente atualizadas via rsync.
key lan-key {
algorithm HMAC-MD5;
secret AaEjmxhg3WT2;
};
key dmz-key {
algorithm HMAC-MD5;
secret BEhp4DeLnX4u;
};
key service-key {
algorithm HMAC-MD5;
secret 7rP4CN3Km2QT;
};
key management-key {
algorithm HMAC-MD5;
secret gNsRz2H7AxLH;
};
key update-key {
algorithm HMAC-MD5;
secret B88bqW33Fuap;
};
named.conf.local do servidor DNS mestre:
//
// Do any local configuration here
//
// Keys are defined in /etc/bind/named.conf.keys
//
acl lan-subnet {
!key dmz-key;
!key service-key;
!key management-key;
key lan-key;
127.0.0.0/8;
192.168.1.0/24;
};
acl dmz-subnet {
!key lan-key;
!key service-key;
!key management-key;
key dmz-key;
172.16.1.0/24;
};
acl service-subnet {
!key lan-key;
!key dmz-key;
!key management-key;
key service-key;
192.168.128.0/24;
};
acl management-subnet {
!key lan-key;
!key dmz-key;
!key service-key;
key management-key;
10.21.12.0/24;
};
view "internal" {
match-clients { lan-subnet; };
allow-recursion { any; };
allow-transfer { key lan-key; };
allow-update { key update-key; };
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
zone "lan.mydomain.dk" {
type master;
file "/etc/bind/internals/db.lan.mydomain.dk"; # zone file path
also-notify { 192.168.1.5 key lan-key; };
notify yes;
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/internals/db.192.168.1-rev";
also-notify { 192.168.1.5 key lan-key; };
notify yes;
};
zone "dmz.mydomain.dk" {
type master;
file "/etc/bind/internals/db.dmz.mydomain.dk"; # zone file path
also-notify {
192.168.1.5 key lan-key;
172.16.1.4 key dmz-key;
172.16.1.5 key dmz-key;
127.0.0.1 key dmz-key;
};
notify yes;
};
zone "1.16.172.in-addr.arpa" {
type master;
file "/etc/bind/internals/db.172.16.1-rev";
also-notify {
192.168.1.5 key lan-key;
172.16.1.4 key dmz-key;
172.16.1.5 key dmz-key;
127.0.0.1 key dmz-key;
};
notify yes;
};
zone "service.mydomain.dk" {
type master;
file "/etc/bind/internals/db.service.mydomain.dk"; # zone file path
also-notify {
192.168.1.5 key lan-key;
192.168.1.10 key service-key;
192.168.1.11 key service-key;
127.0.0.1 key service-key;
};
notify yes;
};
zone "128.168.192.in-addr.arpa" {
type master;
file "/etc/bind/internals/db.192.168.128-rev";
also-notify {
192.168.1.5 key lan-key;
192.168.1.10 key service-key;
192.168.1.11 key service-key;
127.0.0.1 key service-key;
};
notify yes;
};
zone "management.mydomain.dk" {
type master;
file "/etc/bind/internals/db.management.mydomain.dk"; # zone file path
also-notify {
192.168.1.5 key lan-key;
10.21.12.4 key management-key;
127.0.0.1 key management-key;
};
notify yes;
};
zone "12.21.10.in-addr.arpa" {
type master;
file "/etc/bind/internals/db.10.21.12-rev";
also-notify {
192.168.1.5 key lan-key;
10.21.12.4 key management-key;
127.0.0.1 key management-key;
};
notify yes;
};
};
view "externals" {
match-clients { any; };
allow-recursion { none; };
allow-transfer { key dmz-key; };
zone "dmz.mydomain.dk" {
type slave;
masters { 127.0.0.1 key lan-key; };
file "/etc/bind/externals/db.dmz.mydomain.dk"; # zone file path
also-notify { 192.168.1.5 key dmz-key; };
};
zone "1.16.172.in-addr.arpa" {
type slave;
masters { 127.0.0.1 key lan-key; };
file "/etc/bind/externals/db.172.16.1-rev";
also-notify { 192.168.1.5 key dmz-key; };
};
};
view "services" {
match-clients { service-subnet; };
allow-recursion { none; };
allow-transfer { key service-key; };
zone "service.mydomain.dk" {
type slave;
masters { 127.0.0.1 key lan-key; };
file "/etc/bind/services/db.service.mydomain.dk"; # zone file path
also-notify { 192.168.1.5 key service-key; };
};
zone "128.168.192.in-addr.arpa" {
type slave;
masters { 127.0.0.1 key lan-key; };
file "/etc/bind/services/db.192.168.128-rev";
also-notify { 192.168.1.5 key service-key; };
};
};
view "management" {
match-clients { management-subnet; };
allow-recursion { none; };
allow-transfer { key management-key; };
zone "management.mydomain.dk" {
type slave;
masters { 127.0.0.1 key lan-key; };
file "/etc/bind/management/db.management.mydomain.dk"; # zone file path
also-notify { 192.168.1.5 key management-key; };
};
zone "12.21.10.in-addr.arpa" {
type slave;
masters { 127.0.0.1 key lan-key; };
file "/etc/bind/management/db.10.21.12-rev";
also-notify { 192.168.1.5 key management-key; };
};
};
db.dmz.mydomain.dk do servidor DNS mestre:
$TTL 604800
@ IN SOA ns1.dmz.mydomain.dk. root.lan.mydomain.dk. (
2018102001 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; name and mail servers - NS records
@ IN NS ns1.dmz.mydomain.dk.
IN NS ns2.dmz.mydomain.dk.
IN MX 10 proxymail.dmz.mydomain.dk.
IN A 172.16.1.4
; name servers - A records
ns1.dmz.mydomain.dk. IN A 172.16.1.4
ns2.dmz.mydomain.dk. IN A 172.16.1.5
; 172.16.1.0/24 - A records
fwdmz.dmz.mydomain.dk. IN A 172.16.1.2
tools.dmz.mydomain.dk. IN A 172.16.1.4
x3690.vmhost.dmz.mydomain.dk. IN A 172.16.1.20
x3650.vmhost.dmz.mydomain.dk. IN A 172.16.1.21
wwwgate.dmz.mydomain.dk. IN A 172.16.1.30
proxymail.dmz.mydomain.dk. IN A 172.16.1.40
named.conf.local do servidor DNS escravo:
zone "dmz.mydomain.dk" {
type slave;
file "/etc/bind/slaves/db.dmz.mydomain.dk";
masters { 172.16.1.1 key dmz-key; };
};
zone "1.16.172.in-addr.arpa" {
type slave;
file "/etc/bind/slaves/db.172.16.1-rev";
masters { 172.16.1.1 key dmz-key; };
};
Como pode ser visto acima, defini o endereço IP mestre como 172.16.1.1, que é o endereço do gateway da sub-rede DMZ. O firewall converte qualquer endereço de LAN no endereço do gateway DMZ seguido por um número de porta aleatório. Portanto, não faz sentido colocá-lo no endereço IP da LAN do servidor master, que nunca é permitido passar pelo firewall.
On the slave server there is the following error message:
"zone dmz.mydomain.dk/IN: refused notify from non-master: 172.16.1.1#47161".
Então, eu posso entender porque a mensagem de erro vem porque eu só especifiquei que o servidor mestre é chamado 172.16.1.1 e não 172.16.1.1 # 47161.
Então, como faço para que o Bind9 no servidor escravo aceite que não é apenas um endereço IP, mas um endereço IP e um número de porta aleatório?
Obrigado antecipadamente.