Thông báo lỗi
Bạn đang cố gắng chạy một bản cập nhật nhanh hoặc kiểm tra kết nối của mình, nhưng Linux chặn đứng bạn lại. Bạn nhập sudo apt update hoặc ping google.com, và thay vì một luồng dữ liệu, bạn nhận phải thông báo lỗi khó chịu này:
ping: google.com: Temporary failure in name resolution
Về cơ bản, hệ thống của bạn đã mất đi "danh bạ" của nó. Nó biết cách để truy cập internet, nhưng nó không thể dịch các tên miền dễ đọc đối với con người như google.com thành các địa chỉ IP mà máy tính có thể đọc được để định tuyến lưu lượng truy cập. Nếu bạn không thể phân giải tên miền, bạn không thể kết nối.
Các nguyên nhân phổ biến
Phần lớn thời gian, vấn đề nằm ở một trong ba nơi sau:
- Tệp
/etc/resolv.confbị trống, bị thiếu hoặc bị cấu hình sai. - Dịch vụ
systemd-resolvedđã bị treo hoặc không khởi động được. - Tường lửa nội bộ của bạn (như UFW) đang âm thầm chặn lưu lượng DNS trên cổng UDP 53.
Bước 1: Bắt đầu bằng việc kiểm tra thực tế kết nối
Trước khi đi sâu vào các tệp cấu hình phức tạp, hãy xác minh rằng mạng vật lý hoặc mạng ảo của bạn thực sự đang hoạt động. Hãy thử ping trực tiếp đến một địa chỉ IP công cộng. Tôi luôn sử dụng 8.8.8.8 của Google vì nó đáng tin cậy và dễ nhớ:
ping -c 4 8.8.8.8
Một kết nối thành công—thường trả về phản hồi dưới 30ms trên một đường truyền cáp quang ổn định—nghĩa là phần cứng và gateway của bạn vẫn ổn. Vấn đề hoàn toàn nằm ở DNS. Nếu lệnh ping này thất bại với thông báo "Network is unreachable", bạn có một vấn đề sâu hơn về định tuyến hoặc phần cứng cần giải quyết trước.
Bước 2: Kiểm tra /etc/resolv.conf
Theo truyền thống, Linux nhìn vào /etc/resolv.conf để tìm các máy chủ DNS của nó. Trên các hệ thống hiện đại như Ubuntu 22.04 hoặc 24.04, tệp này thường là một liên kết biểu tượng (symbolic link) được quản lý bởi một dịch vụ chạy ngầm. Hãy bắt đầu bằng cách kiểm tra nội dung hiện tại:
cat /etc/resolv.conf
Nếu bạn không thấy dòng nameserver, bạn đã tìm ra nguyên nhân. Bạn có thể tạm thời chèn một máy chủ DNS công cộng để xem liệu nó có khôi phục được quyền truy cập hay không:
sudo nano /etc/resolv.conf
Thêm các dòng này vào tệp:
nameserver 8.8.8.8
nameserver 1.1.1.1
Kiểm tra lại lệnh ping của bạn. Nếu nó hoạt động, bạn đã xác định được vấn đề. Tuy nhiên, hãy lưu ý rằng nhiều bản phân phối sẽ tự động ghi đè tệp này khi khởi động lại máy hoặc khởi động lại mạng. Để bản sửa lỗi có hiệu lực vĩnh viễn, bạn phải xử lý dịch vụ đang quản lý nó.
Bước 3: Sửa chữa systemd-resolved
Hầu hết các bản phân phối hiện đại sử dụng systemd-resolved để xử lý việc phân giải tên miền. Nếu dịch vụ này bị đình trệ, DNS của bạn cũng sẽ ngừng hoạt động theo. Kiểm tra trạng thái hoạt động của nó bằng lệnh này:
sudo systemctl status systemd-resolved
Nó đang ở trạng thái không hoạt động (inactive)? Hãy khởi chạy nó và đảm bảo nó tự động bắt đầu mỗi khi bạn khởi động máy:
sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved
Đôi khi liên kết giữa cấu hình hệ thống và tệp thực thi bị hỏng. Bạn có thể buộc đặt lại kết nối này bằng cách tạo lại liên kết biểu tượng:
sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Bước 4: Cập nhật Netplan (Dành cho môi trường máy chủ)
Trên Ubuntu Server, các cài đặt DNS thường nằm trong các tệp cấu hình Netplan. Hãy tìm trong thư mục /etc/netplan/ các tệp YAML, thường có tên là 01-netcfg.yaml hoặc 50-cloud-init.yaml.
ls /etc/netplan/
Mở tệp liên quan và đảm bảo khối nameservers được định nghĩa chính xác dưới giao diện mạng của bạn:
network:
version: 2
ethernets:
eth0:
dhcp4: true
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
Áp dụng các cài đặt mới ngay lập tức để xem chúng có hiệu lực hay không:
sudo netplan apply
Xác minh: Xác nhận việc khắc phục thành công
Đừng chỉ giả định rằng nó đã được sửa vì một trang web đã tải được. Hãy sử dụng dig để xác nhận rằng việc phân giải diễn ra nhanh chóng—lý tưởng là dưới 50ms cho các truy vấn đã lưu trong bộ nhớ đệm—và đáng tin cậy:
dig google.com
Kiểm tra phần "ANSWER SECTION" trong kết quả đầu ra. Nếu bạn thấy danh sách địa chỉ IP, bạn đã trực tuyến trở lại. Nếu thiếu lệnh dig, bạn có thể cài đặt nó bằng gói dnsutils sau khi bản sửa lỗi tạm thời ở Bước 2 được kích hoạt.
Lời khuyên chuyên nghiệp để phòng ngừa
Khi cấu hình IP tĩnh cho các máy chủ mới, rất dễ xảy ra lỗi đánh máy trong gateway hoặc subnet mask. Một con số sai có thể khiến hệ thống của bạn không thể kết nối với nhà cung cấp DNS ngay cả khi các tệp cấu hình của bạn trông hoàn hảo.
Tôi thấy việc mở một công cụ như Subnet Calculator từ ToolCraft trong quá trình triển khai là rất hữu ích. Nó giúp tôi kiểm tra kỹ các dải CIDR và địa chỉ broadcast chỉ trong vài giây, đảm bảo rằng một lỗi định tuyến đơn giản không bị nhầm lẫn thành lỗi DNS. Công cụ này dựa trên trình duyệt và riêng tư, hoàn hảo cho việc thiết lập môi trường sản phẩm.
Kiểm tra cuối cùng: Tường lửa
Nếu cấu hình của bạn hoàn hảo nhưng việc phân giải vẫn thất bại, tường lửa có thể đang chặn các gói tin. DNS thường sử dụng cổng UDP 53. Nếu bạn sử dụng ufw, hãy kiểm tra giả thuyết này bằng cách vô hiệu hóa nó trong 10 giây:
sudo ufw disable
Nếu lỗi biến mất, chỉ cần thêm một quy tắc để cho phép lưu lượng DNS đi ra ngoài và sau đó kích hoạt lại tường lửa: sudo ufw allow out 53/udp.

