Khái niệm cốt lõi của DNS
DNS (Domain Name System) là cơ chế phân giải tên miền nền tảng của mạng Internet, hoạt động như một hệ thống tra cứu phân cấp để chuyển đổi các định danh thân thiện với con người — ví dụ mail.example.org — thành địa chỉ mạng có thể định tuyến được như 203.0.113.45 (IPv4) hoặc 2001:db8:abcd::1 (IPv6).
Các loại bản ghi DNS thiết yếu
| Loại bản ghi | Mục đích chính | Ví dụ cấu hình | Ghi chú |
|---|---|---|---|
A |
Ánh xạ tên miền sang địa chỉ IPv4 | app IN A 198.51.100.22 |
Phổ biến nhất cho dịch vụ web truyền thống |
AAAA |
Ánh xạ tên miền sang địa chỉ IPv6 | api IN AAAA 2001:db8:f00d::a1b2 |
Bắt buộc khi triển khai IPv6 đầy đủ |
CNAME |
Tạo bí danh cho một tên miền khác | static IN CNAME assets.cdn-prod.net. |
Không được tồn tại cùng lúc với bản ghi A, MX hay TXT trên cùng tên miền |
MX |
Xác định máy chủ thư điện tử ưu tiên | IN MX 5 smtp-primary.corp.io.IN MX 20 smtp-backup.corp.io. |
Số ưu tiên thấp hơn = được chọn trước; giá trị 0 hợp lệ |
TXT |
Lưu trữ dữ liệu phi cấu trúc dạng chuỗi | _dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:reports@corp.io" |
Được dùng cho SPF, DKIM, DMARC, xác minh sở hữu tên miền |
SRV |
Định vị dịch vụ theo cổng và giao thức | _sip._tcp IN SRV 10 60 5060 sip01.corp.io. |
Thường dùng trong VoIP, XMPP, hoặc dịch vụ microservice |
CAA |
Hạn chế tổ chức cấp chứng chỉ TLS/SSL | IN CAA 0 issue "letsencrypt.org" |
Ngăn chặn việc cấp chứng chỉ trái phép cho tên miền |
Cơ chế phân giải và luồng truy vấn
Khi một ứng dụng yêu cầu phân giải backend.service.internal, quy trình thực hiện tuần tự qua các bước sau:
- Ứng dụng kiểm tra bộ nhớ đệm nội bộ (nếu có)
- Trình phân giải cục bộ (resolver) kiểm tra cache DNS và tập tin
/etc/hosts - Nếu không tìm thấy, resolver gửi truy vấn đệ quy tới máy chủ DNS cấu hình (ví dụ:
10.0.10.1) - Máy chủ này lần lượt thực hiện truy vấn lặp lại:
- Tới máy chủ gốc (
.) → nhận NS chointernal - Tới máy chủ TLD
internal→ nhận NS choservice.internal - Tới máy chủ quyền hạn
service.internal→ nhận bản ghiAhoặcSRV
- Tới máy chủ gốc (
- Kết quả được trả về và lưu vào cache với thời gian sống (TTL) tương ứng
Chiến lược TTL và tối ưu hiệu năng
Giá trị TTL ảnh hưởng trực tiếp đến độ trễ phân giải và khả năng phản ứng khi thay đổi hạ tầng:
web.corp.io. 300 IN A 192.0.2.100
api.corp.io. 60 IN A 203.0.113.50
docs.corp.io. 86400 IN CNAME docs.s3-website-us-east-1.amazonaws.com.
- Giá trị ngắn (30–300 giây): Dành cho môi trường phát triển, cân bằng tải, hoặc khi chuẩn bị di dời máy chủ
- Giá trị trung bình (3600–14400 giây): Phù hợp với dịch vụ sản xuất ổn định nhưng cần khả năng cập nhật linh hoạt
- Giá trị dài (86400+ giây): Áp dụng cho tài nguyên tĩnh, CDN endpoint, hoặc bản ghi không thay đổi thường xuyên
Bảo mật DNS: Các mối đe dọa và biện pháp phòng vệ
| Mối đe dọa | Cơ chế tấn công | Giải pháp phòng thủ |
|---|---|---|
| Cache poisoning | Chèn bản ghi sai vào bộ nhớ đệm của resolver | Kích hoạt DNSSEC, sử dụng cổng nguồn ngẫu nhiên, triển khai Response Rate Limiting (RRL) |
| Subdomain takeover | Tận dụng CNAME trỏ tới dịch vụ bên ngoài đã bị xoá |
Quét định kỳ bằng công cụ như subjack, loại bỏ bản ghi lỗi thời, giám sát thay đổi DNS tự động |
| DNS tunneling | Mã hóa dữ liệu nhạy cảm vào tên miền truy vấn | Lọc truy vấn bất thường (độ dài tên miền > 63 ký tự, mẫu base32/base64), giám sát tần suất truy vấn |
Triển khai DNSSEC
DNSSEC đảm bảo tính toàn vẹn và xác thực nguồn gốc của bản ghi DNS thông qua chuỗi chữ ký số. Các bản ghi then chốt gồm:
DNSKEY: Chứa khóa công khai của vùng (zone)RRSIG: Chữ ký số cho từng nhóm bản ghiDS: Bản ghi ủy quyền từ vùng cha (parent zone)NSEC3: Chứng minh phủ định tồn tại (negative proof) mà không tiết lộ toàn bộ danh sách tên miền
Để xác minh trạng thái DNSSEC của một tên miền:
dig +dnssec +short example.net DNSKEY
dig +sigchase +trusted-key=./root.keys example.net A
Kỹ thuật nâng cao
Tăng tốc phân giải phía client
Các trình duyệt hỗ trợ tiền phân giải (prefetch) để giảm độ trễ ban đầu:
<link rel="dns-prefetch" href="//analytics.corp.io">
<link rel="preconnect" href="https://api.corp.io" crossorigin>
<meta http-equiv="x-dns-prefetch-control" content="on">
Phân phối địa lý và Anycast
Hệ thống DNS sử dụng Anycast giúp định tuyến yêu cầu tới nút gần nhất dựa trên bảng định tuyến BGP. Ví dụ, cùng một địa chỉ IP 203.0.113.1 có thể được quảng bá từ nhiều trung tâm dữ liệu trên toàn cầu — mỗi yêu cầu sẽ tự động đi tới điểm gần nhất.
DNS mã hóa (DoH & DoT)
Hai giao thức bảo vệ quyền riêng tư bằng cách mã hóa toàn bộ truy vấn DNS:
- DoT (DNS over TLS): Sử dụng cổng TCP 853, tích hợp dễ dàng vào hệ thống mạng do tính tương thích với mô hình proxy
- DoH (DNS over HTTPS): Đóng gói truy vấn trong HTTP/2, chạy trên cổng 443 — tránh bị chặn bởi tường lửa nhưng khó kiểm soát hơn
Ví dụ truy vấn DoH bằng curl:
curl -s -H "Accept: application/dns-json" \
"https://dns.google/resolve?name=example.net&type=AAAA"
Tham khảo kỹ thuật
- Các cổng tiêu chuẩn: UDP/TCP 53 (DNS chuẩn), TCP 853 (DoT), TCP 443 (DoH), UDP 5353 (mDNS)
- Mã trạng thái phản hồi:
NOERROR(0),NXDOMAIN(3),SERVFAIL(2),REFUSED(5) - Dịch vụ DNS công cộng: Cloudflare (
1.1.1.1), Quad9 (9.9.9.9), Google (8.8.8.8)