Archivo de zona binaria en BIND9

8

Se ha transferido un archivo de zona DNS Master a un esclavo, pero no puedo leer el archivo de zona:

> less db.example.com

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

Esto sucedió después de usar este comando:

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

Instalé bind V.9.9 en lugar de V.9.6. Me gustaría poder leer el archivo de zona como texto sin formato.

usuario1044942
fuente
66
¿Por qué lo hiciste cp -r /usr/local/sbin/* /usr/sbin/.?
Gevial
1
Yo diría: reinstale su servidor y todo. El atajo podría ser simplemente reinstalar "world" (o la parte "sbin") y eliminar todo el archivo agregado de "/ usr / local / sbin".
Ouki
¿Es ese archivo DNS realmente un archivo binario (o hay algunos caracteres de control que hacen que "menos" no coincida)?
Ouki
podría ser algo simple, como los caracteres de control no imprimibles en el archivo, o los datos de su zona en los esclavos realmente podrían estar almacenados en formato sin formato, ya que está utilizando BIND 9.9, en cuyo caso vea mi respuesta a continuación: usted puede usar named.compilezone para cambiar de un formato a otro si solo quiere ver el archivo.
Michael McNally

Respuestas:

23

Los archivos de datos de la zona esclava en BIND 9.9 están en formato "crudo" de forma predeterminada. Puede convertir archivos de zona de formato "sin formato" a formato de "texto" utilizando la utilidad named-compilezone que viene con BIND.

crudo al 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 a raw:

# 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
Michael McNally
fuente
Gracias. Hay 2 archivos El primer archivo es db-HdPKbJ2m (original no binario) y db.example.com (binario) y utilicé un comando como este: named-compilezone -f raw -F text -o db.example.com db-HdPKbJ2m db.example.comPero se ha producido este error. 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
Es posible que algo en su sistema haya dañado los archivos de zona de alguna manera. Mi recomendación sería que si los archivos no se leen correctamente, detendría el servidor en el esclavo, eliminaría los archivos de zona corruptos (o si lo prefiere, renómbrelos para quitarlos del camino) y reinicie el servidor esclavo. Debe volver a transferir el contenido de la zona desde el maestro.
Michael McNally
Gracias por esta iluminación. Para su información, toma (!) 5 (!) Minutos (!) Volcar un archivo de zona de 11 KB de solo 628 entradas a mi lado. No, no es IO ni CPU. (Esto probablemente debe llamarse magia de enlace). Y otra pregunta interesante: ¿Por qué necesito especificar un nombre de zona? ¿No está esta información ya en el archivo? (Bueno, llamemos a esto un secreto oscuro). PD: Con la opción-i none , toma una fracción de segundo.
Tino
7

O simplemente edite su named.conf y use esta opción:

Masterfile-Format Text;

Puedes hacerlo igual en todas las opciones de zona.

VBnoob
fuente
¿Es posible hacer esto a nivel mundial?
naught101
sí, solo póngalo en named.conf.options
VBnoob