linux hostname -f lệnh không hoạt động trên RHEL


13

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 -shostname -ftrở về : Unknown host. Tại sao?


Phân phối gì? Trên hệ thống Ubuntu 12.04 của tôi, cả 3 đều hoạt động.
Anthon

Bạn đang sử dụng hệ điều hành nào? Nếu Linux, phân phối nào? Nội dung của là /etc/hostnamegì?
terdon

1
hostname -fsử dụng DNS, bạn có mục DNS ngược cho IP của mình không?
Barmar

@terdon Tôi đang sử dụng RHEL5 (máy chủ linux doanh nghiệp mũ đỏ phát hành 5.7 (tikanga)) và không có tệp nào như vậy (/ etc / hostname)
redoc

@Barmar Tôi không có cấu hình dns trên máy chủ của mình. Tôi đã thêm địa chỉ IP và fqdn trong tệp máy chủ của mình (/ etc / hosts), lỗi này là do dns không được cấu hình?
lại

Câu trả lời:


21

(đượ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.

  • Nếu bạn đã cấu hình nó để sử dụng dns, nó sẽ sử dụng các miền tìm kiếm được định cấu hình /etc/resolv.confcho đến khi nhận được IP từ DNS.
  • Nếu bạn đã cấu hình để sử dụng các tệp, nó sẽ tìm trong /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

Đó là lời giải thích về cách nó nhận được giá trị là tuyệt vời! Tôi đã có FQDN của tôi ở cuối dòng 127.0.0.1 có tên máy chủ chính là localhost. Tôi vừa xóa chúng và chỉ để lại FQDN trên dòng có IP thật và nó đã khắc phục vấn đề của tôi về tên máy chủ -f trả về localhost.
qwertzguy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.