Trong quá trình quản trị hệ điều hành AlmaLinux (phiên bản thay thế hoàn hảo cho CentOS), việc thực hiện các lệnh nâng cấp hệ thống hoặc cài đặt gói tin như dnf update, dnf install hay yum update là thao tác diễn ra hàng ngày. Tuy nhiên, một trong những sự cố phổ biến và gây gián đoạn công việc nhiều nhất mà quản trị viên thường gặp phải là thông báo lỗi: Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Couldn't resolve host 'mirrors.almalinux.org'.
Sự cố này ngăn cản hệ thống kết nối tới máy chủ chứa kho lưu trữ phần mềm (repository), khiến bạn không thể cài đặt thêm bất kỳ công cụ nào hoặc vá các lỗ hổng bảo mật khẩn cấp. Trong bài viết chuyên sâu này, chúng ta sẽ cùng phân tích chi tiết nguyên nhân gốc rễ và từng bước khắc phục triệt để sự cố Couldn’t resolve host ‘mirrors.almalinux.org’ theo quy chuẩn kỹ thuật chuẩn chỉnh nhất.
1. Nguyên Nhân Gây Ra Lỗi “Couldn’t Resolve Host ‘mirrors.almalinux.org'”
Về bản chất, câu lệnh dnf hoặc yum cần truy cập vào tên miền mirrors.almalinux.org để lấy danh sách các máy chủ mirror gần nhất. Lỗi “Couldn’t resolve host” xuất hiện khi trình quản lý gói không thể chuyển đổi tên miền này thành địa chỉ IP tương ứng. Các nguyên nhân chính bao gồm:
- Cấu hình DNS Server bị thiếu hoặc sai: Tập tin
/etc/resolv.confkhông chứa địa chỉ DNS server hợp lệ, hoặc DNS server hiện tại đang gặp sự cố gián đoạn service. - Mất kết nối mạng vật lý/ảo: Card mạng (Network Interface) chưa được kích hoạt, cắm sai cổng, hoặc gateway chưa được cấu hình chính xác.
- Chính sách Tường lửa (Firewall) hoặc Security Group ngăn chặn: Cổng 53 (UDP/TCP dành cho DNS) hoặc cổng 80/443 (HTTP/HTTPS) outbound bị chặn bởi iptables, firewalld hoặc Security Group trên VPS/Cloud (AWS, Azure, DigitalOcean…).
- Lỗi cấu hình IPv6: Hệ thống ưu tiên truy vấn DNS qua IPv6 nhưng mạng của bạn chỉ hỗ trợ IPv4, dẫn đến tình trạng timeout khi phân giải tên miền.
- Xung đột Cấu hình Proxy: Máy chủ nằm sau một Proxy server nhưng các thông số biến môi trường proxy chưa được khai báo đúng cho DNF.
2. Bước 1: Kiểm Tra Kết Nối Mạng và Phân Giải Tên Miền (DNS)
Trước khi can thiệp vào các tệp cấu hình chuyên sâu, bạn cần chẩn đoán chính xác xem hệ thống đang mất kết nối mạng toàn bộ hay chỉ bị lỗi phân giải DNS.
Khảo sát kết nối qua địa chỉ IP thô
Hãy thử ping trực tiếp đến một IP Public uy tín của Google (8.8.8.8):
ping -c 4 8.8.8.8
- Nếu không ping được (100% packet loss): Máy chủ của bạn hoàn toàn mất kết nối mạng hoặc sai Gateway. Bạn cần kiểm tra lại hạ tầng mạng hoặc liên hệ nhà cung cấp VPS/Server.
- Nếu ping thành công: Kết nối Layer 3 hoạt động bình thường, nguyên nhân chắc chắn nằm ở dịch vụ DNS.
Kiểm tra khả năng phân giải tên miền
Thử truy vấn tên miền cụ thể bằng lệnh ping hoặc dig:
ping mirrors.almalinux.org
Nếu hệ thống trả về phản hồi ping: mirrors.almalinux.org: Name or service not known, chúng ta đã xác định đúng căn nguyên vấn đề.
3. Bước 2: Khắc Phục Cấu Hình DNS Server Trên AlmaLinux
Đây là giải pháp triệt để và hiệu quả nhất trong 90% trường hợp gặp phải lỗi này.
Phương pháp 1: Cấu hình trực tiếp tệp /etc/resolv.conf
Mở tệp tin /etc/resolv.conf bằng trình soạn thảo nano hoặc vi:
sudo vi /etc/resolv.conf
Thêm hoặc cập nhật các dòng địa chỉ DNS Public đáng tin cậy từ Google và Cloudflare vào đầu tệp:
nameserver 8.8.8.8
nameserver 1.1.1.1
nameserver 8.8.4.4
Lưu tệp tin lại và thử kiểm tra lại lệnh dnf check-update.
Phương pháp 2: Cấu hình chuẩn thông qua NetworkManager (nmcli)
Trong AlmaLinux, dịch vụ NetworkManager thường sẽ ghi đè tệp /etc/resolv.conf sau mỗi lần khởi động lại. Để cấu hình vĩnh viễn, bạn nên dùng công cụ nmcli.
- Liệt kê danh sách các card mạng đang hoạt động:
nmcli connection show(Ví dụ: Tên kết nối của bạn là
eth0hoặcens33) - Thêm DNS tĩnh vào card mạng:
sudo nmcli connection modify eth0 ipv4.dns "8.8.8.8 1.1.1.1" - Thiết lập chế độ tự động nhận IP nhưng ưu tiên DNS thủ công (nếu dùng DHCP):
sudo nmcli connection modify eth0 ipv4.ignore-auto-dns yes - Tải lại kết nối để áp dụng thay đổi:
sudo nmcli connection up eth0
4. Bước 3: Đảm Bảo Card Mạng Được Kích Hoạt Tự Động
Nhiều trường hợp sau khi cài đặt AlmaLinux, card mạng mặc định không được thiết lập khởi động cùng hệ thống (ONBOOT=no).
Kiểm tra tệp cấu hình giao diện mạng tại đường dẫn /etc/sysconfig/network-scripts/ifcfg-eth0 (thay eth0 bằng tên card mạng của bạn):
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
Đảm bảo các thông số sau được thiết lập đúng:
BOOTPROTO=dhcp (hoặc static nếu dùng IP tĩnh)
ONBOOT=yes
Khởi động lại dịch vụ NetworkManager:
sudo systemctl restart NetworkManager
5. Bước 4: Xử Lý Vấn Đề Khác: IPv6, Firewall Và Proxy
Tắt IPv6 tạm thời nếu mạng không hỗ trợ
Khi DNF cố gắng kết nối qua giao thức IPv6 mà hạ tầng nhà mạng không hỗ trợ, truy vấn sẽ bị treo cho đến khi timeout. Bạn có thể yêu cầu DNF chỉ sử dụng IPv4 bằng cách chỉnh sửa tệp /etc/dnf/dnf.conf:
sudo vi /etc/dnf/dnf.conf
Thêm dòng sau vào cuối tệp:
ip_resolve=4
Kiểm tra cấu hình Proxy
Nếu bạn làm việc trong môi trường doanh nghiệp có Firewall/Proxy, hãy khai báo thông tin Proxy cho DNF trong tệp /etc/dnf/dnf.conf:
proxy=http://your-proxy-server:port
proxy_username=your_username
proxy_password=your_password
Kiểm tra Rules Tường Lửa Outbound
Đảm bảo tường lửa không chặn các truy vấn đi ra ngoài port 53. Bạn có thể kiểm tra nhanh bằng cách tạm dừng firewalld để test:
sudo systemctl stop firewalld
Nếu sau khi tắt firewalld mà lệnh dnf chạy bình thường, bạn cần điều chỉnh lại rules cho phép traffic UDP/TCP port 53 và HTTP/HTTPS đi ra.
6. Bước 5: Làm Sạch Cache và Cập Nhật Tệp Repo của AlmaLinux
Sau khi đã giải quyết xong sự cố kết nối mạng và DNS, hãy tiến hành làm sạch bộ nhớ đệm DNF bị hỏng hoặc lưu thông tin phân giải cũ.
- Xóa toàn bộ cache DNF:
sudo dnf clean all - Tạo lại bộ nhớ đệm metadata mới:
sudo dnf makecache - Thực hiện cập nhật hệ thống:
sudo dnf update -y
Mẹo bổ sung: Trong trường hợp máy chủ mirror chính
mirrors.almalinux.orgtạm thời gặp sự cố từ phía AlmaLinux infrastructure (rất hiếm khi xảy ra), bạn có thể chuyển đổi từ việc dùngmirrorlistsang sử dụng trực tiếpbaseurltrong các tệp repo tại/etc/yum.repos.d/AlmaLinux-*.repo.
Những Lưu Ý Quan Trọng Để Tránh Lỗi Phân Giải Tên Miền Trong Tương Lai
- Sử dụng tối thiểu 2 DNS Server: Luôn khai báo ít nhất một DNS Server chính (Primary) và một DNS Server dự phòng (Secondary). Ví dụ:
8.8.8.8và1.1.1.1. - Cấu hình DNS nhất quán qua NetworkManager: Tránh sửa trực tiếp tệp
/etc/resolv.confnếu hệ thống của bạn dùng NetworkManager hoặc DHCP, vì tệp này sẽ bị ghi đè khi reboot. - Theo dõi uptime của hạ tầng mạng: Định kỳ kiểm tra các thông số gateway, routing table bằng lệnh
ip routehoặcnetstat -rn.
Tổng Kết
Lỗi Couldn’t resolve host ‘mirrors.almalinux.org’ về bản chất là một bài kiểm tra tính sẵn sàng của hệ thống mạng và dịch vụ DNS trên máy chủ AlmaLinux của bạn. Bằng cách thực hiện lần lượt các bước kiểm tra từ cơ bản (ping IP) đến nâng cao (cấu hình lại DNS thông qua NetworkManager, tối ưu file configuration DNF), bạn hoàn toàn có thể chủ động khắc phục sự cố này chỉ trong vài phút.
Các Câu Hỏi Thường Gặp (FAQs)
1. Tại sao tôi đã chỉnh tệp /etc/resolv.conf nhưng sau khi reboot máy chủ lại bị mất cấu hình?
Do dịch vụ NetworkManager hoặc DHCP Client mặc định trên AlmaLinux sẽ tự động ghi đè tệp /etc/resolv.conf mỗi khi giao diện mạng được khởi tạo lại. Để khắc phục, bạn cần cấu hình DNS thông qua lệnh nmcli hoặc thêm dòng PEERDNS=no vào tệp cấu hình card mạng /etc/sysconfig/network-scripts/ifcfg-<interface>.
2. Lỗi này có phải do máy chủ của AlmaLinux bị ngắt kết nối (down) không?
Khả năng này cực kỳ thấp. Hạ tầng mirror của AlmaLinux được phân bổ toàn cầu trên hệ thống CDN chịu tải cao. 99% nguyên nhân đến từ phía kết nối mạng, cấu hình DNS hoặc Firewall nội bộ trên máy chủ của bạn.
3. Làm sao để biết cổng 53 (DNS) trên máy chủ của tôi có bị nhà cung cấp VPS khóa hay không?
Bạn có thể sử dụng công cụ nc (netcat) hoặc telnet để kiểm tra khả năng kết nối cổng 53 UDP/TCP tới DNS Server bằng lệnh: nc -zv -u 8.8.8.8 53. Nếu kết quả trả về Connection refused hoặc Timeout, hãy liên hệ nhà cung cấp dịch vụ cloud/VPS của bạn để mở port outbound 53.
4. Việc thêm ip_resolve=4 vào dnf.conf có ảnh hưởng tiêu cực gì đến hệ thống không?
Không. Cấu hình này chỉ đơn giản yêu cầu trình quản lý gói DNF bỏ qua việc phân giải IPv6 và chỉ sử dụng IPv4 cho các kết nối tải gói tin. Nếu hệ thống mạng của bạn chưa triển khai toàn diện IPv6, đây còn là giải pháp giúp tăng tốc độ tải metadata của DNF.