DNS cho Linux là dịch vụ internet có nhiệm vụ dịch tên miền thành địa chỉ IP để máy tính chạy Linux có thể hiểu được. Ở bài viết này Vietnix sẽ hướng dẫn bạn cách cài đặt và cấu hình DNS cho Linux nhanh chóng, đơn giản nhất.
Tìm hiểu về DNS
Trước khi bắt đầu cài đặt DNS cho Linux, hãy cùng tìm hiểu qua một số kiến thức cần biết về nó.
Khái niệm tên miền
Xét một ví dụ về website www.vietnix.vn, đây được gọi là một tên miền đầy đủ (FQDN – Fully Qualified Domain Name). Trong đó mỗi domain bao gồm nhiều thành phần, mỗi thành phần được ngăn cách nhau bởi một dấu chấm.
Phần com được gọi là thành phần cấp cao, Vietnix là thành phần cấp hai và www là thành phần cấp ba của domain.
Khái niệm subdomain
Giả sử có một website tên thuevps.vietnix.vn, thì thuevps ở đây được gọi là subdomain (miền phụ) của vietnix.vn. Chỉ những name server cho thuevps.vietnix.vn mới biết được các host tồn tại bên dưới nó. Nói cách khác, chỉ Vietnix mới đến sự tồn tại của subdomain thuevps, còn name server của root thì không.
Các loại server DNS
Có ba loại server DNS mà ta cần biết:
Primary DNS server: Lưu trữ các bản master copy của file cấu hình domain, chứa các thông tin như địa chỉ IP hoặc chi tiết về quản trị viên.
Secondary DNS server: Chứa các bản copy của thông tin domain (chỉ cho phép đọc) có được từ primary DNS server. Các thông tin này rất hữu ích nếu chẳng may primary server gặp sự cố.
Caching DNS server: Chứa dữ liệu của các truy vấn được yêu cầu gần đây từ người dùng, giúp giảm thiểu công việc mà các server primary và secondary cần thực hện.
Cách cài đặt DNS cho Linux
Cài đặt Bind
Trước tiên ta cần cài đặt bind trên bản phân phối Linux đang sử dụng.
Đối với Debian/Ubuntu:
sudo apt-get install bind9
Đối với Redhat/CentOS/Fedora:
yum install bind9
Thư mục /etc/bind chứa mọi cấu hình của DNS. /etc/bind/named.conf chính là cấu hình chính, chứa mọi file cần thiết khác, còn file /etc/bind/db.root có nhiệm vụ chỉ định name server root.
Sau khi hoàn tất việc cài đặt, ta có thể khởi động và cho chạy khi boot như sau:
systemctl start named systemctl enable named
Tiếp theo, ta cần chỉ định primary zone (vùng chính) trong file etc/named.conf:
Zone “abcexample.com” { Type master ; File abcexample.com.db };
Trong đó, lệnh zone cho phép ta định nghĩa một vùng DNS cụ thể. File chứa thông tin về zone được đặt trong thư mục /var/named, vì ta cần định nghĩa primary zone nên type sẽ được chọn là master.
Sau đó là chỉ định secondary zone:
Zone “abcexample.com” { Type slave masters Primary Nameserver IP Address Here; ; file abcexample.com.db };
Tên miền của secondary zone cũng tương tự như trong primary zone, type được đặt là slave để định nghĩa secondary zone. Ngoài ra, option masters dùng để chỉ định địa chỉ IP của name server chính, còn file sẽ chứa đường dẫn đến các file của primary zone.
Cuối cùng là định nghĩa caching zone. Trong bước này, ta cần định nghĩa 3 phần zone như dưới đây:
Zone "." IN { type hint; file "root.hint"; };
Trong đó, dot chính là name server của root, type hint để định nghĩa caching zone, còn root.hint là file chứa server root.
Zone "localhost" IN { type master; file "localhost.db"; };
Zone thứ ba dùng để thực hiện tra cứu ngược (reverse lookup) cho localhost.
Zone "0.0.127.in-addr.arpa" IN { type master; file "127.0.0.rev"; };
Đưa cả ba zone này vào /etc/named.conf, khi đó hệ thống sẽ hoạt động như một server caching DNS. Bây giờ ta sẽ nhập nội dung của các file được tham chiếu như localhost.db, abc.com.db, 127.0.0.rev. Các file này chứa những loại bản ghi DNS (DNS record) cho mỗi zone.
Vậy bản ghi DNS có những loại nào? Ta sẽ tìm hiểu ở ngay trong phần dưới đây.
Các loại bản ghi DNS
SOA (Start of Authority)
SOA là thông tin về zone và những record khác, được lưu trữ trong DNS zone, định nghĩa thuộc tính của zone. Một số thông tin mà bản ghi SOA chứa gồm có:
- Tên của zone
- Zone class
- Name server của primary master
- Số seri của zone
- Thời gian refresh, retry, expire và TTL
Cú pháp:
abcexample.com. 86400 IN SOA ns1.abcexample.com.mail.abcexample.com. ( 2020020204 ;serial 86400 ;refresh, seconds 8200 ;retry, seconds 3600000 ;expire, seconds 86400 ;minimum, seconds )
Cách truy vấn:
-query=soa
![Cách cài đặt và cấu hình DNS cho Linux 8 Cài đặt và cấu hình DNS cho Linux (SOA record)](https://static-xf1.vietnix.vn/wp-content/uploads/2024/05/hinh-1.webp)
Record Name Server (NS)
Loại record này dùng để chỉ định name server cho zone.
Cú pháp:
IN NS ns1.abcexample.com. IN NS ns2.abcexample.com.
Cách truy vấn:
-query=ns
![Cách cài đặt và cấu hình DNS cho Linux 9 Record Name Server](https://static-xf1.vietnix.vn/wp-content/uploads/2024/05/hinh-2-1.webp)
Record Address (A & AAAA)
Loại record này có nhiệm vụ ánh xạ hostname đến địa chỉ IP tương ứng.
Cú pháp:
support IN A 192.168.1.5
Record Pointer (PTR)
Ngược lại với record kiểu address, loại này sẽ ánh xạ địa chỉ IP đến hostname tương ứng.
Cú pháp:
192.168.1.5 IN PTR support.example.com.
Record Mail Exchange (MX)
Loại bản ghi này dùng để chỉ định xem mail server nào có nhiệm vụ nhận email thay cho domain.
Cú pháp:
Domain TTL Class Type Priority Host abcexample.com. 1936 IN MX 10 onemail.abcexample.com abcexample.com. 1936 IN MX 10 twomail.abcexample.com
Trong đó, Priority dùng để chỉ định mail server, giá trị Priority càng lớn thì ưu tiên càng cao.
Truy vấn:
-query=mx
![Cách cài đặt và cấu hình DNS cho Linux 10 Mail Exchange Record](https://static-xf1.vietnix.vn/wp-content/uploads/2024/05/hinh-3.webp)
Record Canonical Name (CNAME)
Bản ghi này chỉ định bí danh (alias) hoặc nickname cho host.
NAME TYPE VALUE -------------------------------------------------- abc.example.com. CNAME cab.example.com. cab.example.com. A 192.0.2.23
Record Text (TXT)
Bản ghi Text cho phép người dùng thêm bất kỳ loại văn bản nào, chẳng hạn như thông tin liên lạc, thông tin bổ sung người dùng khác cần biết về domain của mình,…
abcexample.com. IN TXT “welcome to our website”
Một số lệnh khác khi cấu hình DNS cho Linux
Sửa lỗi cấu hình
Quá trình viết file zone có thể gặp một số lỗi không mong muốn, khi đó ta có thể chẩn đoán những lỗi này dựa trên log theo cú pháp sau:
$tail -f /var/log/messages
Lệnh host
Sau khi thêm và chỉnh sửa các bản ghi, ta có thể kiểm tra xem host đã được giải quyết chính xác chưa:
host acb.com
Nếu truyền hostname vào lệnh thì nó sẽ trả về địa chỉ IP tương ứng. Ngược lại, nếu truyền địa chỉ IP thì câu lệnh sẽ trả về hostname.
host 192.168.1.5
Lệnh whois
Lệnh whois được dùng để xem thông tin chi tiết về chủ sở hữu của domain, chẳng hạn như SĐT liên lạc.
whois abc.com
Lệnh rndc
Lệnh rndc được dùng để bảo mật name server (cục bộ và ở xa). Để ngăn chặn bất kỳ truy cập không được xác thực nào vào name server, ta cần phải cấu hình rndc trên cổng được chọn (theo mặc định là cổng 953).
Ngoài ra ta cũng có thể kiểm tra trạng thái của server dns bằng lệnh sau:
rndc status
Nếu thực hiện bất kỳ thay đổi nào với các file zone, ta có thể reload lại dịch vụ như sau:
rndc reload abc.com
Hoặc reload mọi file zone:
rndc reload
Nếu thêm zone mới hoặc thay đổi cấu hình của server thì ta có thể reload lại cấu hình bằng lệnh:
rndc reconfig
Lời kết
Qua bài viết trên Vietnix đã hướng dẫn cho bạn những kiến thức cơ bản liên quan đến DNS và cách cài đặt, cấu hình DNS cho Linux đơn giản nhất. Chúc các bạn thành công!