Untuk mengatur nama host lakukan gunakan hostnamectl
, tetapi hanya dengan nama host, seperti ini:
hostnamectl set-hostname nodename
Untuk mengatur file edit nama domain (DNS)/etc/hosts
dan memastikan bahwa:
- Ada garis di
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
sana
- Tidak ada jalur lain dengan
<some IP> <hostname>
, dan ini termasuk jalur dengan 127.0.0.1
dan ::1
(IPv6) alamat.
Perhatikan bahwa kecuali Anda menggunakan NIS, (none)
adalah output yang benar ketika menjalankan domainname
perintah.
Untuk memeriksa apakah nama domain DNS Anda diatur dengan benar, gunakan dnsdomainname
perintah dan periksa keluaran hostname
vs hostname -f
(FQDN).
NIS vs domain DNS
Masalah ini membingungkan saya ketika saya pertama kali menemukannya. Tampaknya domainname
perintah itu mendahului popularitas Internet. Alih-alih nama domain DNS, ini menunjukkan atau menetapkan sistem NIS (Layanan Informasi Jaringan) alias YP (Yellow Pages) nama domain (sekelompok komputer yang memiliki layanan yang disediakan oleh server NIS master). Perintah ini hanya menampilkan nama yang dikembalikan oleh getdomainname(2)
fungsi perpustakaan standar. ( nisdomainname
dan ypdomainname
merupakan nama alternatif untuk perintah ini.)
Menampilkan nama domain FQDN atau DNS
Untuk memeriksa nama domain DNS (Internet), Anda harus menjalankan dnsdomainname
perintah atau hostname
dengan -d, --domain
opsi. (Perhatikan bahwa dnsdomainname
perintah tidak dapat digunakan untuk mengatur nama domain DNS - hanya digunakan untuk menampilkannya.)
Untuk menampilkan FQDN (Fully Qualified Domain Name) dari sistem, jalankan hostname
dengan -f, --fqdn, --long
opsi (demikian juga, perintah ini tidak dapat digunakan untuk mengatur bagian nama domain).
Perintah di atas menggunakan resolver sistem (diimplementasikan oleh gethostbyname(3)
fungsi dari pustaka standar, sebagaimana ditentukan oleh POSIX) untuk menentukan nama domain DNS dan FQDN.
Resolusi Nama
Dalam sistem operasi modern seperti RHEL 7, hosts
entri masuk /etc/nsswitch.conf
digunakan untuk menyelesaikan nama host. Di mesin CentOS 7 Anda, baris ini dikonfigurasi sebagai (default untuk CentOS 7):
hosts: files dns
Ini berarti bahwa ketika fungsi resolver mencari nama host atau alamat IP, mereka pertama-tama memeriksa entri dalam /etc/hosts
file dan kemudian mencoba server DNS yang terdaftar di /etc/resolv.conf
.
Saat menjalankan hostname -f
untuk mendapatkan FQDN dari sebuah host, fungsi resolver mencoba untuk mendapatkan FQDN untuk nama host sistem. Jika host tidak terdaftar dalam /etc/hosts
file atau oleh server DNS yang relevan, upaya gagal dan hostname
melaporkannya Name or service not known
.
Ketika hostname -d
dijalankan untuk mendapatkan nama domain, operasi yang sama dilakukan, dan bagian nama domain ditentukan dengan menghapus bagian nama host dan titik pertama dari FQDN.
Konfigurasikan nama domain
1. Perbarui server nama DNS yang relevan
Dalam kasus saya, saya sudah menambahkan entri untuk mesin CentOS 7 baru saya di server DNS untuk LAN lokal saya sehingga ketika FQDN tidak ditemukan dalam /etc/hosts
file ketika saya berlari hostname
dengan opsi -d
atau -f
, layanan DNS lokal dapat sepenuhnya menyelesaikan FQDN untuk nama host baru saya.
2. Gunakan /etc/hosts
file
Jika server DNS belum dikonfigurasi, nama domain yang memenuhi syarat dapat ditentukan dalam /etc/hosts
file. Cara paling umum untuk melakukan ini adalah dengan menentukan alamat IP utama sistem diikuti dengan FQDN dan nama host pendeknya. Misalnya,
172.22.0.9 nodename.domainname nodename
Kutipan dari hostname
halaman manual
Anda tidak dapat mengubah FQDN dengan hostname
atau dnsdomainname
.
Metode pengaturan FQDN yang disarankan adalah menjadikan nama host menjadi alias untuk nama yang sepenuhnya memenuhi syarat menggunakan /etc/hosts,
DNS, atau NIS. Misalnya, jika nama host adalah "ursula", orang mungkin memiliki baris di /etc/hosts
mana berbunyi:
27.0.1.1 ursula.example.com ursula
Secara teknis: FQDN adalah nama getaddrinfo (3) yang dikembalikan untuk nama host yang dikembalikan oleh gethostname (2). Nama domain DNS adalah bagian setelah titik pertama.
Karena itu tergantung pada konfigurasi resolver (biasanya dalam
/etc/host.conf
) bagaimana Anda dapat mengubahnya. Biasanya file host diuraikan sebelum DNS atau NIS, jadi itu paling umum untuk mengubah FQDN di
/etc/hosts
.
hostname -f
perintahnya tidak berfungsi pada CentOS vm saya./etc/hostname
dan outputgrep ^hosts: /etc/nsswitch.conf
? Saya tidak tahu banyak tentang Network Manager tapi saya juga melihat bahwa saya/etc/NetworkManager/NetworkManager.conf
berisi baris dalam nya[keyfile]
bagian:hostname=<nodename>
.hostnamectl set-hostname nodename.domainname
tidak tidak menetapkan nama domain DNS (dan itu tidak bahwa itu menetapkan nama domain NIS baik).Pada Centos7 menggunakan nmtui untuk mengatur nama host dan memberikan format nodename.domainname / FQDN memberikan hasil yang konsisten. nama host [d / f / s] semuanya memberikan hasil yang diharapkan dengan benar. Itu tidak disimpan di /etc/resolv.conf ATAU / etc / hosts. Tetapi FQDN ditulis ke / etc / hostname sebagai entri baris tunggal.
sumber
Bagi saya, file / etc / hostname berisi FQDN alih-alih nama host (mis., Nama host, bukan hostname.example.com). Setelah saya menghapus domain dari hostname di / etc / hostname, perintah 'hostname -f' bekerja dengan normal.
Saya pikir ini diperkenalkan ketika saya menginstal CentOS 7 VM. Saya seharusnya hanya memasukkan nama host, bukan nama domain yang sepenuhnya memenuhi syarat.
sumber