Thiết lập DNS Server chính (Primary) và phụ (Secondary) là một phần quan trọng trong việc xây dựng hạ tầng mạng ổn định. Bài viết này sẽ hướng dẫn chi tiết cách cấu hình hai máy chủ DNS để đảm bảo dịch vụ phân giải tên miền luôn sẵn sàng.
Tổng quan về DNS chính - phụ
DNS (Domain Name System) đóng vai trò thiết yếu trong việc phân giải tên miền thành địa chỉ IP. Kiến trúc DNS chính - phụ mang lại nhiều lợi ích:
- Độ tin cậy cao: Khi máy chủ chính gặp sự cố, máy chủ phụ tự động tiếp quản công việc phân giải
- Dự phòng: Đảm bảo dịch vụ không bị gián đoạn
- Cân bằng tải: Phân phối lưu lượng giữa các máy chủ
- Bảo trì thuận tiện: Có thể bảo trì máy chủ chính mà không ảnh hưởng đến người dùng
Yêu cầu hệ thống
Bài hướng dẫn này sử dụng hai máy ảo với địa chỉ IP:
- Máy chủ chính: 192.168.100.10
- Máy chủ phụ: 192.168.100.20
Cấu hình mạng tĩnh
Trên cả hai máy ảo, thực hiện các bước sau:
systemctl stop firewalld
setenforce 0
Kiểm tra và cài đặt dịch vụ DNS:
rpm -qa | grep ^bind
yum install -y bind bind-chroot bind-utils
Lưu ý các file cấu hình quan trọng:
- File cấu hình chính:
/etc/named.conf - File cấu hình vùng:
/etc/named.rfc1912.zones - File mẫu dữ liệu vùng:
/var/named/named.localhost
Cấu hình máy chủ DNS chính
Bước 1: Chỉnh sửa file cấu hình chính
vi /etc/named.conf
Cập nhật các tham số listen-on và allow-query để chấp nhận kết nối từ mạng nội bộ.
Bước 2: Cấu hình vùng DNS
vi /etc/named.rfc1912.zones
Xóa các vùng mặc định không cần thiết và thêm vùng mới cho tên miền.
Bước 3: Tạo file dữ liệu vùng
cd /var/named
cp -p named.localhost example.vn
vi /var/named/example.vn
Cấu hình các bản ghi cần thiết:
- Bản ghi SOA (Start of Authority)
- Bản ghi NS (Name Server)
- Bản ghi A (Address)
- Bản ghi CNAME (Canonical Name)
Cấu hình máy chủ DNS phụ
Bước 1: Chỉnh sửa file cấu hình
vi /etc/named.conf
Bước 2: Khai báo vùng slave
vi /etc/named.rfc1912.zones
Thêm cấu hình vùng slave trỏ đến máy chủ chính:
type slave;
file "slaves/example.vn";
masters { 192.168.100.10; };
};
Khởi động dịch vụ
Trên cả hai máy:
systemctl enable named
systemctl start named
Kiểm tra trạng thái:
systemctl status named
Cấu hình DNS resolver
Chỉnh sửa file /etc/resolv.conf trên cả hai máy:
vi /etc/resolv.conf
Quan trọng: Thứ tự các nameserver rất quan trọng. Máy chủ chính phải được đặt ở dòng đầu tiên:
nameserver 192.168.100.10
nameserver 192.168.100.20
Hệ thống sẽ ưu tiên sử dụng DNS đầu tiên; khi không thể kết nối, nó sẽ tự động chuyển sang DNS thứ hai.
Kiểm tra và xác minh
Cài đặt công cụ kiểm tra
yum install -y bind-utils
Xác minh máy chủ chính
Sử dụng lệnh nslookup hoặc dig để kiểm tra:
nslookup www.example.vn 192.168.100.10
dig @192.168.100.10 example.vn
Xác minh máy chủ phụ
nslookup www.example.vn 192.168.100.20
dig @192.168.100.20 example.vn
Kiểm tra file dữ liệu đã được đồng bộ:
ls -la /var/named/slaves/
Kiểm tra chuyển đổi dự phòng
Trên máy chủ chính, dừng dịch vụ DNS:
systemctl stop named
Sau đó thực hiện truy vấn DNS - hệ thống sẽ tự động sử dụng máy chủ phụ (192.168.100.20):
nslookup www.example.vn
Khi khởi động lại dịch vụ trên máy chủ chính, hệ thống sẽ quay về sử dụng 192.168.100.10 theo thứ tự trong /etc/resolv.conf.
Xử lý sự cố
Kiểm tra cú pháp file cấu hình
named-checkconf -z /etc/named.conf
named-checkconf -z /etc/named.rfc1912.zones
Kiểm tra file dữ liệu vùng
named-checkzone example.vn /var/named/example.vn
Xem log dịch vụ
journalctl -u named -f
tail -f /var/log/messages
Các lỗi thường gặp
- Cổng 53 bị chặn: Kiểm tra tường lửa
- Quyền truy cập file: Đảm bảo thư mục
/var/named/slavescó quyền ghi - Kết nối mạng: Xác minh hai máy có thể ping được nhau
- Cú pháp sai: Sử dụng
named-checkconfđể phát hiện lỗi