Binärzonendatei auf BIND9

8

Eine DNS-Master-Zonendatei wurde an einen Slave übertragen, aber ich kann die Zonendatei nicht lesen:

> less db.example.com

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

Dies geschah, nachdem ich diesen Befehl verwendet hatte:

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

Ich habe bind V.9.9 anstelle von V.9.6 installiert. Ich möchte die Zonendatei als Klartext lesen können.

user1044942
quelle
6
Warum hast du cp -r /usr/local/sbin/* /usr/sbin/.???
Gevial
1
Ich würde sagen: Installieren Sie Ihren Server und alles neu. Die Abkürzung könnte darin bestehen, "world" (oder den "sbin" -Teil) neu zu installieren und die gesamte hinzugefügte Datei aus "/ usr / local / sbin" zu entfernen.
Ouki
Ist diese DNS-Datei wirklich eine Binärdatei (oder gibt es einige Steuerzeichen, die dazu führen, dass "weniger" nicht übereinstimmen)?
Ouki
Es könnte etwas Einfaches sein, wie nicht druckbare Steuerzeichen in der Datei, oder Ihre Zonendaten auf den Slaves werden möglicherweise wirklich im Rohformat gespeichert, da Sie BIND 9.9 verwenden. In diesem Fall sehen Sie meine Antwort unten - Sie Mit named.compilezone können Sie von einem Format in ein anderes wechseln, wenn Sie nur die Datei anzeigen möchten.
Michael McNally

Antworten:

22

Slave-Zonendatendateien in BIND 9.9 sind standardmäßig im "Raw" -Format. Sie können Zonendateien im "Raw" -Format mithilfe des mit BIND gelieferten Dienstprogramms "Named Compilezone" in das Format "Text" konvertieren.

roh zu Text:

# 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

Text zu roh:

# 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
quelle
Vielen Dank. Es gibt 2 Dateien. Die erste Datei ist db-HdPKbJ2m (Original nicht binär) und db.example.com (binär) und ich habe den folgenden Befehl verwendet: named-compilezone -f raw -F text -o db.example.com db-HdPKbJ2m db.example.comAber dieser Fehler ist aufgetreten . 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
Möglicherweise hat etwas auf Ihrem System die Zonendateien auf irgendeine Weise beschädigt. Meine Empfehlung wäre, wenn die Dateien nicht richtig gelesen werden, den Server auf dem Slave anzuhalten, die beschädigten Zonendateien zu löschen (oder, wenn Sie es vorziehen, sie umzubenennen, um sie aus dem Weg zu räumen) und den Slave-Server neu zu starten. Es sollte den Zoneninhalt vom Master erneut übertragen.
Michael McNally
Danke für diese Erleuchtung. Zu Ihrer Information, es dauert über (!) 5 (!) Minuten (!), Um eine 11-KB-Zonendatei mit nur 628 Einträgen an meiner Seite zu sichern. Nein, es ist weder E / A noch CPU gebunden. (Dies muss wahrscheinlich als Bindungsmagie bezeichnet werden.) Und noch eine interessante Frage: Warum muss ich einen Zonennamen angeben? Sind diese Informationen nicht bereits in der Datei enthalten?!? (Nennen wir das ein dunkles Bindungsgeheimnis.) PS: Mit der Option-i none dauert es einen Bruchteil einer Sekunde.
Tino
6

Oder bearbeiten Sie einfach Ihre named.conf und verwenden Sie diese Option:

Masterfile-Format Text;

Sie können dies in jeder Zonenoption gleich tun.

VBnoob
quelle
ist das global möglich?
naught101
Ja, setzen Sie es einfach in named.conf.options
VBnoob