Làm ngay trong 5 phút: Cài đặt Unbound cơ bản
Thay vì dùng DNS “đi mượn”, hãy tự xây cái “giếng” DNS riêng cho hệ thống của bạn. Mình thực hiện hướng dẫn này trên Ubuntu/Debian. Nếu anh em dùng CentOS hay Fedora, chỉ cần thay apt bằng dnf là xong.
# Cập nhật hệ thống và cài đặt Unbound
sudo apt update
sudo apt install unbound -y
# Tải danh sách root hints (bản đồ để Unbound tìm đến các server gốc)
wget https://www.internic.net/domain/named.cache -O /etc/unbound/root.hints
# Tạo file cấu hình tối giản
sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf
Dán đoạn cấu hình dưới đây vào file. Đây là thiết lập cơ bản nhưng đủ dùng cho đa số nhu cầu:
server:
interface: 127.0.0.1
port: 53
do-ip4: yes
do-udp: yes
do-tcp: yes
root-hints: "/etc/unbound/root.hints"
access-control: 127.0.0.0/8 allow
auto-trust-anchor-file: "/var/lib/unbound/root.key"
Kích hoạt dịch vụ và tận hưởng thành quả:
sudo systemctl restart unbound
dig google.com @127.0.0.1
Nếu thấy dòng status: NOERROR xuất hiện, bạn đã chính thức làm chủ một DNS resolver nội bộ rồi đấy.
Tại sao phải tự dựng DNS trong khi Google/Cloudflare quá tiện?
Ai chẳng muốn nhanh gọn với 8.8.8.8 hay 1.1.1.1, nhưng cái giá phải trả chính là sự riêng tư. Mỗi khi bạn nhấn Enter một địa chỉ web, các ông lớn công nghệ đều biết bạn đang làm gì. Việc tự dựng Unbound giúp bạn cắt đuôi sự theo dõi này.
Nguy hiểm hơn là tình trạng DNS Hijacking. Nhiều ISP thường “vô tình” bẻ lái các yêu cầu DNS lỗi sang trang quảng cáo hoặc chặn trang web bằng IP giả. Unbound giải quyết triệt để vấn đề này. Nó thực hiện truy vấn đệ quy trực tiếp từ các Root Server, không qua bất kỳ trung gian nào.
Kinh nghiệm xương máu của mình: DNS đóng vai trò sống còn khi mạng chập chờn vào giờ cao điểm. Khi DNS phản hồi chậm, cảm giác duyệt web cực kỳ ức chế dù gói cước của bạn lên tới hàng trăm Mbps. Có Unbound với bộ nhớ đệm (cache) đặt ngay tại máy, độ trễ sẽ giảm từ 150ms xuống còn gần như 0ms cho các lần truy cập sau.
Cơ chế hoạt động: Đệ quy thay vì hỏi hộ
Recursive Resolver vs Forwarder
Đa số DNS chúng ta dùng là Forwarder – họ đi hỏi hộ rồi trả kết quả về. Unbound thì khác, nó là một tay đệ quy (Recursive) thực thụ. Quy trình diễn ra như một cuộc hội thoại:
- Bạn hỏi: “itfromzero.com ở đâu?”
- Unbound hỏi Root Server (“.”): “Ai giữ đuôi .com?”
- Root Server chỉ tới TLD Server (“.com”).
- Unbound hỏi tiếp TLD Server: “Địa chỉ itfromzero.com nằm ở đâu?”
- Cuối cùng, nó lấy IP từ Authoritative Server và đưa cho bạn.
Bảo mật thép với DNSSEC
DNSSEC giống như một lớp tem niêm phong cho dữ liệu DNS. Unbound mặc định kiểm tra chữ ký số này. Nếu một tên miền bị giả mạo IP (DNS Poisoning), Unbound sẽ phát hiện chữ ký không khớp và lập tức chặn kết quả sai, bảo vệ bạn khỏi các trang web lừa đảo.
Cấu hình nâng cao: Tối ưu cho server “khủng”
Nếu server của bạn có dư dả tài nguyên, đừng ngại tinh chỉnh để Unbound chạy bốc hơn. Hãy bổ sung các dòng sau vào file cấu hình:
server:
num-threads: 2 # Chỉnh bằng số nhân CPU của bạn
# Tối ưu phân mảnh bộ nhớ đệm
msg-cache-slabs: 4
rrset-cache-slabs: 4
infra-cache-slabs: 4
key-cache-slabs: 4
# Nới rộng bộ nhớ đệm cho phản hồi nhanh hơn
rrset-cache-size: 100m
msg-cache-size: 50m
# Chế độ ẩn danh
hide-identity: yes
hide-version: yes
prefetch: yes # Tự động làm mới cache trước khi hết hạn
Sức mạnh của DNS over TLS (DoT)
Muốn forward yêu cầu lên Cloudflare nhưng sợ ISP soi mói? DoT chính là giải pháp. Thêm đoạn này để mã hóa mọi truy vấn đi ra ngoài:
forward-zone:
name: "."
forward-addr: 1.1.1.1@853#cloudflare-dns.com
forward-addr: 1.0.0.1@853#cloudflare-dns.com
forward-ssl-upstream: yes
Vài lưu ý khi triển khai thực tế
Triển khai Unbound đôi khi gặp vài lỗi vặt khiến anh em mất cả buổi chiều. Dưới đây là những điểm cần lưu tâm:
- Xung đột cổng 53: Ubuntu thường có
systemd-resolvedchiếm cổng 53. Hãy tắt nó bằng lệnh:sudo systemctl disable --now systemd-resolved. - Quyền ghi root.key: Nếu log báo “permission denied”, hãy cấp quyền cho user
unboundvào file/var/lib/unbound/root.key. - Mở cổng tường lửa: Nếu dùng cho cả mạng LAN, đừng quên mở port 53 (cả UDP và TCP) trên Firewall.
Mẹo nhỏ: Hãy chạy lệnh dig hai lần. Lần thứ hai bạn sẽ thấy Query time chỉ còn 0 msec – minh chứng cho việc cache đang hoạt động hoàn hảo.
# Lần 1: Có thể mất 150-200 msec
dig itfromzero.com @127.0.0.1 | grep "Query time"
# Lần 2: 0 msec - Tốc độ ánh sáng là đây!
dig itfromzero.com @127.0.0.1 | grep "Query time"
Tự chủ DNS không chỉ là vấn đề tốc độ, đó là bước đầu tiên để bạn hiểu sâu hơn về hạ tầng Internet. Nếu vướng ở bước nào, anh em cứ để lại bình luận, mình sẽ cùng giải quyết.

