Tại sao bạn nên quan tâm đến DNS-over-TLS?
Mình dùng Fedora làm máy làm việc chính đã hơn 2 năm. Distro này rất tuyệt về tốc độ cập nhật package, nhưng có một lỗ hổng bảo mật mà nhiều người thường ngó lơ: DNS. Bình thường, khi bạn gõ google.com, máy tính sẽ hỏi DNS server để lấy địa chỉ IP. Oái oăm là “cuộc hội thoại” này thường diễn ra ở dạng văn bản thuần túy (clear text).
Hãy tưởng tượng nó giống như việc bạn gửi một tấm bưu thiếp qua bưu điện. Bất kỳ ai trong chuỗi vận chuyển — từ nhà cung cấp mạng (ISP), chủ quán cà phê Wi-Fi, đến các hacker — đều biết bạn đang truy cập trang web nào. Thậm chí, họ có thể sửa đổi kết quả để lái bạn sang một trang web lừa đảo chỉ trong tích tắc.
DNS-over-TLS (DoT) sinh ra để chấm dứt tình trạng này. Nó bỏ tấm bưu thiếp đó vào một chiếc phong bì mã hóa TLS (tương tự cách HTTPS bảo vệ web). Trên Fedora, chúng ta có sẵn systemd-resolved để làm việc này mà không cần cài thêm app bên thứ ba.
Bước 1: Kiểm tra “sức khỏe” systemd-resolved
Hầu hết các bản Fedora Workstation hiện đại đều bật systemd-resolved theo mặc định. Tuy nhiên, cẩn thận vẫn hơn. Hãy kiểm tra trạng thái dịch vụ trước khi bắt tay vào cấu hình.
Gõ lệnh sau vào terminal:
systemctl status systemd-resolved
Nếu thấy dòng active (running) màu xanh là ổn. Nếu dịch vụ đang tắt, hãy đánh thức nó bằng lệnh:
sudo systemctl enable --now systemd-resolved
Tiếp theo, hãy xác nhận file /etc/resolv.conf đã trỏ đúng về systemd-resolved chưa. Fedora dùng một liên kết mềm (symlink) để quản lý việc này:
ls -l /etc/resolv.conf
Kết quả chuẩn phải trỏ về ../run/systemd/resolve/stub-resolv.conf. Nếu thấy sai đường dẫn, bạn hãy chạy lệnh này để tạo lại:
sudo ln -sf ../run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Bước 2: Cấu hình mã hóa DNS
Đến phần “ăn tiền” nhất đây. Chúng ta sẽ ép hệ thống sử dụng các server DNS hỗ trợ TLS và kích hoạt tính năng mã hóa toàn diện.
Mở file cấu hình bằng nano (hoặc vi nếu bạn là fan cứng):
sudo nano /etc/systemd/resolved.conf
Tìm phần [Resolve] và sửa lại như sau (nhớ bỏ dấu # ở đầu dòng):
[Resolve]
DNS=1.1.1.1#cloudflare-dns.com 9.9.9.9#dns.quad9.net
DNSOverTLS=yes
DNSSEC=yes
Domains=~.
Giải mã các thông số:
- DNS: Mình dùng Cloudflare (1.1.1.1) và Quad9 (9.9.9.9). Cấu trúc
IP#hostnamegiúp TLS xác thực chứng chỉ server, tránh bị giả mạo. - DNSOverTLS=yes: Bắt buộc mọi truy vấn phải mã hóa. Nếu đặt là
opportunistic, hệ thống sẽ tự động hạ cấp xuống clear text nếu server không hỗ trợ TLS (kém an toàn hơn). - DNSSEC=yes: Kiểm tra chữ ký số để đảm bảo dữ liệu DNS không bị chỉnh sửa trên đường đi.
- Domains=~.: Dấu ngã và dấu chấm này yêu cầu dùng các server trên cho mọi tên miền (global).
Nhấn Ctrl + O, Enter để lưu và Ctrl + X để thoát.
Bước 3: Kích hoạt thay đổi
Để thiết lập mới có hiệu lực, bạn chỉ cần khởi động lại dịch vụ. Quá trình này mất chưa đến 1 giây và không làm rớt mạng của bạn.
sudo systemctl restart systemd-resolved
Nếu bạn dùng NetworkManager, đôi khi nó sẽ cố gắng đẩy DNS của nhà mạng vào. Tuy nhiên, cấu hình trực tiếp trong resolved.conf thường sẽ có quyền ưu tiên cao nhất.
Bước 4: Kiểm chứng kết quả
Cấu hình xong không có nghĩa là đã chạy. Hãy dùng các cách sau để chắc chắn bạn đã “ẩn mình” thành công.
Cách 1: Dùng lệnh resolvectl
Đây là cách nhanh nhất để soi trạng thái DNS nội bộ:
resolvectl status
Cuộn xuống giao diện mạng đang dùng (như wlp2s0). Nếu thấy dòng Protocols: +DefaultRoute +LLMNR -mDNS +DNSOverTLS DNSSEC=yes, bạn đã thành công.
Cách 2: Check qua web
Truy cập 1.1.1.1/help. Hãy nhìn vào mục Using DNS over TLS (DoT). Nếu nó hiện Yes, xin chúc mừng, ISP của bạn giờ chỉ thấy một đống dữ liệu mã hóa vô nghĩa.
Cách 3: Bắt gói tin (Dành cho dân hardcore)
DNS truyền thống chạy cổng 53, còn DoT chạy cổng 853. Bạn có thể kiểm tra xem máy có thực sự gửi dữ liệu qua cổng 853 không:
sudo tcpdump -i any port 853
Chạy lệnh trên rồi load một trang web bất kỳ. Nếu terminal hiện dữ liệu liên tục, nghĩa là mã hóa đang hoạt động hoàn hảo.
Kinh nghiệm thực tế khi dùng DoT
Sau một thời gian dài sử dụng DoT trên Fedora, mình có vài lưu ý nhỏ cho bạn:
- Vấn đề mạng công ty: Một số firewall văn phòng chặn cổng 853 để ép nhân viên dùng DNS nội bộ. Nếu thấy không vào được mạng, hãy tạm chuyển
DNSOverTLSsangopportunistic. - Độ trễ (Latency): DoT tốn thêm khoảng 100-200ms cho bước bắt tay (handshake) TLS ban đầu. Tuy nhiên, nhờ cơ chế giữ kết nối (keep-alive), bạn sẽ gần như không cảm thấy sự khác biệt khi lướt web hàng ngày.
- Xung đột VPN: Các app VPN thường ghi đè cấu hình DNS. Nếu dùng VPN, bạn nên kiểm tra xem app đó có tùy chọn DoT riêng hay không để tránh bị rò rỉ dữ liệu (DNS leak).
Chỉ với vài dòng lệnh, bạn đã nâng cấp lớp bảo mật cho chiếc máy Fedora của mình. Đây là bước thiết lập cơ bản nhưng cực kỳ giá trị để bảo vệ quyền riêng tư trong môi trường internet đầy rẫy rủi ro hiện nay.

