Hệ thống DNS: Kiến trúc, Bảo mật và Kỹ thuật Nâng cao

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:

  1. Ứng dụng kiểm tra bộ nhớ đệm nội bộ (nếu có)
  2. Trình phân giải cục bộ (resolver) kiểm tra cache DNS và tập tin /etc/hosts
  3. 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)
  4. 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 cho internal
    • Tới máy chủ TLD internal → nhận NS cho service.internal
    • Tới máy chủ quyền hạn service.internal → nhận bản ghi A hoặc SRV
  5. 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 ghi
  • DS: 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)

Thẻ: dns DNSSEC DoH DoT Anycast

Đăng vào ngày 18 tháng 6 lúc 18:58