
Tối ưu DNS resolver: cấu hình DoH và Unbound trên Linux
DNS resolver là thành phần quyết định tốc độ truy cập mạng của bạn. Khi cấu hình DNS resolver chưa tối ưu, thời gian tải trang web có thể tăng lên đáng kể. Bài viết này hướng dẫn cách cấu hình DNS-over-HTTPS (DoH) và Unbound để tăng tốc độ giải mã tên miền. Kết hợp DNS caching và DNS privacy, bạn có thể giảm thời gian phản hồi từ 50ms xuống còn 5ms.

DNS resolver là gì và tại sao cần tối ưu
DNS (Domain Name System) là hệ thống dịch tên miền thành địa chỉ IP. Resolver là phần tìm nạp thông tin này — có hai loại chính: Stub Resolver (chạy trên trình duyệt/OS) dan Recursive Resolver (server DNS thực sự thực hiện tra cứu). Khi bạn gõ một URL, Stub Resolver gửi yêu cầu đến Recursive Resolver để tìm IP. Việc sử dụng DNS resolver công cộng như Cloudflare (1.1.1.1) hay Google (8.8.8.8) thường nhanh hơn DNS resolver mặc định của ISP.
| Dịch vụ DNS | Thời gian phản hồi | TLS/DoH | Tuỳ cậm tình |
|---|---|---|---|
| Cloudflare 1.1.1.1 | ~5ms | Có (DoH) | Tốt |
| Google 8.8.8.8 | ~10-20ms | Có (DoH) | Trung bình |
| Quad9 9.9.9.9 | ~15ms | Có (DoH) | Rất tốt (chặn malware) |
| OpenDNS 208.67.222.222 | ~25ms | Có (DoH) | Có bộ lọc nội dung |
Cách kiểm tra thời gian DNS hiện tại
Sử dụng lệnh dig để đo thời gian phản hồi:
dig example.com @1.1.1.1
dig example.com @8.8.8.8
dig example.com @your-current-dns
So s
rminal output showing dig command results with query time comparison across DNS providers –>
Cấu hình DNS-over-HTTPS (DoH) trên Linux
DNS-over-HTTPS mã hóa truy vấn DNS bằng TLS, bảo vệ quyền riêng tư và ngăn chặn gián đoạn DNS. Cách cấu hình DoH tùng trên Linux:
Sử dụng systemd-resolved (Ubuntu 22.04+)
Mở file cấu hình:
sudo nano /etc/systemd/resolved.conf
Thêm các dòng sau:
[Resolve]
DNS=1.1.1.1 1.0.0.1
FallbackDNS=8.8.8.8 8.8.4.4
DNSOverTLS=yes
DNSOverHTTPS=yes
Cache=yes
Khởi động lại dịch vụ:
sudo systemctl restart systemd-resolved
sudo systemctl enable systemd-resolved
Sử dụng cloudflared (standalone DoH proxy)
Nếu muốn dùng DoH mà không phụ thuộc systemd-resolved, hãy cài đặt cloudflared:
- Tải binary từ trang chủ Cloudflare
- Chạy:
cloudflared
g /etc/resolv.conf:nameserver 127.0.0.1 port 5454
Cài đặt Unbound làm recursive resolver cục bộ
Unbound là một DNS resolver nhẹ, nhanh, và an toàn — lý tưởng cho máy tính cá nhân hoặc máy chủ. Unbound giữ cache cục bộ, giảm thời gian truy vấn DNS đáng kể.
Cài đặt Unbound
# Debian/Ubuntu
sudo apt install unbound
# Fedora/RHEL
sudo dnf install unbound
Cấu hình Unbound
Mở file cấu hình chính:
sudo nano /etc/unbound/unbound.conf
Nội dung cấu hình nên bao gồm:
server:
verbosity: 1
interface: 127.0.0.1
port: 53
do-ip4: yes
do-udp: yes
do-tcp: yes
prefetch: yes
prefetch-key: yes
cache-max-size: 256m
cache-max-ttl: 86400
do-not-query-localhost: no
private-address: 10.0.0.0/8
private-address: 192.168.0.0/16
forward-zone:
name: "."
forward-addr: 1.1.1.1@853#cloudflare-dns.com
forward-addr: 8.8.8.8@853#dns.google
Kết hợp DoH với Unbound (DNSCrypt-proxy)
Để kết hợp DoH và Unbound, bạn có thể dùng DNSCrypt-proxy như một lớp proxy trung gian. DNSCrypt-proxy kết nối đến DoH của Cloudflare/Google, và Unbound lắng nghe trên localhost để phục vụ các truy vấn cục bộ.
Tối ưu hiệu suất DNS với cache và negative cache
Cache DNS giữ lại kết quả tra cứu trong một khoảng thời gian nhất định (TTL), giúp giảm đáng kể số lần truy vấn đến DNS resolver bên ngoài. Khi cấu hình Unbound hoặc systemd-resolved, hãy bật tính năng prefetch để cache được tự động làm mới trước khi hết hạn.
- prefetch: yes: tự động làm mới cache trước khi hết TTL
- serve-expired: yes: phục vụ từ cache khi DNS server không phản hồi
- negative-cache: yes: cache cả kết quả "không tìm thấy" để tránh query lặp lại
- cache-max-size: thiết lập kích thước cache tối đa (đề xuất 256MB cho server, 64MB cho desktop)
Bảo mật DNS: giảm thiểm rủi ro spoofing và poisoning
Bên cạnh tối ưu hiệu suất, bảo mật DNS cũng cực kỳ quan trọng để ngăn chặn các cuộc tấn công như DNS spoofing, cache poisoning và man-in-the-middle. Để tăng cường độ tin cậy của hệ thống DNS, bạn nên triển khai các biện pháp sau:
- DNSSEC: Ký số bản ghi DNS để xác thực nguồn gốc và tính toàn vẹn của phản hồi. Cấu hình DNSSEC trên Unbound bằng cách bật
auto-trust-anchor-file: "/var/lib/unbound/root.key"vàval-log-level: 2để ghi log xác thực. - Response Rate Limiting (RFL): Giới hạn tốc độ phản hồi từ nameserver để ngăn chặn amplification attacks. Thêm
rate-limit:vào cấu hình Unbound. - Access Control: Giới hạn truy cập vào DNS server chỉ cho các subnet tin cậy sử dụng
access-control:trong Unbound.
Với Cloudflare DNS (1.1.1.1), DNSSEC đã được bật sẵn, vì vậy khi bạn forward đến Cloudflare qua DoH, bạn tự động hưởng lợi từ DNSSEC mà không cần cấu hình thêm.
Kết luận: DNS resolver tối ưu cho trải nghiệm mạng nhanh hơn
Việc tối ưu DNS resolver với DoH và Unbound không chỉ giúp bạn truy cập web nhanh hơn mà còn bảo vệ quyền riêng tư trên internet. Với cấu hình đúng, thời gian giải mã tên miền có thể giảm xuống còn vài mili giây. Đối với người dùng cá nhân, systemd-resolved với DoH là đủ tốt. Đối với máy chủ hoặc hệ thống mạng quy mô lớn, Unbound kết hợp DNS-over-TLS cung cấp kiểm soát và hiệu suất tối ưu.
Tham khảo: DNS Privacy Project, Unbound Documentation.
