Cách xóa DNS cache trên Linux đơn giản và hiệu quả

Tóm tắt nội dung

 

  • Hiểu DNS cache là gì và vì sao cần xóa nó khi gặp lỗi mạng.

 

  • Xác định chương trình đang xử lý DNS trên hệ thống Linux của bạn.

 

  • Các cách xóa DNS cache phổ biến như dùng resolvectl, gửi tín hiệu USR2 hoặc khởi động lại dịch vụ DNS.

 

  • Xóa DNS cache trên Chrome, trong trường hợp trình duyệt gây ra lỗi truy cập.

 

  • Cách xác nhận việc xóa cache đã thành công, đảm bảo mọi thứ hoạt động lại bình thường.

 

DNS Cache trên Linux là gì?

 

Khi bạn truy cập một trang web, Linux sẽ lưu tạm địa chỉ IP tương ứng với tên miền đó trong bộ nhớ gọi là DNS cache. Điều này giúp tăng tốc độ tải trang lần sau. Nhưng nếu địa chỉ IP của trang web thay đổi hoặc có sự cố DNS, hệ thống có thể dùng nhầm thông tin cũ, dẫn đến lỗi truy cập.

 

Để xử lý, bạn nên xóa (flush) DNS cache, giúp hệ thống bắt buộc phải hỏi lại thông tin mới từ DNS server và hoạt động ổn định hơn.

 

Kiểm tra hệ thống đang dùng gì để xử lý DNS

 

Trước khi xóa cache, bạn nên xác định xem hệ thống đang dùng công cụ nào để phân giải DNS – ví dụ systemd-resolved, dnsmasq, nscd...

 

Dùng lệnh sau để kiểm tra tiến trình đang chiếm cổng 53 (cổng mặc định của DNS):


 
sudo lsof -i :53 -S
 

Nếu bạn thấy xuất hiện dòng chứa systemd-resolved, thì bạn có thể áp dụng các cách xóa cache phù hợp với systemd.

 

Cách 1: Dùng resolvectl (cho hệ thống sử dụng systemd)

 

Đây là cách chính thức và dễ nhất để xóa DNS cache trên các bản Linux hiện đại.

 

Bước 1: Chạy lệnh xóa cache


 
sudo resolvectl flush-caches
 

Bước 2: Kiểm tra dịch vụ DNS

 

Sau khi xóa xong, bạn có thể kiểm tra trạng thái hoạt động của systemd-resolved:

 

sudo systemctl status systemd-resolved
 

Cách 2: Gửi tín hiệu USR2 đến tiến trình DNS

 

Nếu bạn không muốn khởi động lại dịch vụ, có thể dùng tín hiệu USR2 để yêu cầu làm mới cache.


 
sudo killall -USR2 systemd-resolved
 

Sau đó, kiểm tra lại log để xác minh cache đã được làm mới:


 
sudo journalctl -r -u systemd-resolved
 

Cách 3: Khởi động lại dịch vụ systemd-resolved

 

Đây là cách “mạnh tay” hơn, đảm bảo cache được xóa hoàn toàn.

 

sudo systemctl restart systemd-resolved
 

Sau khi restart xong, hãy thử truy cập lại trang web gặp lỗi để kiểm tra kết quả.

 

Xóa DNS cache của Chrome (trình duyệt)

 

Ngay cả khi bạn đã xóa DNS cache trên hệ điều hành, Google Chrome vẫn có thể giữ cache riêng và gây ra lỗi. Hãy xóa luôn DNS cache trong Chrome như sau:

 

  1. Mở Chrome và truy cập:

    
    		
     
    chrome://net-internals/#dns
     
  2. Nhấn nút "Clear host cache" để xóa toàn bộ DNS cache của trình duyệt.

 

Kiểm tra cache DNS đã được xóa chưa

 

Cách 1: Kiểm tra trạng thái dịch vụ

 

sudo systemctl status systemd-resolved
 

Dịch vụ vẫn đang chạy ổn định sau khi xóa cache là dấu hiệu tốt.

 

Cách 2: Dùng nslookup để kiểm tra phân giải tên miền


 
nslookup google.com
 

Nếu kết quả trả về đúng và nhanh, nghĩa là DNS cache đã được làm mới thành công.

 

Một số lỗi thường gặp & cách xử lý

 

  • Lỗi "Command not found": Có thể hệ thống của bạn không dùng systemd. Kiểm tra lại hoặc dùng các công cụ như nscd, dnsmasq tùy bản phân phối.

 

  • Vẫn không phân giải được tên miền:

    • Kiểm tra DNS đang dùng:

      
      				
       
      cat /etc/resolv.conf
       
    • Khởi động lại trình quản lý mạng:

      
      				
       
      sudo systemctl restart NetworkManager
       
  • Dùng bản Linux cũ: Nếu không hỗ trợ resolvectl, bạn có thể cài nscd rồi chạy:

    
    		
     
    sudo service nscd restart

 

 HỖ TRỢ TRỰC TUYẾN