Fichier de zone binaire sur BIND9

8

Un fichier de zone maître DNS a été transféré à un esclave, mais je ne peux pas lire le fichier de zone:

> less db.example.com

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

Cela s'est produit après avoir utilisé cette commande:

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

J'ai installé bind V.9.9 au lieu de V.9.6. Je voudrais pouvoir lire le fichier de zone en texte brut.

user1044942
la source
6
Pourquoi as-tu cp -r /usr/local/sbin/* /usr/sbin/.???
Gevial
1
Je dirais: réinstallez votre serveur et tout. Le raccourci pourrait être de simplement réinstaller "world" (ou la partie "sbin") et supprimer tout le fichier ajouté de "/ usr / local / sbin".
Ouki
Ce fichier DNS est-il vraiment un fichier binaire (ou y a-t-il des caractères de contrôle qui le rendent "moins" inadapté)?
Ouki
cela pourrait être quelque chose de simple, comme des caractères de contrôle non imprimables dans le fichier, ou vos données de zone sur les esclaves pourraient vraiment être stockées au format brut, puisque vous utilisez BIND 9.9, auquel cas voyez ma réponse ci-dessous - vous peut utiliser named.compilezone pour passer d'un format à un autre si vous souhaitez simplement consulter le fichier.
Michael McNally

Réponses:

23

Les fichiers de données de zone esclave dans BIND 9.9 sont au format "brut" par défaut. Vous pouvez convertir des fichiers de zone au format "brut" au format "texte" à l'aide de l'utilitaire named-compilezone fourni avec BIND.

brut au texte:

# 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

texte brut:

# 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
la source
Je vous remercie. Il y a 2 fichiers. Le premier fichier est db-HdPKbJ2m (original non binaire) et db.example.com (binaire) et j'ai utilisé une commande comme celle-ci: named-compilezone -f raw -F text -o db.example.com db-HdPKbJ2m db.example.comMais cette erreur s'est produite. 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
Il est possible que quelque chose sur votre système ait corrompu les fichiers de zone d'une manière ou d'une autre. Ma recommandation serait que si les fichiers ne sont pas lus correctement, j'arrêterais le serveur sur l'esclave, supprimer les fichiers de zone corrompus (ou si vous préférez, les renommer pour les déplacer) et redémarrer le serveur esclave. Il doit retransférer le contenu de la zone du maître.
Michael McNally
Merci pour cette illumination. Pour info, il faut plus de (!) 5 (!) Minutes (!) Pour vider un fichier de zone de 11 Ko de seulement 628 entrées à mes côtés. Non, ce n'est ni IO ni CPU. (Cela doit probablement être appelé bind magic.) Et une autre question intéressante: pourquoi dois-je spécifier un nom de zone? Cette information n'est-elle pas déjà dans le fichier?!? (Eh bien, appelons cela un secret de liaison sombre.) PS: Avec l' option,-i none cela prend une fraction de seconde.
Tino
7

Ou modifiez simplement votre named.conf et utilisez cette option:

Masterfile-Format Text;

vous pouvez le faire de même dans chaque option de zone.

VBnoob
la source
est-il possible de le faire à l'échelle mondiale?
naught101
oui, il suffit de le mettre dans named.conf.options
VBnoob