Host komutu neden / etc / hosts dosyasındaki girdileri çözmüyor?


25

/etc/hostsBir ubuntu 12.04 makinede aşağıdaki dosya var

127.0.0.1 localhost
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Bununla birlikte, ana bilgisayar komutu adı puppetmasterdoğru şekilde çözmüyor, telnet komutu ise

root@ip-10-248-34-162:/home/ubuntu# host puppetmaster
Host puppetmaster not found: 3(NXDOMAIN)

root@ip-10-248-34-162:/home/ubuntu# telnet puppetmaster 8140
Trying 10.248.27.66...
Connected to ec2-50-112-220-110.us-west-2.compute.amazonaws.com.
Escape character is '^]'.

Host komutu neden / etc / hosts dosyasındaki girdileri çözmüyor?

Yanıtlar:


52

hostProgram kullanır libresolvyani kullanmaz, doğrudan DNS sorgulaması yapmak üzere gethostbyname.

Çoğu program, başka bir ana bilgisayara bağlanmaya çalışırken, gethostbynamesistem çağrısını veya benzer bir işlevi başlatır . Bu fonksiyon, konfigürasyonuna uyar /etc/nsswitch.conf. Bu dosya Ubuntu 12.04'te varsayılan olarak aşağıdakine varsayılan bir satıra sahiptir:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

bu, ilk önce kullanacağı /etc/hostsve ardından DNS sorgularına geri döneceği anlamına gelir .

Bu şekilde bir ana bilgisayar araması yapmak istiyorsanız, bunu birlikte yapabilirsiniz getent hosts. Örneğin:

$ getent hosts serverfault.com
198.252.206.16  serverfault.com

Umarım bu yardımcı olur.


2
Sağol Kvisle, ama hala biraz kafam karıştı. Satır buna /etc/nsswitch.confbenziyordu hosts: files dnsve ben bunu değiştirdim hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4ancak her iki durumda /etc/hostsda sorgulanmadı, bunun yerine doğrudan dns sorguları yapıldı. Bunun veya /etc/hostsgibi bir komut kullanılırken ilk önce sorgulanmasını nasıl sağlayabilirim ? dighost
user784637

4
Yapamazsın dig / host doğrudan DNS kullanır. İlk önce ana bilgisayar dosyasını kontrol eden bir adlandırma yapmanız gerekiyorsa, kullanmanız getent hostsveya başka bir şey kullanmanız gerekirgethostbyname()
Kvisle

Oh anlıyorum, benim kötü, şimdi anladım =)
user784637 11:13

1
Bugünlerde birini kullanarak gerektiğine inanıyoruz getent ahostsyerine getent hostsçünkü getent hostskullanımları gethostbyaddr()veya gethostbyname*()eskimiş olan. Doğru anladıysam, getent hostsUNIX C programlarının eskiden çalıştığını getent ahoststaklit eder ve moderm programlarının çalışması gerektiği şekilde öykünür.
Mikko Rantalainen

Ancak host komutunu / etc / hosts kodunu kullanmanın bir yolu var mı?
Kornel

10

Çünkü hostyardımcı program yalnızca bir DNS arama yardımcı programıdır.

Çoğu uygulama kütüphane çağrılarını getaddrinfoveya kullanır gethostbyname. Bu kitaplıklar /etc/nsswitch.conf, arama önceliğini ve farklı aramaların nasıl yapılacağına ilişkin politikayı belirlemek için çağrılan bir dosyayı sorgular.

Genellikle /etc/nsswitch.confçizgiyi içerir

hosts:        files dns

Bu, bir programa önce /etc/hostsbaşarısız olması durumunda önce DNS'yi sonra da sorgulamasını söyler .

Ana bilgisayarlar yalnızca DNS aramaları /etc/hostsyaptığından, aramayı yapmak için gözetleme yapmaz .


3

Bunu bulacak digve nslookupaynı şekilde davranacaksınız host.

Bunun nedeni, tüm bu komutların amacı, dosyalara bakmak değil DNS aramaları yapmaktır.

Diğer programların çoğu, işletim sisteminin ad çözümleyicisini kullanır /etc/nsswitch.confve ardından /etc/resolv.confistediğiniz ana bilgisayar adının nasıl çözüleceğine karar vermek için (gerekirse) kullanır. (Bu bir basitleştirmedir, başka seçenekler de vardır.) nsswitch.confDosya genellikle DNS yerine yerel dosyalara öncelik verir.



-1

/etc/nsswitch.conf dosyasını kontrol edin ve "hosts" sözcüğü ile başlayan satırı mı arıyorsunuz? Bu satırda "files" kelimesini görüyor musunuz? Eğer evet ise, "dns" kelimesinden önce mi yoksa sonra mı?

Normal bir sistemde, bu satır gibi bir şey olmalı

hosts      files dns

seninki yoksa veya farklı bir düzende değilse, bu senin sorunun olabilir.


Var ve bu gibi görünüyorhosts: files dns
user784637
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.