Aqui está o rápido e sujo: no BIND9 com uma zona dinâmica que é compartilhada entre visualizações , fazer um nsupdate, atualizar / criar / excluir um registro funcionará bem se eu procurar esse registro de um cliente que caia na mesma visualização que o nsupdate de.
Consultar a partir de uma exibição que não é a mesma que eu costumava nsupdate lançará NXDOMAIN (se estiver adicionando um novo registro) ou mostrará informações antigas do registro no caso de uma alteração / atualização até um período arbitrário (por exemplo, 15 minutos) passa, ou eu o faço forçosamente $ rndc freeze && rndc thaw
. $ rndc sync
parece não fazer nada para resolver o problema - eu esperava que fosse apenas um arquivo de diário, uma vez que as liberações do diário estão documentadas para liberar em torno de 15 minutos.
Se isso não estiver claro, aqui estão alguns pseudocódigos para começar:
Visualizações BIND
view "cdn-redir" {
match-clients { 10.1.1.0/24; 10.1.2.0/24; };
include "cdn-zone.db";
include "dynamic-zone.db";
};
view "default" {
match-clients { any; };
include "dynamic-zone.db";
};
Exemplo de linha de comando
user@ns:~$ nsupdate -k rndc.key
> server localhost
> zone example.com.
> update add foohost.example.com. 600 A 10.5.6.7
> send
> quit
user@ns:~$ dig foohost.example.com (resolv.conf points to 127.0.0.1)
[ responds with correct answer 10.5.6.7 ]
Em outros lugares, um host que fica na mesma visualização que o nsupdate
[email protected]:~$ foohost.example.com (resolv.conf points to above nameserver)
[ responds with correct answer 10.5.6.7 ]
Em outros lugares, o host cai em uma visão diferente como o nsupdate
[email protected]:~$ dig foohost.example.com (resolv.conf points to above nameserver)
[ responds with NXDOMAIN even though I'm asking the same server ]
Nesse ponto, se eu tiver paciência, o problema acabará se resolvendo (talvez 15 minutos), mas como freqüentemente não tenho o luxo de paciência, sou forçado $ rndc freeze && rndc thaw
a usar o servidor de nomes para corrigir o problema à força.
Por outro lado
No lado perfeitamente invertido, se eu fizer o nsupdate no servidor a partir de um endereço que se enquadre na exibição "cdn-redir", o problema será revertido. Consultas subsequentes de clientes que correspondem a "cdn-redir" obtêm o registro correto imediatamente após o nsupdate sem mexer com "rndc freeze / thaw", mas as consultas em endereços que ficam fora da visualização de "cdn-redir" agora têm o atraso / rndc bobagem.
Minha pergunta final
Se fosse tão simples quanto 42, eu a pegaria de braços abertos ...
Gostaria de evitar o "rndc freeze && rndc thaw" por medo de perder uma atualização dinâmica do servidor DHCP. Alguém sabe como sincronizar os registros atualizados entre visualizações com mais eficiência / eficácia, ou pode esclarecer onde eu posso estar errado?
Edit: BIND 9.9.5 / Ubuntu 14.04, mas aconteceu nas versões anteriores do Ubuntu e BIND.
Obrigado a todos!
Conforme solicitado por Andrew B , eis a zona editada (e parcial):
$ORIGIN .
$TTL 3600
example.com IN SOA ns1.example.com. HOSTMASTER.example.com. (
2009025039 ; serial
900 ; refresh 15
600 ; retry 10
86400 ; expire 1 day
900 ; minimum 15 min
)
NS ns1.example.com.
$ORIGIN example.com.
$TTL 30
AEGIS A 10.2.1.60
TXT "31bdb9b3dec929e051f778dda5abd0dfc7"
$TTL 86400
ts-router A 10.1.1.1
A 10.1.2.1
A 10.1.3.1
A 10.1.4.1
A 10.1.5.1
A 10.1.6.1
A 10.1.7.1
A 10.1.8.1
A 10.2.1.1
A 10.2.2.1
A 10.2.3.1
ts-server A 10.2.1.20
ts-squid0 A 10.2.2.20
ts-squid1 A 10.2.2.21
$TTL 600
tssw4 A 10.2.3.4
tssw5 A 10.2.3.5
tssw6 A 10.2.3.6
tssw7 A 10.2.3.7
; wash rinse repeat for more hosts
$TTL 30
wintermute A 10.2.1.61
TXT "003f141e5bcd3fc86954ac559e8a55700"
fonte
zone
declaração porque meus pensamentos estavam indo em uma direção semelhante à de Håkan.server
vez delocal external-ip-address
consultar o MNAME da região (no SOA da região) e levá-lo para outro servidor de nomes em outro servidor para fazer sua atualização de DNS (principalmente se você tiver um mestre oculto / escravo público) topologia de rede principal furtiva).Respostas:
Diferentes visualizações agem separadamente, é essencialmente uma conveniência sobre a execução de instâncias separadas de named. Se houver zonas com o mesmo nome em visualizações diferentes, isso é apenas uma coincidência, elas ainda serão zonas totalmente separadas, não mais relacionadas do que quaisquer outras zonas.
Ter várias zonas separadas usando o mesmo arquivo de zona não funciona em situações em que o bind está atualizando o conteúdo da zona por si próprio (zonas escravas, zonas com atualizações dinâmicas etc.). Não tenho certeza se existe o risco de corromper o próprio arquivo de zona.
Você pode definir algo parecido com o que deseja fazer, fazendo com que a zona em uma exibição seja escrava da zona com o mesmo nome na outra exibição. Essa será claramente uma configuração um pouco complicada, mas o uso de chaves TSIG para clientes de correspondência, bem como a notificação / transferência que eu acredito que deve ser possível.
Edit: O ISC publicou um artigo da KB para este cenário. Como compartilhar uma zona dinâmica entre várias visualizações? , sugerindo o mesmo tipo de configuração mencionado acima.
Este é o exemplo de configuração deles com formatação um pouco melhorada:
fonte
transfer-source 10.0.1.1;
(sem os colchetes) com o bind 9.9.5.Tendo os mesmos problemas com as visualizações, decidi me livrar deles e mover a autorização para as zonas.
Você pode substituir as visualizações nas perguntas por inclusões simples de ambos os arquivos de zona, deixar as zonas atualmente compartilhadas intocadas e adicionar a consulta de permissão {} à definição "dynamic-zone.db", como:
com isso, você alcança seu objetivo presumido de tornar dynamic.zone acessível somente a partir de redes especificadas e ter outras zonas públicas.
fonte