perintah linux hostname -f tidak berfungsi pada RHEL

13

Saya menjalankan RHEL 5.7 dan hostnameperintah memberi saya nama host yang benar.
Tapi hostname -sdan hostname -fkembali: Unknown host. Mengapa?

redoc
sumber
Distro apa? Pada sistem Ubuntu 12,04 saya, semuanya bekerja 3.
Anthon
Sistem operasi apa yang Anda gunakan? Jika Linux, distribusi mana? Apa isinya /etc/hostname?
terdon
1
hostname -fmenggunakan DNS, apakah Anda memiliki entri DNS terbalik untuk IP Anda?
Barmar
@terdon Saya menggunakan RHEL5 (red hat enterprise linux server rilis 5.7 (tikanga)) dan tidak ada file seperti itu (/ etc / hostname)
redoc
@Barmar Saya tidak mengonfigurasi dns di host saya. Saya menambahkan alamat ip dan fqdn di file hosts saya (/ etc / hosts), kesalahan ini adalah hasil dari dns yang tidak dikonfigurasi?
redoc

Jawaban:

21

(disalin dari salah satu jawaban saya di SF )

The hostnamePerintah mengembalikan hasil dari DNS dan /etc/hosts.

hostnamesetara dengan uname -ndan merupakan "nama host" atau "nama panggilan" kotak yang sebenarnya.
Semua hostnameargumen lain menggunakan nama kecil ini untuk mencari info.

Jadi sebelum melangkah lebih jauh, saya harus menjelaskan /etc/hostsformat file.
Kolom pertama cukup jelas, ini adalah alamat IP yang harus diselesaikan oleh semua nama host pada saluran tersebut. Bidang kedua adalah nama host utama untuk IP itu. Kolom yang tersisa adalah alias.

Jadi, jika Anda menjalankannya hostname -fpertama-tama akan mencoba menyelesaikan IP untuk nama panggilan Anda. Tergantung pada bagaimana Anda mengatur hosts:entri dalam /etc/nsswitch.confmetode ini akan bervariasi.

  • Jika Anda mengonfigurasinya untuk menggunakan dns, itu akan menggunakan domain pencarian yang dikonfigurasi /etc/resolv.confhingga mendapat IP kembali dari DNS.
  • Jika Anda mengonfigurasinya untuk menggunakan file, ia akan mencari /etc/hostsuntuk menemukan baris di mana nama host utama atau nama alias adalah nama panggilan Anda saat ini ( uname -n), dan kemudian mengembalikan alamat IP di baris itu.

Setelah memiliki IP, maka akan mencoba melakukan reverse lookup pada IP itu. Sekali lagi ini akan menggunakan DNS untuk ini dan file host Anda berdasarkan pada nsswitch.conf. Dalam hal menggunakan file hosts Anda, itu akan mengembalikan entri utama (yang merupakan bidang pertama setelah IP dalam file).

hostname -ahanya akan bekerja dengan file host karena melakukan pencarian terbalik di DNS hanya memberi Anda 1 hasil. Dengan file hosts, ia mengembalikan alises di baris yang cocok (yang merupakan segalanya setelah entri pertama, nama host utama).

 

Jadi singkatnya, kemungkinan alasan untuk masalah Anda adalah karena Anda tidak memiliki entri /etc/hostsyang berisi nama host Anda ( uname -n).


Contoh
Jika nama kecil Anda adalah 'foobar', dan Anda memiliki entri /etc/hostsseperti ini:

127.0.0.1 foobar.example.com foobar localhost.localdomain localhost

Maka Anda akan mendapatkan hasil perintah berikut:

# hostname
foobar
# uname -n
foobar

# hostname -f
foobar.example.com

# hostname -a
foobar localhost.localdomain localhost
Patrick
sumber
Penjelasan tentang bagaimana mendapatkan nilai itu bagus! Saya memiliki FQDN saya di akhir baris 127.0.0.1 yang sebelumnya merupakan nama host utama localhost. Saya baru saja menghapusnya dan meninggalkan FQDN hanya pada baris yang memiliki IP asli, dan itu memperbaiki masalah saya hostname -f mengembalikan localhost.
qwertzguy