Tôi đang chạy RHEL 5.7 và hostnamelệnh cho tôi tên máy chủ chính xác.
Nhưng hostname -svà hostname -ftrở về : Unknown host. Tại sao?
/etc/hostnamegì?
hostname -fsử dụng DNS, bạn có mục DNS ngược cho IP của mình không?
Tôi đang chạy RHEL 5.7 và hostnamelệnh cho tôi tên máy chủ chính xác.
Nhưng hostname -svà hostname -ftrở về : Unknown host. Tại sao?
/etc/hostnamegì?
hostname -fsử dụng DNS, bạn có mục DNS ngược cho IP của mình không?
Câu trả lời:
(được sao chép từ một trong những câu trả lời của tôi trên SF )
Các hostnamelệnh trả về kết quả từ DNS và /etc/hosts.
hostnametương đương uname -nvà là "tên máy chủ" hoặc "tên nút" thực sự của hộp.
Tất cả các hostnameđối số khác sử dụng tên nút này để tra cứu thông tin.
Vì vậy, trước khi đi xa hơn, tôi nên giải thích /etc/hostsđịnh dạng tập tin.
Trường đầu tiên khá rõ ràng, địa chỉ IP của nó là tất cả các tên máy chủ lưu trữ trên dòng nên giải quyết. Trường thứ hai là tên máy chủ chính cho IP đó. Các trường còn lại là bí danh.
Vì vậy, nếu bạn chạy hostname -fnó trước tiên sẽ cố gắng giải quyết IP cho tên nút của bạn. Tùy thuộc vào cách bạn có hosts:mục được cấu hình trong /etc/nsswitch.confphương pháp này sẽ khác nhau.
/etc/resolv.confcho đến khi nhận được IP từ DNS. /etc/hostsmột dòng trong đó tên máy chủ chính hoặc tên bí danh là tên nút hiện tại của bạn ( uname -n), sau đó trả về địa chỉ IP trong dòng đó. Khi đã có IP rồi nó sẽ thử tra cứu ngược lại trên IP đó. Một lần nữa, nó sẽ sử dụng DNS cho việc này và tập tin máy chủ của bạn dựa trên nsswitch.conf. Trong trường hợp sử dụng tệp máy chủ của bạn, nó sẽ trả về mục nhập chính (là trường đầu tiên sau IP trong tệp).
hostname -asẽ chỉ hoạt động với tệp máy chủ vì thực hiện tra cứu ngược trong DNS chỉ cung cấp cho bạn 1 kết quả. Với tệp máy chủ, nó trả về các giá trị trong dòng phù hợp (là tất cả mọi thứ sau mục nhập đầu tiên, tên máy chủ chính).
Vì vậy, trong ngắn hạn, lý do có thể cho vấn đề của bạn là bạn không có mục nào trong /etc/hostsđó có tên máy chủ của bạn ( uname -n).
Ví dụ
Nếu tên nút của bạn là 'foobar' và bạn có một mục /etc/hostsnhư thế này:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
Sau đó, bạn sẽ nhận được kết quả lệnh sau:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost