File zona biner di BIND9

8

File zona Master DNS telah ditransfer ke slave, tapi saya tidak bisa membaca file zona:

> less db.example.com

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

Ini terjadi setelah saya menggunakan perintah ini:

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

Saya menginstal bind V.9.9 bukan V.9.6. Saya ingin dapat membaca file zona sebagai teks biasa.

pengguna1044942
sumber
6
Kenapa kamu cp -r /usr/local/sbin/* /usr/sbin/.???
Gevial
1
Saya akan mengatakan: instal ulang server Anda dan segalanya. Jalan pintas mungkin hanya menginstal ulang "world" (atau bagian "sbin") dan menghapus semua file yang ditambahkan dari "/ usr / local / sbin".
Ouki
Apakah file DNS itu benar-benar file biner (atau adakah beberapa karakter kontrol yang membuat "kurang" tidak cocok)?
Ouki
itu bisa berupa sesuatu yang sederhana, seperti karakter kontrol yang tidak dapat dicetak dalam file, atau data zona Anda pada slave mungkin benar-benar disimpan dalam format mentah, karena Anda menggunakan BIND 9.9, dalam hal ini lihat jawaban saya di bawah ini - Anda dapat menggunakan named.compilezone untuk mengubah dari satu format ke format lain jika Anda hanya ingin melihat file tersebut.
Michael McNally

Jawaban:

23

File data zona slave di BIND 9.9 dalam format "mentah" secara default. Anda dapat mengonversi file zona format "mentah" ke format "teks" menggunakan utilitas compilezone bernama yang menyertai BIND.

mentah ke teks:

# 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

teks menjadi mentah:

# 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
sumber
Terima kasih. Ada 2 file. File pertama adalah db-HdPKbJ2m (asli bukan biner) dan db.example.com (biner) dan saya menggunakan perintah seperti ini: named-compilezone -f raw -F text -o db.example.com db-HdPKbJ2m db.example.comTetapi kesalahan ini telah terjadi. 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
Mungkin saja sesuatu pada sistem Anda merusak file zona dengan cara tertentu. Rekomendasi saya adalah bahwa jika file tidak membaca dengan benar, saya akan menghentikan server pada slave, menghapus file zona korup (atau jika Anda lebih suka, mengubah nama mereka untuk memindahkannya), dan restart server slave. Seharusnya retransfer konten zona dari master.
Michael McNally
Terima kasih atas pencerahan ini. FYI butuh lebih dari (!) 5 (!) Menit (!) Untuk membuang file zona 11 KB dengan hanya 628 entri di sisi saya. Tidak, itu bukan IO atau CPU terikat. (Ini mungkin harus disebut bind magic.) Dan pertanyaan menarik lainnya: Mengapa saya perlu menentukan nama zona? Bukankah informasi ini sudah ada dalam file?!? (Ya, sebut saja ini rahasia rahasia yang gelap.) PS: Dengan opsi-i none dibutuhkan sepersekian detik.
Tino
7

Atau cukup edit named.conf Anda dan gunakan Opsi ini:

Masterfile-Format Text;

Anda dapat melakukan hal yang sama di setiap Opsi Zona.

VBnoob
sumber
apakah mungkin melakukan ini secara global?
naught101
ya, cukup masukkan ke named.conf.options
VBnoob