Arquivo de zona binária no BIND9


8

Um arquivo de zona mestre do DNS foi transferido para um escravo, mas não consigo ler o arquivo de zona:

> less db.example.com

"db.example.com "may be a binary file.  See it anyway?

Isso aconteceu depois que eu usei este comando:

cp -r /usr/local/sbin/* /usr/sbin/.

Eu instalei o bind V.9.9 em vez do V.9.6. Eu gostaria de poder ler o arquivo da zona como texto simples.


6
Por que você cp -r /usr/local/sbin/* /usr/sbin/.???
Gevial

1
Eu diria: reinstale o servidor e tudo. O atalho pode ser reinstalar apenas "world" (ou a parte "sbin") e remover todo o arquivo adicionado de "/ usr / local / sbin".
Ouki 15/03/13

Esse arquivo DNS é realmente um arquivo binário (ou há alguns caracteres de controle que tornam "menos" incompatível)?
Ouki

pode ser algo simples, como caracteres de controle não imprimíveis no arquivo, ou os dados da sua zona nos escravos podem estar realmente sendo armazenados no formato bruto, desde que você esteja usando o BIND 9.9; nesse caso, veja minha resposta abaixo - você pode usar o named.compilezone para mudar de um formato para outro, se você quiser apenas ver o arquivo.
Michael McNally

Respostas:


23

Os arquivos de dados da zona secundária no BIND 9.9 estão no formato "bruto" por padrão. Você pode converter arquivos de zona de formato "brutos" para o formato "texto" usando o utilitário nome-compilezone que acompanha o BIND.

bruto para texto:

# convert raw zone file "example.net.raw", containing data for zone example.net,
# to text-format zone file "example.net.text"
#
#   (command)     (format options)   (output file)  (zone origin) (input file)
named-compilezone -f raw -F text -o example.net.text example.net example.net.raw

texto para bruto:

# convert text format zone file "example.net.text", containing data for zone
# example.net, to raw zone file "example.net.raw"
#
#   (command)     (format options)   (output file) (zone origin)  (input file)
named-compilezone -f text -F raw -o example.net.raw example.net example.net.text

Obrigado. Existem 2 arquivos. O primeiro arquivo é db-HdPKbJ2m (original, não binário) e db.example.com (binário) e usei um comando como este: named-compilezone -f raw -F text -o db.example.com db-HdPKbJ2m db.example.comMas esse erro ocorreu. dns_master_load: example.com: not at top of zone dns_master_load: not at top of zone zone db-HdPKbJ2m/IN: loading from master file db.example.com failed: not at top of zone zone db-HdPKbJ2m/IN: not loaded due to errors.
user1044942

É possível que algo no seu sistema tenha corrompido os arquivos da zona de alguma forma. Minha recomendação seria que, se os arquivos não estivessem sendo lidos corretamente, eu pararia o servidor no escravo, excluir os arquivos da zona corrompida (ou, se preferir, renomeá-los para movê-los para fora do caminho) e reiniciar o servidor escravo. Ele deve transferir novamente o conteúdo da zona do mestre.
quer

Obrigado por esta iluminação. Para sua informação, são necessários (!) 5 (!) Minutos (!) Para despejar um arquivo de zona de 11 KB com apenas 628 entradas ao meu lado. Não, não é IO nem CPU vinculado. (Isso provavelmente deve ser chamado de magia de ligação.) E outra pergunta interessante: Por que preciso especificar um nome de zona? Essa informação já não está no arquivo?!? (Bem, vamos chamar isso de segredo obscuro do vínculo.) PS: Com a opção-i none , leva uma fração de segundo.
Tino

7

Ou apenas edite seu named.conf e use esta opção:

Masterfile-Format Text;

você pode fazer o mesmo em todas as opções de zona.


é possível fazer isso globalmente?
precisa saber é o seguinte

sim, basta colocá-lo no named.conf.options
VBnoob
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.