Giới thiệu BIND – Máy chủ DNS mã nguồn mở trên Linux

BIND (Berkeley Internet Name Domain) là một giải pháp máy chủ DNS mã nguồn mở, được phát triển bởi ISC (Internet Systems Consortium). Với khả năng ổn định, linh hoạt và tuân thủ đầy đủ các tiêu chuẩn DNS, BIND hiện chiếm tỷ lệ lớn nhất trong số các máy chủ DNS đang hoạt động trên toàn cầu, đặc biệt phổ biến trong môi trường doanh nghiệp và hạ tầng mạng quy mô lớn.

Các loại máy chủ DNS cơ bản

  • Máy chủ bộ nhớ đệm (Caching-only server): Không lưu trữ vùng dữ liệu (zone), chỉ thực hiện truy vấn đệ quy và lưu kết quả tạm thời để tăng tốc độ tra cứu cho các yêu cầu tiếp theo.
  • Máy chủ chính (Primary/master server): Lưu trữ bản sao gốc của dữ liệu vùng (zone file) dưới dạng đọc–ghi, chịu trách nhiệm cập nhật và phân phối thông tin DNS cho các máy chủ khác.
  • Máy chủ phụ (Secondary/slave server): Đồng bộ dữ liệu từ máy chủ chính thông qua cơ chế zone transfer (AXFR/IXFR), chỉ hỗ trợ đọc và phục vụ truy vấn — đảm bảo tính sẵn sàng cao và cân bằng tải.

Cấu trúc và thành phần hệ thống BIND

Khi cài đặt gói bind, hệ thống sẽ tạo ra:

  • Quy trình nền named, chạy dưới tài khoản hệ thống named nhằm hạn chế đặc quyền;
  • Thư mục cấu hình chính tại /etc/named.conf và các tệp bổ sung được tham chiếu qua include;
  • Thư mục dữ liệu mặc định: /var/named/, nơi lưu trữ zone files, khóa DNSSEC và các tệp trạng thái.

Các gói phụ trợ quan trọng

Gói Mục đích
bind-chrootHạn chế không gian làm việc của named vào chroot jail để tăng cường bảo mật.
bind-utilsCung cấp các công cụ dòng lệnh như dig, nslookup, hostrndc.
bind-libsChứa thư viện chung dùng chung giữa máy chủ và client.

Cấu trúc tệp cấu hình điển hình

Dưới đây là danh sách các tệp thường gặp trong hệ sinh thái BIND:

  • /etc/named.conf: Tệp cấu hình chính, điều khiển hành vi tổng thể của dịch vụ.
  • /etc/named.rfc1912.zones: Định nghĩa các vùng DNS cục bộ (thường được include vào named.conf).
  • /var/named/named.ca: Danh sách 13 máy chủ gốc (root hints) theo RFC 1912.
  • /var/named/named.localhost, /var/named/named.loopback: Các zone mẫu cho tên miền nội bộ và loopback.
  • /etc/rndc.key, /etc/rndc.conf: Khóa và cấu hình cho rndc — công cụ quản trị từ xa.

Phân tích cấu hình named.conf

Mỗi khối trong tệp này kết thúc bằng dấu chấm phẩy (;). Cấu trúc gồm ba phần chính:

1. Khối options

options {
  listen-on port 53 { any; };
  listen-on-v6 port 53 { ::1; };
  directory "/var/named";
  dump-file "/var/named/data/cache_dump.db";
  statistics-file "/var/named/data/named_stats.txt";
  allow-query { 192.168.0.0/16; 10.0.0.0/8; };
  recursion yes;
  dnssec-validation auto;
  pid-file "/run/named/named.pid";
  session-keyfile "/run/named/session.key";
};

Một số tùy chọn then chốt:

  • listen-on: Chỉ định địa chỉ IPv4 mà named lắng nghe (mặc định chỉ localhost); nên giới hạn phạm vi nếu không cần phục vụ công khai.
  • allow-query: Kiểm soát nguồn truy vấn hợp lệ — tránh lạm dụng trong các máy chủ mở.
  • recursion: Kích hoạt hoặc vô hiệu hóa khả năng tra cứu đệ quy (quan trọng đối với máy chủ cache hoặc resolver).

2. Khối logging

logging {
  channel query_log {
    file "/var/log/named_queries.log" versions 3 size 10m;
    severity info;
    print-time yes;
  };
  category queries { query_log; };
};

Hỗ trợ ghi nhật ký chi tiết các truy vấn DNS, hữu ích cho giám sát và phân tích lưu lượng.

3. Khối zone mẫu (root hints)

zone "." IN {
  type hint;
  file "named.ca";
};

Khối này khai báo vùng kiểu hint, dùng để khởi tạo danh sách máy chủ gốc khi thực hiện truy vấn ngoài vùng cục bộ.

Tập tin vùng (Zone Files)

Có hai loại zone file cơ bản:

Vùng thuận (Forward zone)

Tập tin /var/named/example.com.zone:

$TTL 300
@   IN SOA ns1.example.com. admin.example.com. (
      2024052001 ; serial
      3600       ; refresh
      600        ; retry
      604800     ; expire
      86400      ; minimum
)
    IN NS ns1
    IN NS ns2
    IN MX 10 mail
ns1 IN A 192.168.10.5
ns2 IN A 192.168.10.6
mail IN A 192.168.10.10
www  IN A 192.168.10.20
blog IN CNAME www

Giải thích ngắn gọn:

  • SOA: Bản ghi bắt buộc, xác định quyền sở hữu vùng và tham số đồng bộ.
  • NS: Danh sách máy chủ tên chịu trách nhiệm cho vùng.
  • MX: Chỉ định máy chủ thư điện tử ưu tiên.
  • A: Ánh xạ tên miền sang địa chỉ IPv4.
  • CNAME: Tạo bí danh cho một tên miền khác.

Thẻ: bind dns linux named zone-file

Đăng vào ngày 30 tháng 7 lúc 08:34