CentOS 7.0'da tam ana bilgisayar adı nasıl ayarlanır?


19

CentOS 7.0'da tam ana bilgisayar adını nasıl ayarlayabilirim?

Örneğin kullanarak çevrimiçi birkaç yazı gördüm:

$ sudo hostnamectl set-hostname nodename.domainname

Ancak, etki alanı adını çalıştırmak hiçbir şey döndürmez:

$ domainname
(none)

Ayrıca:

$ hostname
nodename.domainname

Ancak,

$ hostname -f
hostname: Name or service not known
$ hostname -d
hostname: Name or service not known

Bazı hata ayıklama çıktıları:

$ cat /etc/hostname
nodename.domainname

$ grep ^hosts /etc/nsswitch.conf
hosts:      files dns

Yanıtlar:


30

Ayarlamak için ana makine adı do kullanımını hostnamectlancak böyle hostname ile:

hostnamectl set-hostname nodename


(DNS) alan adı düzenleme /etc/hostsdosyasını ayarlamak ve şunlardan emin olun:

  1. Bir çizgi var <machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname> var
  2. Başka satır yoktur <some IP> <hostname>ve buna 127.0.0.1ve ::1(IPv6) adresli satırlar da dahildir .

NIS kullanmadığınız sürece (none),domainname komutu .

DNS alan adınızın doğru ayarlanıp ayarlanmadığını dnsdomainnamekontrol etmek için komutunu kullanın ve hostnamevs hostname -f(FQDN) çıktısını kontrol edin .


NIS ve DNS etki alanı

İlk karşılaştığımda bu konu beni şaşırttı. domainnameKomutun internetin popülaritesinden önce geldiği anlaşılıyor . DNS etki alanı adı yerine, sistemin NIS (Ağ Bilgi Hizmeti) aka YP (Sarı Sayfalar) etki alanı adını (ana NIS sunucusu tarafından sağlanan hizmetlere sahip bir bilgisayar grubu) gösterir veya ayarlar . Bu komut yalnızca getdomainname(2)standart kitaplık işlevi tarafından döndürülen adı görüntüler . ( nisdomainnameveypdomainname bu komut için alternatif adlardır.)

FQDN veya DNS alan adını görüntüleme

Kontrol etmek için DNS (Internet) alan adı, çalıştırmak gerektiğini dnsdomainnamekomutu ya hostnamesahip -d, --domainseçenekler. (dnsdomainname Komutun DNS etki alanı adını ayarlamak için kullanılamayacağını - yalnızca görüntülemek için kullanılır.)

Sistemin FQDN'sini (Tam Nitelikli Etki Alanı Adı) görüntülemekhostname için -f, --fqdn, --longseçeneklerle çalıştırın (aynı şekilde bu komut, etki alanı adı bölümünü ayarlamak için kullanılamaz).

Yukarıdaki komutlar gethostbyname(3), DNS etki alanı adını ve FQDN'yi belirlemek için sistemin çözümleyicisini ( POSIX tarafından belirtildiği gibi standart kitaplıktaki işlev tarafından uygulanır ) kullanır.

Ad çözümlemesi

RHEL 7 gibi modern işletim sistemlerinde, hostsgiriş /etc/nsswitch.confana bilgisayar adlarını çözümlemek için kullanılır. CentOS 7 makinenizde bu hat şu şekilde yapılandırılmıştır (CentOS 7 için varsayılan):

hosts:      files dns

Bu, çözümleyici işlevleri ana bilgisayar adlarını veya IP adresini aradığında, önce /etc/hosts dosyadaki bir girdiyi kontrol ettikleri ve daha sonra listelenen DNS sunucularını/etc/resolv.conf .

Bir hostname -fana bilgisayarın FQDN'sini almaya çalışırken , çözümleyici işlevleri sistemin ana makine adı için FQDN'yi almaya çalışır. Ana makine /etc/hostsdosyada veya ilgili DNS sunucusu tarafından listelenmemişse , deneme başarısız olur ve bunu hostnamebildirir Name or service not known.

Zaman hostname -dalan adı elde edilmesi için çalıştırılan, aynı işlemler gerçekleştirilir ve alan adı kısmı ana bilgisayar bölümü ve FQDN'den ilk nokta sıyırma ile belirlenir.

Alan adını yapılandırın

1. İlgili DNS ad sunucusunu güncelleyin

Benim durumumda, yerel LAN'ım için DNS sunucusuna yeni CentOS 7 makinem için bir giriş ekledim, bu nedenle veya seçeneği ile /etc/hostsçalıştırdığımda FQDN dosyada bulunamadığında , yerel DNS hizmetleri yeni ana bilgisayar adımın FQDN'sini tam olarak çözün.hostname-d-f

2. /etc/hostsDosyayı kullanın

DNS sunucusu yapılandırılmamışsa, /etc/hostsdosyada tam etki alanı adı belirtilebilir . Bunu yapmanın en yaygın yolu, sistemin birincil IP adresini ve ardından FQDN'sini ve kısa ana bilgisayar adını belirtmektir. Örneğin,

172.22.0.9  nodename.domainname nodename

hostnameMan sayfasından alıntı

FQDN'yi hostnameveya ile değiştiremezsiniz dnsdomainname.

FQDN'yi ayarlamanın önerilen yöntemi, ana bilgisayar adını /etc/hosts,DNS veya NIS kullanarak tam nitelikli ad için bir diğer ad yapmaktır . Örneğin, ana bilgisayar adı "ursula" ise, /etc/hostsşu satırda bir satır olabilir :

27.0.1.1    ursula.example.com ursula

Teknik olarak: FQDN, gethostname (2) tarafından döndürülen ana bilgisayar adı için döndürülen getaddrinfo (3) adıdır. DNS etki alanı adı, ilk noktadan sonraki bölümdür.

Bu nedenle, çözümleyicinin (genellikle içinde /etc/host.conf) nasıl değiştirebileceğinizi yapılandırmasına bağlıdır . Genellikle hosts dosyası DNS veya NIS'den önce ayrıştırılır, bu nedenle FQDN'yi değiştirmek en yaygın olanıdır /etc/hosts.


Cevabınız için teşekkürler. Soruyu güncelledim - maalesef hostname -fkomut CentOS vm'de çalışmıyor.
Chris Snow

@SHC Sorunuzun içeriğini /etc/hostnameve çıktısını da içerecek şekilde düzenleyebilir misiniz grep ^hosts: /etc/nsswitch.conf? Ben Ağ Yöneticisi hakkında fazla bilgim yok ama ben de benim fark /etc/NetworkManager/NetworkManager.confonun bir satır içerir [keyfile]bölüm: hostname=<nodename>.
Anthony G - Monica için adalet

1
@ SHC Sorunu araştırıyorum ve cevabımı kökten değiştirdim; şimdi sorunuzu daha kapsamlı bir şekilde ele almalıdır.
Anthony G - Monica için adalet

Bu cevabın cezası bedenle tutarsız. hostnamectl set-hostname nodename.domainnameyok değil (o da NIS alan adını teşkil ettiği ve bu değil) DNS etki alanı adını ayarlayın.
sourcejedi

@sourcejedi Şu anda vaktim yok ama fırsat bulduğumda cevabımı netleştirmeye çalışacağım.
Anthony G - Monica için adalet

1

Centos7'de nmtui kullanarak ana makine adını ayarlamak ve nodename.domainname / FQDN formatını sağlamak tutarlı sonuçlar vermektedir. hostname [d / f / s], beklenen doğru sonuçları sağlar. /Etc/resolv.conf OR / etc / hosts dosyasında saklanmaz. Ancak FQDN, / etc / hostname dizinine tek satırlık giriş olarak yazılır.


0

Benim için / etc / hostname dosyası, hostname yerine FQDN'yi içeriyordu (örneğin, hostname.example.com yerine hostname). Etki alanını / etc / hostname içindeki hostname'den kaldırdığımda 'hostname -f' komutu normal çalıştı.

Sanırım CentOS 7 VM'yi kurduğumda bu tanıtıldı. Tam etki alanı adını değil, yalnızca ana bilgisayar adını girmeliydim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.