Tệp vùng nhị phân trên BIND9


8

Tệp vùng DNS Master đã được chuyển sang nô lệ, nhưng tôi không thể đọc tệp vùng:

> less db.example.com

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

Điều này xảy ra sau khi tôi sử dụng lệnh này:

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

Tôi đã cài đặt liên kết V.9.9 thay vì V.9.6. Tôi muốn có thể đọc tệp vùng dưới dạng văn bản thuần túy.


6
Tại sao bạn cp -r /usr/local/sbin/* /usr/sbin/.???
Gevial

1
Tôi sẽ nói: cài đặt lại máy chủ của bạn và tất cả mọi thứ. Việc cắt ngắn có thể chỉ là cài đặt lại "thế giới" (hoặc phần "sbin") và xóa tất cả các tệp đã thêm khỏi "/ usr / local / sbin".
Ouki

Là tệp DNS đó thực sự là một tệp nhị phân (hoặc có một số ký tự kiểm soát làm cho "ít" không khớp với nó)?
Ouki

nó có thể là một cái gì đó đơn giản, chẳng hạn như các ký tự điều khiển không in được trong tệp hoặc dữ liệu vùng của bạn trên các nô lệ có thể thực sự được lưu trữ ở định dạng thô, vì bạn đang sử dụng BIND 9.9, trong trường hợp này hãy xem câu trả lời của tôi bên dưới - bạn có thể sử dụng tên.compilezone để thay đổi từ định dạng này sang định dạng khác nếu bạn chỉ muốn xem tệp.
Michael McNally

Câu trả lời:


23

Các tệp dữ liệu vùng nô lệ trong BIND 9.9 theo mặc định ở dạng "thô". Bạn có thể chuyển đổi các tệp vùng định dạng "thô" sang định dạng "văn bản" bằng cách sử dụng tiện ích có tên là compilezone đi kèm với BIND.

thô thành văn bản:

# 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

văn bản để thô:

# 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

Cảm ơn bạn. Có 2 file. Tệp đầu tiên là db-HdPKbJ2m (bản gốc không phải là nhị phân) và db.example.com (nhị phân) và tôi đã sử dụng lệnh như thế này: named-compilezone -f raw -F text -o db.example.com db-HdPKbJ2m db.example.comNhưng lỗi này đã xảy ra. 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.
dùng1044942

Có thể một cái gì đó trên hệ thống của bạn làm hỏng các tệp vùng theo một cách nào đó. Khuyến cáo của tôi là nếu các tệp không đọc chính xác, tôi sẽ dừng máy chủ trên nô lệ, xóa các tệp vùng bị hỏng (hoặc nếu bạn thích, đổi tên chúng để di chuyển chúng ra khỏi đường đi) và khởi động lại máy chủ nô lệ. Nó sẽ truyền lại nội dung vùng từ chủ.
Michael McNally

Cảm ơn sự giác ngộ này. FYI phải mất (!) 5 (!) Phút (!) Để kết xuất tệp vùng 11 KB chỉ với 630 mục ở bên cạnh tôi. Không, đó không phải là IO hay CPU. (Điều này có lẽ phải được gọi là ma thuật liên kết.) Và một câu hỏi thú vị khác: Tại sao tôi cần chỉ định tên khu vực? Không phải thông tin này đã có trong tập tin sao?!? (Chà, hãy gọi đây là một bí mật ràng buộc đen tối.) PS: Với tùy chọn,-i none nó chỉ mất một phần của giây.
Tino

7

Hoặc chỉ cần chỉnh sửa tên của bạn và sử dụng Tùy chọn này:

Masterfile-Format Text;

bạn có thể làm điều tương tự trong mọi Tùy chọn vùng.


Có thể làm điều này trên toàn cầu?
ness101

vâng, chỉ cần đặt nó vào
tên.conf.options
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.