Bạn đã bao giờ gặp phải tình trạng không thể truy cập một trang web quen thuộc, mặc dù bạn biết chắc chắn nó vẫn đang hoạt động? Hoặc có thể một trang web vừa thay đổi giao diện nhưng máy tính của bạn vẫn hiển thị phiên bản cũ? Thủ phạm đằng sau những sự cố khó chịu này rất có thể là DNS cache đã lỗi thời. DNS cache, hay bộ nhớ đệm DNS, là một cơ chế tuyệt vời giúp tăng tốc độ duyệt web bằng cách lưu lại địa chỉ IP của các trang web bạn đã truy cập. Tuy nhiên, khi thông tin này trở nên cũ hoặc không chính xác, nó sẽ gây ra lỗi kết nối. Đối với người dùng hệ điều hành Linux, việc xóa cache DNS là một kỹ năng khắc phục sự cố cơ bản nhưng vô cùng hiệu quả. Bài viết này sẽ hướng dẫn bạn chi tiết cách thực hiện điều đó, từ việc tìm hiểu tổng quan về DNS cache cho đến các câu lệnh cụ thể cho từng dịch vụ phổ biến như systemd-resolved, nscd và dnsmasq.
Tổng quan về cache DNS và tầm quan trọng của việc xóa cache DNS
Cache DNS là gì và hoạt động ra sao?
Hãy tưởng tượng mỗi khi bạn muốn gọi cho một người bạn, thay vì phải tra cứu số của họ trong một cuốn danh bạ khổng lồ mỗi lần, bạn chỉ cần tìm trong danh sách cuộc gọi gần đây. Cache DNS hoạt động theo một nguyên tắc tương tự. Về cơ bản, cache DNS là một bộ nhớ đệm tạm thời được lưu trữ trên máy tính của bạn, chứa thông tin về các lần phân giải tên miền (Domain Name System) gần đây.

Khi bạn nhập một địa chỉ web như azweb.vn vào trình duyệt, máy tính của bạn cần phải dịch tên miền này thành một địa chỉ IP (ví dụ: 103.221.220.88) để có thể kết nối đến máy chủ web. Lần đầu tiên, nó sẽ phải gửi một truy vấn đến máy chủ DNS công cộng để hỏi địa chỉ IP tương ứng. Để tiết kiệm thời gian cho những lần truy cập sau, hệ điều hành sẽ lưu lại cặp thông tin (tên miền và địa chỉ IP) này vào trong cache DNS. Nhờ vậy, ở lần truy cập tiếp theo, máy tính chỉ cần kiểm tra trong bộ nhớ cache cục bộ của nó, giúp quá trình kết nối diễn ra gần như tức thì và giảm đáng kể lưu lượng truy vấn mạng không cần thiết.
Tại sao cần phải xóa cache DNS?
Mặc dù rất hữu ích, cache DNS đôi khi lại là nguồn gốc của nhiều vấn đề. Thông tin được lưu trong cache có một “tuổi thọ” nhất định (gọi là TTL – Time To Live). Tuy nhiên, có những trường hợp thông tin này trở nên lỗi thời trước khi nó tự hết hạn.
Ví dụ, khi một trang web chuyển sang một máy chủ mới, địa chỉ IP của nó sẽ thay đổi. Nếu cache DNS trên máy tính của bạn vẫn còn lưu địa chỉ IP cũ, bạn sẽ không thể truy cập được trang web đó, hoặc tệ hơn là bị dẫn đến một trang không tồn tại. Đây là một trong những lý do phổ biến nhất khiến người dùng cần phải can thiệp và xóa cache DNS.
Một trường hợp khác là lỗi DNS poisoning (đầu độc DNS), khi kẻ tấn công có thể chèn các bản ghi DNS giả mạo vào cache của bạn, chuyển hướng bạn đến các trang web lừa đảo. Việc không xóa cache DNS lỗi thời có thể dẫn đến các hậu quả như: không thể truy cập website, lỗi kết nối, hiển thị nội dung web đã cũ, hoặc các vấn-đề-bảo-mật-tiềm-ẩn. Do đó, xóa cache DNS là một bước khắc phục sự cố quan trọng để đảm bảo bạn luôn nhận được dữ liệu mới và chính xác nhất từ internet.

Tổng quan về hệ điều hành Linux và các dịch vụ DNS phổ biến
Hệ điều hành Linux và vai trò của DNS trong Linux
Linux là một hệ điều hành mã nguồn mở mạnh mẽ và linh hoạt, được sử dụng rộng rãi trong các môi trường máy chủ, trung tâm dữ liệu và cả trên máy tính cá nhân của các nhà phát triển. Nhờ tính ổn định, bảo mật cao và khả năng tùy biến sâu, Linux đã trở thành nền tảng cho phần lớn cơ sở hạ tầng internet ngày nay. Từ những siêu máy tính mạnh nhất thế giới cho đến các thiết bị nhúng nhỏ gọn, Linux hiện diện ở khắp mọi nơi.
Trong môi trường mạng của Linux, DNS đóng một vai trò nền tảng không thể thiếu. Mọi hoạt động kết nối internet, từ việc duyệt web, gửi email, cập nhật phần mềm cho đến giao tiếp giữa các máy chủ trong một cụm (cluster), đều phụ thuộc vào khả năng phân giải tên miền thành địa chỉ IP một cách chính xác và nhanh chóng. Nếu không có DNS, người dùng sẽ phải nhớ các chuỗi số IP phức tạp thay vì các tên miền dễ nhớ. Do đó, việc quản lý và duy trì một hệ thống DNS khỏe mạnh là yếu-tố-sống-còn để đảm bảo hiệu suất và sự ổn định của hệ thống Linux.
Các dịch vụ DNS cache phổ biến trên Linux
Không giống như các hệ điều hành khác thường chỉ có một cơ chế cache DNS duy nhất, hệ sinh thái Linux cung cấp nhiều dịch vụ khác nhau để thực hiện nhiệm vụ này. Việc lựa chọn dịch vụ nào thường phụ thuộc vào bản phân phối Linux (distro) bạn đang sử dụng và mục đích cấu hình mạng của bạn. Dưới đây là ba dịch vụ phổ biến nhất:
- systemd-resolved: Đây là dịch vụ phân giải tên miền và cache DNS hiện đại, được tích hợp sẵn trong hầu hết các bản phân phối Linux phổ biến ngày nay như Ubuntu (từ phiên bản 16.10 trở đi), Debian 10, Fedora, và Arch Linux. Nó được quản lý bởi systemd, trình quản lý hệ thống và dịch vụ mặc định của nhiều distro, mang lại khả năng tích hợp chặt chẽ với hệ thống.
- nscd (Name Service Cache Daemon): Là một dịch vụ cache lâu đời và truyền thống hơn. nscd không chỉ cache các truy vấn DNS mà còn cache cả thông tin về người dùng và nhóm (users/groups). Mặc dù systemd-resolved đang dần thay thế nó ở nhiều nơi, nscd vẫn được sử dụng trong một số hệ thống cũ hoặc các cấu hình đặc thù.
- dnsmasq: Đây là một máy chủ DNS và DHCP nhẹ, thường được sử dụng trong các mạng nhỏ, router, hoặc các môi trường cần một giải pháp DNS tùy chỉnh linh hoạt. Ngoài việc chuyển tiếp các truy vấn DNS, dnsmasq còn có khả năng cache lại các kết quả để tăng tốc độ cho các lần truy vấn sau, giúp giảm tải cho máy chủ DNS chính.

Mỗi dịch vụ có cách hoạt động và quản lý riêng, do đó, cách xóa cache DNS cũng sẽ khác nhau tùy thuộc vào dịch vụ nào đang hoạt động trên hệ thống của bạn.
Hướng dẫn xóa cache DNS trên Linux theo từng dịch vụ
Để xóa cache DNS hiệu quả, trước hết bạn cần xác định hệ thống của mình đang sử dụng dịch vụ nào. Việc chạy sai lệnh không chỉ không có tác dụng mà đôi khi còn có thể gây ra lỗi không mong muốn. Dưới đây là hướng dẫn chi tiết cho từng dịch vụ phổ biến.
Sử dụng lệnh resolvectl để xóa cache DNS trên systemd-resolved
systemd-resolved là trình quản lý DNS mặc định trên các phiên bản Ubuntu, Debian, Fedora và nhiều bản phân phối hiện đại khác. Nếu bạn đang sử dụng một trong những hệ điều hành này, khả năng cao systemd-resolved đang quản lý cache DNS của bạn.
Đầu tiên, hãy kiểm tra trạng thái của dịch vụ để chắc chắn rằng nó đang hoạt động. Mở terminal và gõ lệnh sau: systemctl status systemd-resolved

Nếu bạn thấy dòng chữ active (running) trong kết quả trả về, điều đó có nghĩa là dịch vụ đang chạy.
Để xóa toàn bộ cache DNS do systemd-resolved quản lý, bạn chỉ cần sử dụng lệnh resolvectl với tùy chọn flush-caches. Lệnh này yêu cầu quyền quản trị, vì vậy hãy sử dụng sudo: sudo resolvectl flush-caches
Lệnh này sẽ không hiển thị bất kỳ thông báo thành công nào. Sự im lặng chính là dấu hiệu cho thấy mọi thứ đã diễn ra đúng cách. Để xác minh rằng cache đã được xóa, bạn có thể kiểm tra số liệu thống kê của cache trước và sau khi chạy lệnh: resolvectl statistics
Sau khi chạy lệnh xóa, bạn sẽ thấy các giá trị như “Current Cache Size” và “Cache Hits” giảm về 0 hoặc một con số rất nhỏ.
Khởi động lại dịch vụ nscd để xóa cache DNS
nscd (Name Service Cache Daemon) là một phương pháp cache cũ hơn nhưng vẫn còn được sử dụng trên một số hệ thống, đặc biệt là các phiên bản CentOS/RHEL cũ hoặc các hệ thống đã được cấu hình đặc biệt. nscd cache nhiều loại thông tin khác nhau, bao gồm cả các bản ghi DNS (hosts).
Cách đơn giản và hiệu quả nhất để xóa cache do nscd quản lý là khởi động lại dịch vụ. Khi dịch vụ được khởi động lại, toàn bộ bộ nhớ cache của nó sẽ bị xóa sạch.
Trước tiên, bạn có thể kiểm tra xem nscd có đang chạy trên hệ thống của mình hay không: systemctl status nscd
![]()
Nếu dịch vụ đang hoạt động, bạn sẽ thấy trạng thái active (running).
Để khởi động lại dịch vụ và xóa cache, hãy sử dụng một trong các lệnh sau, tùy thuộc vào hệ thống của bạn: sudo systemctl restart nscd Hoặc đối với các hệ thống cũ hơn không dùng systemd: sudo service nscd restart

Sau khi thực thi lệnh, dịch vụ sẽ được khởi động lại ngay lập tức và bộ nhớ cache DNS sẽ trống. Bạn có thể kiểm tra lại trạng thái của dịch vụ bằng lệnh systemctl status nscd để đảm bảo nó đã khởi động lại thành công và đang chạy ổn định.
Xóa cache DNS bằng khởi động lại dịch vụ dnsmasq
dnsmasq là một công cụ rất linh hoạt, thường được các nhà phát triển hoặc quản trị viên mạng sử dụng để thiết lập một máy chủ DNS/DHCP cục bộ. Nếu bạn đã tự cấu hình dnsmasq làm trình phân giải DNS cho máy hoặc mạng của mình, thì nó chính là nơi lưu trữ cache DNS.
Tương tự như nscd, cách đáng tin cậy nhất để xóa cache của dnsmasq là khởi động lại dịch vụ.
Hãy bắt đầu bằng việc kiểm tra trạng thái của dnsmasq: sudo systemctl status dnsmasq
Nếu dịch vụ đang chạy, bạn có thể tiến hành khởi động lại nó. Sử dụng lệnh sau: sudo systemctl restart dnsmasq Hoặc trên các hệ thống không có systemd: sudo service dnsmasq restart

Sau khi khởi động lại, dnsmasq sẽ bắt đầu với một bộ nhớ cache trống. Cần lưu ý rằng nếu bạn đang sử dụng dnsmasq cho nhiều mục đích (ví dụ: cấp phát DHCP), việc khởi động lại dịch vụ có thể gây gián đoạn tạm thời cho các thiết bị khác trong mạng. Tuy nhiên, quá trình này thường diễn ra rất nhanh và ít khi gây ra sự cố đáng kể. Hãy đảm bảo bạn đã lưu các thay đổi cấu hình trong file /etc/dnsmasq.conf trước khi khởi động lại nếu có.
Các vấn đề thường gặp và cách khắc phục (Troubleshooting)
DNS cache không được xóa mặc dù đã chạy lệnh
Một trong những tình huống gây bối rối nhất là khi bạn đã thực hiện đúng lệnh nhưng sự cố về DNS vẫn còn đó. Điều này có thể xảy ra do một vài nguyên nhân.
Đầu tiên, hãy chắc chắn rằng bạn đã sử dụng đúng lệnh cho đúng dịch vụ đang hoạt động trên hệ thống. Ví dụ, việc chạy resolvectl flush-caches sẽ không có tác dụng nếu máy của bạn đang dùng nscd để cache DNS. Hãy kiểm tra lại trạng thái của cả ba dịch vụ (systemd-resolved, nscd, dnsmasq) để xác định chính xác dịch vụ nào đang chạy.
Nguyên nhân thứ hai có thể là do quyền truy cập. Hầu hết các lệnh thay đổi cấu hình hệ thống trên Linux đều yêu cầu quyền quản trị viên (root). Nếu bạn quên sử dụng sudo ở đầu lệnh, lệnh sẽ không được thực thi hoặc báo lỗi. Hãy luôn đảm bảo bạn có sudo khi chạy các lệnh như resolvectl hay systemctl restart.
Cuối cùng, có thể có nhiều lớp cache khác nhau. Ngoài cache của hệ điều hành, trình duyệt web (như Chrome, Firefox) và thậm chí cả ứng dụng của bạn cũng có thể có bộ nhớ cache DNS riêng. Nếu đã xóa cache hệ thống mà vẫn gặp lỗi, hãy thử xóa cache trong trình duyệt của bạn (ví dụ: vào chrome://net-internals/#dns trên Chrome) hoặc khởi động lại ứng dụng đang gặp sự cố.
Mất kết nối mạng sau khi xóa cache DNS
Trong một số trường hợp hiếm hoi, người dùng có thể bị mất kết nối internet ngay sau khi xóa cache DNS. Tình huống này thường không phải do bản thân hành động xóa cache gây ra, mà nó phơi bày một vấn đề cấu hình đã tồn tại từ trước.
Khi bạn xóa cache, máy tính của bạn buộc phải thực hiện một truy vấn DNS mới đến máy chủ DNS đã được cấu hình (thường là từ nhà cung cấp dịch vụ internet hoặc DNS công cộng như 8.8.8.8). Nếu vì lý do nào đó mà máy chủ DNS này không thể truy cập được hoặc cấu hình DNS trong hệ thống của bạn bị sai (ví dụ: trong file /etc/resolv.conf), máy tính sẽ không thể phân giải bất kỳ tên miền nào và kết quả là bạn sẽ mất kết nối mạng.
Để khắc phục, hãy kiểm tra lại cấu hình mạng của bạn. Đảm bảo rằng bạn có địa chỉ máy chủ DNS hợp lệ. Bạn có thể thử đặt máy chủ DNS thành một địa chỉ công cộng đáng tin cậy như của Google (8.8.8.8 và 8.8.4.4) hoặc Cloudflare (1.1.1.1). Sau khi điều chỉnh cấu hình, hãy thử khởi động lại dịch vụ mạng của bạn: sudo systemctl restart NetworkManager (hoặc networking tùy distro).

Các phương pháp hay nhất (Best Practices)
Quản lý cache DNS không chỉ là việc biết các câu lệnh. Áp dụng các phương pháp tốt nhất sẽ giúp bạn tránh được các sự cố không đáng có và duy trì một hệ thống mạng ổn định, hiệu quả.
- Luôn sao lưu cấu hình trước khi thay đổi: Trước khi chỉnh sửa bất kỳ file cấu hình mạng nào hoặc thay đổi dịch vụ DNS, hãy tạo một bản sao lưu. Một lệnh
cp /etc/resolv.conf /etc/resolv.conf.bakđơn giản có thể cứu bạn khỏi nhiều giờ khắc phục sự cố sau này. - Chỉ xóa cache khi cần thiết: Xóa cache DNS là một công cụ khắc phục sự cố, không phải là một công việc bảo trì định kỳ. Chỉ nên thực hiện khi bạn nghi ngờ có sự thay đổi về bản ghi DNS (ví dụ: website vừa chuyển máy chủ) hoặc khi gặp lỗi phân giải tên miền rõ ràng.
- Tránh xóa cache quá thường xuyên: Việc xóa cache liên tục sẽ làm mất đi lợi ích về hiệu suất mà nó mang lại. Mỗi lần xóa, hệ thống lại phải thực hiện các truy vấn mới ra bên ngoài, làm tăng độ trễ và tiêu tốn tài nguyên hệ thống một cách không cần thiết.
- Kiểm tra trạng thái dịch vụ trước và sau khi thao tác: Luôn dùng lệnh
systemctl status <tên-dịch-vụ>để kiểm tra xem dịch vụ có đang chạy ổn định hay không, cả trước và sau khi bạn khởi động lại nó. Điều này giúp bạn nhanh chóng phát hiện nếu dịch vụ không thể khởi động lại thành công. - Sử dụng lệnh phù hợp với dịch vụ DNS đang dùng: Đây là quy tắc quan trọng nhất. Dành vài giây để xác định hệ thống của bạn đang chạy systemd-resolved, nscd, hay dnsmasq sẽ đảm bảo bạn sử dụng đúng công cụ cho công việc và giải quyết vấn đề một cách hiệu quả. Sử dụng các công cụ như
dighoặcnslookupđể kiểm tra kết quả phân giải tên miền trước và sau khi xóa cache cũng là một cách hay để xác minh thao tác đã thành công.

Kết luận
Việc quản lý và xóa cache DNS trên Linux là một kỹ năng thiết yếu đối với bất kỳ quản trị viên hệ thống hay người dùng nào muốn duy trì hiệu suất mạng ổn định và khắc phục sự cố kết nối một cách hiệu quả. Như chúng ta đã tìm hiểu, cache DNS giúp tăng tốc độ truy cập web nhưng cũng có thể trở thành nguyên nhân gây ra lỗi khi thông tin trở nên lỗi thời. Bài viết đã cung cấp một cái nhìn toàn diện, từ việc hiểu rõ bản chất của cache DNS cho đến hướng dẫn chi tiết cách xóa cache bằng các công cụ phổ biến như resolvectl cho systemd-resolved, và khởi động lại dịch vụ cho nscd và dnsmasq.
Bằng cách áp dụng đúng phương pháp cho đúng dịch vụ đang chạy trên hệ thống của mình, bạn có thể nhanh chóng giải quyết các vấn đề liên quan đến phân giải tên miền. Hãy ghi nhớ các phương pháp hay nhất như sao lưu cấu hình và chỉ xóa cache khi thực sự cần thiết để đảm bảo hệ thống luôn hoạt động tối ưu. AZWEB hy vọng rằng với những hướng dẫn này, bạn có thể tự tin hơn trong việc quản trị hệ thống Linux của mình. Đừng ngần ngại thực hành theo các bước đã nêu để xử lý sự cố DNS một cách chuyên nghiệp và hiệu quả. Hãy tiếp tục khám phá thêm các kỹ thuật quản trị mạng nâng cao khác để làm chủ hoàn toàn môi trường Linux.
