Với vai trò như một “danh bạ điện thoại” toàn cầu, Hệ thống tên miền (DNS) đóng vai trò then chốt trong mọi hoạt động trên mạng Internet. Bài viết này sẽ cung cấp một cái nhìn tổng quan về DNS trên nền tảng Ubuntu Server 24.04, tập trung vào phần mềm BIND9, đồng thời đưa ra hướng dẫn chi tiết từng bước để biến máy chủ Ubuntu thành một DNS Server nội bộ mạnh mẽ và chuyên nghiệp, giúp bạn nắm vững kiến thức từ lý thuyết đến thực hành.
Phần 1: Tổng quan về DNS trên Ubuntu Server 24.04
DNS – Kiến trúc sư thầm lặng của mạng Internet
Trong thế giới của mạng máy tính, Hệ thống tên miền (Domain Name System – DNS) đóng vai trò như một danh bạ điện thoại toàn cầu. Thay vì phải ghi nhớ những chuỗi số phức tạp như 192.168.100.51, người dùng chỉ cần gõ những cái tên dễ nhớ như mail.fpoly.local để truy cập các dịch vụ. DNS chính là cầu nối thần kỳ, tự động chuyển đổi tên miền thân thuộc đó thành địa chỉ IP, giúp các thiết bị kết nối với nhau một cách dễ dàng.
Trên nền tảng Ubuntu Server 24.04, DNS thường được triển khai thông qua phần mềm BIND9 (Berkeley Internet Name Domain) – một “cây đại thụ” trong lĩnh vực này. BIND9 không chỉ đơn thuần là dịch vụ phân giải tên miền mà còn hỗ trợ nhiều chế độ hoạt động linh hoạt:
- Caching DNS: Tăng tốc truy cập bằng cách lưu trữ tạm thời các kết quả truy vấn.
- Authoritative DNS: Đóng vai trò là “chủ quản” chính thức, cung cấp thông tin cho các tên miền được quản lý.
- Forwarding DNS: Chuyển tiếp các truy vấn ra các máy chủ DNS khác (ví dụ: Google DNS 8.8.8.8).

Phần 2: Hướng dẫn triển khai chi tiết: Biến Ubuntu thành DNS Server mạnh mẽ
Việc cài đặt DNS nội bộ mang lại nhiều lợi ích vượt trội, từ việc quản lý tập trung, tăng tốc độ truy vấn cho đến nâng cao bảo mật. Dưới đây là hướng dẫn từng bước để biến một máy chủ Ubuntu trở thành một DNS Server chuyên nghiệp, với mô hình lab giả định cho mạng 192.168.100.0/24 và tên miền fpoly.local.

Bước 1: Chuẩn bị môi trường và cài đặt BIND9
Trước tiên, bạn cần chuẩn bị 3 máy ảo: một máy chủ DNS, một máy trạm Windows và một máy chủ dịch vụ. Trên máy chủ DNS, hãy cài đặt các gói cần thiết bằng lệnh sau: root@ubuntu:~# apt -y install bind9 bind9utils net-tools dnsutils
Bước 2: Cấu hình chính cho BIND9
Mở file cấu hình chính /etc/bind/named.conf và thêm dòng sau để gọi các file cấu hình zone nội bộ: include "/etc/bind/named.conf.internal-zones";
Tiếp theo, mở file /etc/bind/named.conf.options và thêm các tùy chọn quan trọng để cho phép máy chủ truy vấn đệ quy và tăng cường bảo mật DNSSEC. options { dnssec-validation auto; allow-query { localhost; 192.168.100.0/24; }; recursion yes; }
Giải thích: Lệnh recursion yes; cho phép máy chủ tự động truy vấn các DNS server khác trên Internet khi cần, giúp các client trong mạng nội bộ dễ dàng truy cập các trang web bên ngoài.
Bước 3: Tạo Zone phân giải thuận và nghịch
Tạo một file mới /etc/bind/named.conf.internal-zones để khai báo các zone mà máy chủ sẽ quản lý.
- Zone phân giải thuận (Forward Zone): Chuyển đổi từ tên miền sang IP.
- Zone phân giải nghịch (Reverse Zone): Chuyển đổi từ IP sang tên miền.
Nội dung file sẽ như sau: zone "fpoly.local" IN { type primary; file "/etc/bind/fpoly.local.lan"; allow-update { none; }; };
zone "100.168.192.in-addr.arpa" IN { type primary; file "/etc/bind/100.168.192.db"; allow-update { none; }; };
Bước 4: Tạo file Zone
Tạo file /etc/bind/fpoly.local.lan để lưu trữ các bản ghi phân giải thuận. Các bản ghi này sẽ ánh xạ tên miền như mailserver.fpoly.local hoặc webserver.fpoly.local đến các địa chỉ IP tương ứng.
$TTL 86400
@ IN SOA ns1.fpoly.local. admin.gmail.com. (
2025082901 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS ns1.fpoly.local.
IN A 192.168.100.50
IN MX 10 mailserver.fpoly.local.
ns1 IN A 192.168.100.50
mailserver IN A 192.168.100.51
webserver IN A 192.168.100.51
pop IN CNAME mailserver
smtp IN CNAME mailserver
Tiếp theo, tạo file /etc/bind/100.168.192.db để lưu các bản ghi phân giải nghịch, giúp chuyển đổi địa chỉ IP về tên miền.
$TTL 86400
@ IN SOA ns1.fpoly.local. (
2024042901 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
IN NS ns1.fpoly.local.
50 IN PTR ns1.fpoly.local.
51 IN PTR mailserver.fpoly.local.
Bước 5: Kiểm tra và khởi động lại dịch vụ
Sau khi hoàn tất cấu hình, hãy sử dụng các công cụ mạnh mẽ như named-checkzone và named-checkconf để đảm bảo không có lỗi cú pháp. root@ubuntu:~# named-checkzone fpoly.local /etc/bind/fpoly.local.lan root@ubuntu:~# named-checkzone 100.168.192.in-addr.arpa /etc/bind/100.168.192.db
Cuối cùng, khởi động lại dịch vụ BIND9 để áp dụng các thay đổi: root@ubuntu:~# systemctl restart named
Phần 3: Kiểm tra và ứng dụng
Sau khi dịch vụ DNS đã chạy, bạn có thể kiểm tra hiệu quả bằng các công cụ như dig hoặc nslookup trên máy chủ. root@ubuntu:~# dig pop.fpoly.local root@ubuntu:~# dig -x 192.168.100.51

Trên máy trạm Windows, bạn chỉ cần cấu hình DNS trỏ về địa chỉ IP của máy chủ DNS (ví dụ: 192.168.100.50). Lúc này, mọi truy cập vào các tên miền như mail.fpoly.local hay webserver.fpoly.local đều sẽ được phân giải thành công.
Với bài lab này, bạn không chỉ nắm vững lý thuyết mà còn có được kinh nghiệm thực tế quý giá trong việc xây dựng một hệ thống mạng nội bộ vững chắc. Nắm vững DNS chính là chìa khóa để quản lý và vận hành hiệu quả mọi dịch vụ mạng, từ một doanh nghiệp nhỏ cho đến một hệ thống phức tạp.


Giảng viên Đỗ Quang Ngọc
Bộ môn Ứng dụng phần mềm
FPT Polytechnic TP HCM

