Tình huống
Bạn mở Chrome, nhập URL và nhận được thông báo:
This site can't be reached.
example.com's server IP address could not be found.
DNS_PROBE_FINISHED_NXDOMAIN
Tên miền không phân giải được. Có bốn nguyên nhân thường gặp: cache DNS cũ, DNS server bị lỗi, tên miền thực sự không tồn tại, hoặc một entry sai trong /etc/hosts đang ghi đè. Hãy cùng xác định nguyên nhân.
Phân tích nhanh
NXDOMAIN là viết tắt của Non-Existent Domain — DNS resolver trả về phản hồi "tên miền này không tồn tại". Trước tiên, hãy xác minh vấn đề thực sự nằm ở phía bạn, không phải ở trang web:
# Linux / macOS
nslookup example.com 8.8.8.8
# Windows (PowerShell)
Resolve-DnsName example.com -Server 8.8.8.8
Nếu lệnh trên phân giải được nhưng trình duyệt vẫn thất bại, vấn đề là ở local — cache DNS hoặc cấu hình trên máy bạn. Nếu nslookup cũng trả về NXDOMAIN, có thể tên miền đang bị sập hoặc DNS server của bạn đang trả về thông tin sai.
Kiểm tra nhanh: lấy điện thoại ra, chuyển sang mạng di động và thử URL đó. Tải được? Vấn đề nằm ở máy tính hoặc mạng nội bộ của bạn, không phải ở trang web.
Cách sửa 1 — Xóa cache DNS
Cache cũ là nguyên nhân phổ biến nhất. Bản ghi DNS có TTL (thời gian sống) — thường từ 300 đến 86400 giây. Nếu hệ thống đã cache phản hồi NXDOMAIN cũ, nó sẽ tiếp tục trả về kết quả sai đó cho đến khi TTL hết hạn hoặc bạn xóa cache thủ công.
Windows
ipconfig /flushdns
macOS
# macOS 12+ (Monterey trở lên)
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder
Linux (systemd-resolved)
sudo systemd-resolve --flush-caches
# Kiểm tra
sudo systemd-resolve --statistics | grep "Current Cache Size"
Cache DNS nội bộ của Chrome
Chrome duy trì cache DNS riêng, hoàn toàn tách biệt với hệ điều hành. Mở tab mới và truy cập:
chrome://net-internals/#dns
Nhấn Clear host cache. Sau đó vào chrome://net-internals/#sockets và nhấn Flush socket pools. Cả hai bước đều quan trọng — bỏ qua bước flush socket đôi khi khiến Chrome vẫn bị treo.
Cách sửa 2 — Đổi sang DNS server đáng tin cậy
DNS của nhà mạng có thể bị mất gói tin, trả về kết quả sai hoặc đơn giản là chậm. Chuyển sang Cloudflare (1.1.1.1) hoặc Google (8.8.8.8) chỉ mất vài phút và thường giải quyết vấn đề ngay lập tức.
Windows
# Tìm tên adapter trước
Get-NetAdapter
# Cài đặt DNS (thay "Wi-Fi" bằng tên adapter của bạn)
Set-DnsClientServerAddress -InterfaceAlias "Wi-Fi" -ServerAddresses ("1.1.1.1", "8.8.8.8")
macOS
System Settings → Network → kết nối của bạn → Details → DNS → thêm 1.1.1.1 và 8.8.8.8, sau đó xóa các entry DNS của nhà mạng cũ.
Linux (NetworkManager)
# Kiểm tra tên kết nối hiện tại
nmcli connection show
# Cài đặt DNS
nmcli connection modify "Your-Connection-Name" ipv4.dns "1.1.1.1 8.8.8.8"
nmcli connection up "Your-Connection-Name"
Linux (/etc/resolv.conf)
sudo nano /etc/resolv.conf
# Thêm hoặc thay thế các dòng nameserver:
nameserver 1.1.1.1
nameserver 8.8.8.8
Trên các hệ thống chạy systemd-resolved, resolv.conf là symlink — chỉnh sửa trực tiếp sẽ không được lưu lại. Hãy chỉnh sửa /etc/systemd/resolved.conf thay vào đó, rồi chạy sudo systemctl restart systemd-resolved.
Cách sửa 3 — Kiểm tra file Hosts
File hosts ghi đè DNS hoàn toàn. Một entry sai ở đây có nghĩa là không có cách nào xóa cache DNS để giải quyết được. Máy tính dùng cho phát triển đặc biệt dễ gặp vấn đề này — các dự án Docker, công cụ như Laravel Valet và cấu hình SSL local đều có xu hướng thêm entry vào file này.
Windows
notepad C:\Windows\System32\drivers\etc\hosts
macOS / Linux
cat /etc/hosts
Tìm bất kỳ dòng nào có tên miền bạn đang cố truy cập. Các entry như sau sẽ chặn nó:
0.0.0.0 example.com
127.0.0.1 example.com
Comment out dòng gây lỗi bằng cách thêm # vào đầu dòng, lưu file, rồi xóa cache DNS lại.
Cách sửa 4 — Gia hạn DHCP Lease
Router của bạn cấp địa chỉ DNS server thông qua DHCP. Nếu lease đó hết hạn hoặc router đẩy địa chỉ sai, hệ thống của bạn sẽ truy vấn một DNS server không hoạt động.
Windows
ipconfig /release
ipconfig /renew
macOS / Linux
# Tắt và bật lại giao diện mạng
sudo ifconfig en0 down && sudo ifconfig en0 up
# Hoặc qua NetworkManager
nmcli networking off && nmcli networking on
Cách sửa 5 — Kiểm tra VPN hoặc Proxy
VPN client đẩy DNS server riêng của chúng. Khi VPN kết nối nửa vời hoặc bị lỗi, các truy vấn DNS thất bại im lặng — không có lỗi, chỉ NXDOMAIN cho mọi thứ. Ngắt kết nối VPN, thử URL, rồi kết nối lại. Hoạt động được khi không có VPN? Vấn đề nằm ở cấu hình DNS của VPN, không phải hệ thống của bạn.
Với vấn đề proxy: trong Chrome, vào Settings → System → Open your computer's proxy settings. Trên Windows, thao tác này sẽ dẫn đến Internet Properties → Connections → LAN Settings. Đảm bảo không có gì được cấu hình ở đó mà không nên có — một entry proxy còn sót lại từ thiết lập công việc trước đây là nguyên nhân khá phổ biến nhưng ít ai ngờ tới.
Kiểm tra lại
Trước khi kiểm tra trên trình duyệt, hãy xác nhận rằng phân giải DNS thực sự đang hoạt động ở cấp hệ thống:
# Xác nhận tên miền phân giải được
nslookup example.com
# Hoặc dùng dig (Linux/macOS)
dig example.com +short
# Theo dõi toàn bộ quá trình phân giải DNS
dig example.com +trace
Bạn sẽ thấy địa chỉ IP được trả về. Nếu tra cứu DNS thành công nhưng trình duyệt vẫn hiển thị NXDOMAIN, nhấn Ctrl+Shift+R (hoặc Cmd+Shift+R trên Mac) để hard-refresh và bỏ qua cache trình duyệt.
Nếu không có cách nào ở trên hiệu quả
Lúc này, bản thân tên miền có thể không tồn tại hoặc đã hết hạn. Kiểm tra xem nó có bản ghi DNS hợp lệ không:
# Kiểm tra xem tên miền có bản ghi NS không
dig NS example.com @8.8.8.8
# Kiểm tra WHOIS để xác nhận đăng ký
whois example.com
Không có bản ghi NS và WHOIS cho thấy chưa đăng ký hoặc đã hết hạn? Đó không phải lỗi của bạn — trang web đơn giản là đã biến mất.
Phòng ngừa
Cài đặt 1.1.1.1 và 8.8.8.8 ở cấp router thay vì từng máy riêng lẻ. Mọi thiết bị trên mạng của bạn sẽ được hưởng lợi tự động, và bạn sẽ không phải lặp lại cách sửa này mỗi lần có thiết bị mới tham gia mạng.
Nếu bạn đang làm việc với IP tĩnh, subnet tùy chỉnh hoặc cấu hình DNS nội bộ, Subnet Calculator trên ToolCraft rất hữu ích để xác minh dải CIDR và xác nhận địa chỉ IP DNS server của bạn thực sự nằm trong subnet đúng — tôi đã từng phát hiện cấu hình sai theo cách này.

