Lệnh host trong Linux là một tiện ích dòng lệnh dùng để truy vấn DNS, giúp bạn kiểm tra việc phân giải tên miền và tra cứu các bản ghi DNS một cách nhanh và đơn giản. Trong bài viết này, mình sẽ hướng dẫn chi tiết cách sử dụng lệnh host để kiểm tra hoạt động DNS, tìm địa chỉ IP của tên miền và tra cứu các bản ghi quan trọng khác.
Những điểm chính
- Khái niệm: Hiểu rõ định nghĩa và vai trò của lệnh host trong việc truy vấn DNS và kiểm tra phân giải tên miền.
- Các tùy chọn của lệnh: Nắm vững các tham số quan trọng như
-a,-t,-Wđể tùy chỉnh nội dung phản hồi theo nhu cầu tra cứu. - Lợi ích sử dụng: Biết cách tận dụng lệnh host để xác định sự cố mạng, xác minh cấu hình hệ thống và hỗ trợ xác thực bảo mật nhanh chóng.
- Cách cài đặt: Hướng dẫn chi tiết cách cài đặt gói công cụ chứa lệnh host trên các hệ điều hành Linux phổ biến như Ubuntu và CentOS.
- Hướng dẫn truy vấn: Thành thạo các thao tác từ truy vấn tên miền cơ bản, truy vấn ngược đến việc kiểm tra các bản ghi chuyên biệt như MX, NS, SOA.
- Xử lý lỗi phổ biến: Biết cách nhận diện nguyên nhân và khắc phục các lỗi thường gặp như “Host not found” hoặc kết quả trả về IP cũ.
- Những lưu ý quan trọng: Nắm được các quy tắc về bộ nhớ đệm, cú pháp và thứ tự ưu tiên máy chủ DNS để đảm bảo kết quả kiểm tra chính xác.
- Câu hỏi thường gặp: Giải đáp các câu hỏi thường gặp liên quan đến lệnh host Linux.
Lệnh host Linux là gì?
Host Linux là lệnh hỗ trợ tra cứu tên miền hoặc địa chỉ IP bằng cách gửi yêu cầu truy vấn đến máy chủ DNS, hoạt động bằng cách gọi các thư viện phân giải tên miền của hệ thống và trả về kết quả dưới định dạng dễ đọc. Bạn nên sử dụng lệnh host khi cần một công cụ nhanh chóng để kiểm tra xem một tên miền có đang phân giải chính xác hay không hoặc khi cần thực hiện các thao tác truy vấn ngược. Ngoài các truy vấn cơ bản, host hỗ trợ các truy vấn nâng cao bao gồm:
- NS (Name Server): Dùng để xác định máy chủ tên miền, chịu trách nhiệm quản lý và trả lời truy vấn DNS cho một domain cụ thể.
- SOA (Start of Authority): Cung cấp bản ghi SOA chứa thông tin về máy chủ DNS chính, email quản trị và các tham số quản lý vùng DNS của một domain.
- TXT (Text): Lưu trữ các chuỗi văn bản gắn với tên miền, thường dùng cho xác minh quyền sở hữu, cấu hình SPF, DKIM hoặc các thiết lập bảo mật email khác.
- MX (Mail Exchange): Chỉ ra máy chủ email chịu trách nhiệm tiếp nhận và xử lý thư gửi đến cho tên miền đó.

Các tuỳ chọn của lệnh host trên Linux
Để khai thác tối đa sức mạnh của host, bạn có thể sử dụng các tham số đi kèm nhằm để tùy chỉnh nội dung phản hồi theo nhu cầu:
| Tham số | Ý nghĩa và cách dùng |
-a (All) | Hiển thị tất cả các bản ghi DNS hiện có của tên miền. |
-t (Type) | Chỉ định loại bản ghi cụ thể bạn muốn tìm kiếm. |
-W (Wait) | Thiết lập thời gian chờ cho phản hồi từ máy chủ. Rất hữu ích khi mạng chậm hoặc máy chủ DNS phản hồi kém. |
Những lợi ích khi sử dụng lệnh host Linux
Dưới đây là các lợi ích chính của lệnh host:
- Tốc độ phản hồi nhanh chóng: Lệnh host cho phép tra cứu thông tin tên miền nhanh chóng ngay trên giao diện dòng lệnh mà không cần đến các công cụ web phức tạp.
- Xác định sự cố mạng chính xác: Sử dụng lệnh host giúp bạn xác định nhanh vấn đề nằm DNS hay do lỗi kết nối từ phía nhà cung cấp dịch vụ Internet.
- Xác minh cấu hình bản ghi hệ thống: Lệnh host hỗ trợ kiểm tra trực tiếp các bản ghi quan trọng như MX, NS để đảm bảo các dịch vụ trực tuyến hoạt động đúng hướng.
- Hỗ trợ xác thực bảo mật: Bạn có thể dễ dàng truy xuất các bản ghi TXT để kiểm tra cấu hình SPF, DKIM hoặc xác minh quyền sở hữu tên miền với các dịch vụ bên thứ ba.
- Linh hoạt trong tự động hóa: Kết quả của lệnh host trả về có định dạng rõ ràng, giúp bạn dễ dàng đưa vào các script để tự động hóa việc giám sát hệ thống.
- Kiểm tra tính cập nhật của DNS: Lệnh host cho phép truy vấn trực tiếp các máy chủ DNS khác nhau để kiểm tra xem thay đổi cấu hình tên miền đã được cập nhật toàn cầu hay chưa.
- Sử dụng đơn giản và phổ biến: Host không yêu cầu quyền quản trị cao và hầu như có sẵn trên mọi bản phân phối Linux, giúp việc kiểm tra trở nên thuận tiện ở bất cứ đâu.

Cách cài đặt lệnh host Linux
Lệnh host thuộc một gói phần mềm có sẵn trong hệ thống. Trên các bản Linux như RHEL, CentOS, Fedora, host nằm trong gói bind-utils, trên Debian và Ubuntu, host nằm trong gói dnsutils. Trong trường hợp hệ thống báo lỗi không tìm thấy lệnh, bạn có thể thực hiện cài đặt bằng các câu lệnh sau:
Trên Debian/Ubuntu:
sudo apt install dnsutilsTrên CentOS/RHEL:
sudo yum install bind-utilsHướng dẫn dùng lệnh host Linux để thực hiện các truy vấn
1. Truy vấn tên miền cơ bản
Để thực hiện tìm kiếm địa chỉ IP của một tên miền cụ thể, bạn hãy sử dụng cú pháp lệnh sau:
host <ten_mien>Ví dụ:
host vietnix.vn
Lệnh này sẽ truy vấn máy chủ DNS mặc định của hệ thống và hiển thị địa chỉ IP tương ứng. Kết quả trả về bao gồm tên miền, loại bản ghi (A) và địa chỉ IP.
2. Truy vấn ngược
Để thực hiện phân giải một địa chỉ IP thành tên miền, bạn hãy sử dụng lệnh dưới đây:
host <dia_chi_IP>Ví dụ:
host 8.8.8.8
Lệnh này giúp tìm tên miền gắn liền với địa chỉ IP đã cho. Đây là bước quan trọng khi bạn cần kiểm tra máy chủ email để tránh bị liệt vào danh sách thư rác.
3. Truy vấn một loại bản ghi DNS cụ thể
Tùy chọn -t trong câu lệnh sẽ cho phép bạn chỉ định loại bản ghi cần truy vấn như MX, NS hoặc SOA. Để tìm kiếm các loại bản ghi DNS chuyên biệt ngoài bản ghi A mặc định, bạn hãy thực hiện lệnh theo cấu trúc sau:
host -t <loai_ban_ghi> <ten_mien_can_tra_cuu>Ví dụ:
host -t MX vietnix.vn
Ví dụ khác:
Bạn thực hiện lệnh sau để truy vấn bản ghi NS:
host -t NS vietnix.vn
Bạn thực hiện lệnh sau để truy vấn bản ghi SOA:
host -t SOA vietnix.vn
4. Chỉ định máy chủ DNS để truy vấn
Để gửi truy vấn trực tiếp đến một máy chủ DNS cụ thể và bỏ qua cấu hình mặc định của hệ thống, bạn hãy sử dụng lệnh:
host <ten_mien_can_tra_cuu> <dia_chi_IP_cua_DNS_Server>Ví dụ:
host vietnix.vn 1.1.1.1
Bạn hãy thêm địa chỉ IP của máy chủ DNS muốn sử dụng vào sau tên miền để kiểm tra xem bản ghi mới đã được cập nhật trên một DNS Server cụ thể hay chưa.
5. Xem thông tin chi tiết
Để hiển thị đầy đủ các bước truy vấn và các thông số kỹ thuật phục vụ việc gỡ lỗi, bạn hãy sử dụng lệnh sau:
host -v <ten_mien_hoac_dia_chi_IP>Ví dụ:
host -v vietnix.vn
Trong đó, tùy chọn -v (verbose) sẽ cung cấp thông tin chi tiết hơn về toàn bộ quá trình truy vấn DNS của hệ thống.
Cách xử lý lỗi phổ biến khi chạy lệnh host Linux
| Tên lỗi | Nguyên nhân phổ biến | Giải pháp khắc phục |
|---|---|---|
| Host not found (NXDOMAIN) | Sai chính tả hoặc tên miền chưa được đăng ký/đã bị xóa. | 1. Kiểm tra kỹ ký tự tên miền. 2. Thử truy vấn qua DNS của Google: host [tên_miền] 8.8.8.8 |
| command not found | Công cụ host chưa được cài đặt. | Cài đặt bổ sung gói công cụ mạng tương ứng với bản phân phối Linux bạn đang dùng. |
| Kết quả sai/IP cũ | Máy chủ DNS nội bộ hoặc DNS của ISP đang lưu lại bản ghi cũ. | Ép hệ thống truy vấn trực tiếp từ các DNS trung gian uy tín để lấy kết quả mới nhất: host [tên_miền] 1.1.1.1 (Cloudflare). |
Theo kinh nghiệm của mình, lỗi mà nhiều người gặp nhất không phải “Host not found” hay “command not found” mà chính là trường hợp kết quả trả về IP cũ. Lý do là vì lỗi này không báo đỏ, không hiện cảnh báo gì cả, nên người dùng rất dễ tin rằng hệ thống đang hoạt động bình thường trong khi thực tế bản ghi DNS đã được thay đổi từ lâu.
Nhiều người mất gần nửa ngày để debug một sự cố website không trỏ đúng máy chủ mới, cuối cùng mới phát hiện ra nguyên nhân đơn giản chỉ là DNS cache của ISP chưa cập nhật. Do đó, mỗi khi thay đổi bản ghi DNS, mình luôn tạo thói quen truy vấn song song qua ít nhất 2–3 máy chủ DNS công cộng khác nhau như 8.8.8.8, 1.1.1.1 và 9.9.9.9 để đối chiếu kết quả trước khi kết luận.
Những lưu ý khi sử dụng lệnh host
Để sử dụng lệnh host hiệu quả, bạn cần lưu ý những điểm quan trọng sau:
- Phân biệt chữ hoa và chữ thường: Các tùy chọn trong dòng lệnh Linux yêu cầu đúng định dạng chữ hoa, chữ thường nên việc viết sai kiểu chữ có thể khiến tham số không hoạt động như mong muốn.
- Độ trễ do bộ nhớ đệm: Kết quả từ
hostcó thể không hiển thị những thay đổi mới nhất nếu máy chủ DNS bạn đang dùng chưa cập nhật cache. Bạn hãy thử trỏ trực tiếp đến DNS của Google (8.8.8.8) để lấy kết quả mới nhất. - Sự khác biệt giữa các bản phân phối: Mặc dù lệnh
hostrất phổ biến nhưng một số hệ thống tối giản có thể không được cài đặt sẵn và bạn cần cài góibind9-hosthoặcdnsutilsđể sử dụng. - Thứ tự ưu tiên của máy chủ DNS: Nếu bạn không chỉ định một máy chủ DNS cụ thể trong câu lệnh,
hostsẽ sử dụng danh sách máy chủ được cấu hình trong file/etc/resolv.conf. - Dấu chấm cuối tên miền: Trong một số trường hợp truy vấn chuyên sâu, việc thêm một dấu chấm vào sau tên miền sẽ giúp lệnh hiểu đây là tên miền tuyệt đối và tránh tìm kiếm bổ sung trong domain nội bộ.
- Kết quả trả về khác nhau theo loại bản ghi: Một tên miền có thể trỏ về nhiều địa chỉ IP khác nhau nên nếu chỉ dùng lệnh cơ bản, bạn có thể bỏ qua các bản ghi AAAA nếu không kiểm tra kỹ.
- Giới hạn về thông tin ẩn: Lệnh
hostchỉ truy xuất được các thông tin được công khai trên hệ thống DNS và không thể hiển thị các bản ghi bị ẩn bởi tường lửa hoặc cấu hình bảo mật riêng của máy chủ tên miền.

Câu hỏi thường gặp
Sự khác biệt chính giữa lệnh host và lệnh dig là gì?
Lệnh host được thiết kế để đưa ra kết quả ngắn gọn, dễ đọc và tập trung vào các thông tin phân giải cơ bản. Trong khi đó, lệnh dig cung cấp thông tin chi tiết hơn về cấu trúc của gói tin DNS, bao gồm cả các phần như Header, Authority và Additional, thường được dùng cho các tác vụ gỡ lỗi chuyên sâu.
Làm thế nào để xem tất cả các bản ghi DNS của một tên miền cùng lúc?
Nếu muốn liệt kê toàn bộ các loại bản ghi DNS hiện có trong một lần truy vấn duy nhất, bạn hãy sử dụng tùy chọn -a. Ví dụ: host -a vietnix.vn
Có thể chỉ định thời gian chờ cho lệnh host không?
Trong trường hợp mạng chậm hoặc máy chủ DNS phản hồi lâu, bạn có thể điều chỉnh thời gian chờ bằng tùy chọn -W. Để thiết lập thời gian chờ là 5 giây cho một truy vấn, bạn hãy sử dụng lệnh sau:host -W 5 vietnix.vn
Lệnh host có hỗ trợ kiểm tra địa chỉ IPv6 không?
Lệnh host hoàn toàn hỗ trợ truy vấn các địa chỉ IPv6 thông qua bản ghi loại AAAA. Để tìm kiếm địa chỉ IPv6 của một tên miền, bạn hãy thực hiện câu lệnh dưới đây:
host -t AAAA google.com
Tại sao lệnh host lại trả về thông báo “connection timed out”?
Thông báo “connection timed out” xuất hiện khi máy chủ DNS không phản hồi yêu cầu trong khoảng thời gian nhất định. Nguyên nhân có thể do kết nối mạng của bạn bị gián đoạn, máy chủ DNS đang bảo trì hoặc tường lửa đang chặn cổng 53 – cổng giao tiếp mặc định của dịch vụ DNS.
Lệnh host là công cụ truy vấn DNS cơ bản, đơn giản và nhanh chóng trên Linux, phù hợp cho các tác vụ kiểm tra tên miền hàng ngày. Việc sử dụng linh hoạt các tùy chọn như -t để chỉ định loại bản ghi hoặc trỏ trực tiếp đến máy chủ DNS cụ thể sẽ giúp bạn chẩn đoán nhanh chóng và hiệu quả các vấn đề mạng liên quan đến DNS.




