/ Etc / hosts içindeki ana makine adı ve IP adresi eşlemesi


14

Linux makinemde, koştuğumda hostnamegösteriyor mongodb, ama koştuğumda host mongodbgösteriyor:

mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb
Host mongodb not found: 2(SERVFAIL)

Benim /etc/hostsdosyam:

192.168.10.10   mongodb
192.168.10.10   localhost
127.0.0.1       localhost
#127.0.0.1 localhost
# 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
  • İlk sorum şudur: /etc/hostsIP'den ana makine adına eşleme olduğundan, bu makine neden ana makine adını mongodbIP 192.168.10.10 olarak çözemez ? Bunun yerine, çalıştırdığımda host localhost, çözülebilir ve gösterir:

    localhost has address 127.0.0.1
    
  • Başka bir sorum: /etc/hostsDosyaya göre , ana bilgisayar adı localhostgeri döngü IP adresi 127.0.0.1 yerine 192.168.10.10 olarak çözülmüş olmalıdır. Bunu bana açıklayan var mı?

Yanıtlar:


30

host(Ve nslookupaçıkça) programları sorgu DNS sunucuları ve danışmak yok /etc/hostsvarsayılan bir sistem konfigürasyonu dosyayı. Bu adrese tracerouteveya pingbu adrese gitmiş olsaydınız, adresin doğru şekilde çözüldüğünü görürsünüz.

Sen do not değiştirmek istediğiniz localhost127.0.0.1 dışında bir eşlemek için, bu birçok şeyi garip ve ince etkileri olabilir. Ben düşünüyorum o /etc/hostsyazıldığı sırayla ayrıştırılır ve sahip tarihi:

192.168.10.10   localhost
127.0.0.1       localhost

..İkinci giriş birinciyi geçersiz kılabilir.


5
/etc/hostsyok herhangi budur, doğrudan DNS sunucularını sorgularken DNS çözümlemesi üzerinde etkisi hostyapar. Ancak, birçok sistem araçları ve yardımcı programlar kullanmaklocalhost bir geri döngü adresi ve kullanım sistemi ad çözümlemesi olması bekleniyor tanımı (en hangi görünüyor /etc/hostsçözmek adlarına yerine kesinlikle her zaman mevcut olmayabilir DNS, giderek DNS sorgulayarak önce).
DopeGhoti

1
Ayrıca, /etc/hostsdosyadaki sorunlarla ilgili deneyimi paylaşabilirim localhost. Geçmişte 127.0.0.2 localhost, anasistemler dosyasına bir ekleyecek bazı yazılımlar kullanmıştık ve bunun en son localhostgiriş olması, her türlü yazılım ve lisans sorununa neden olmuştur. Bu yüzden tavsiyem dosyanızda 127.0.0.1 localhostilk girdi olarak yer almanız /etc/hostsve localhostbu dosyada başka bir girdi olmadığından emin olmanızdır . Ayrıca ben de herhangi bir ipv6 şeyler doğrulamak.
ron

5
Biraz bilgiçlikçi olmak için, nsswitch.conf dosyasındaki ana bilgisayar aramasını bu şekilde yapılandırdıysanız, dns araması olabilecek bir ns araması yapın .
symcbean

1
@symcbean - söyledikleriniz doğru. Buna bilgiçlik demezdim.
DarkHeart

2
Bunun bariz bir istisnası, /etc/resolv.confdoğrudan cihazınızda çalışan bir DNS sunucusuna (önbellek gibi dnsmasq) ve söz konusu sunucunun /etc/hostsharici sunucuları sorgulamadan önce yerelinize danışmasıdır . Sonra, dolaylı olarak, hostsizin gibi komutlar etkilenecektir /etc/hosts- bu nadir bir kurulumdur, ancak cihazların birlikte geldiğini gördüm ve böyle bir sistemi kullanan birinin deneyimi, bu tuhaf kurulumdan habersizse bu cevapla çelişebilir. .
mtraceur

9

DopeGhoti'nin cevabına ek olarak, çözümünüzü test etmek, /etc/hostsönceliği de dahil etmek için getent hosts <some_hostname>komutu kullanabilirsiniz .


-3

Ben bir sekme kullanarak IP ve ana bilgisayar adı arasında birden çok boşluk içeren bir / etc / hosts ile benzer sorunlar var. SEKME olarak değiştirildikten sonra ana bilgisayar adı ping ile çözümlenebilir.

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

ayrıca bkz. /superuser//a/938366/467479


5
Bu beni şaşırtıyor. Manpage hostsşöyle diyor: Fields of the entry are separated by any number of blanks and/or tab characters. Belki de sizin durumunuzda IP ve ana bilgisayar adı arasında yazdırılamayan bazı yabancı karakterler vardı?
dr_

Kesin olarak yazdırılamaz karakter yoktu. Bunu buraya göndermeden önce kontrol ettim;)
Thomas Lauria

Sekme karakterleri yok, SLES 11.x'i çalıştırıyorum ve dvd'den temiz kurulumdan sonra / etc / hosts dosyamdan sonra 127.0.0.17 boşluk izledi localhost. Bu yüzden sorunu özellikle birden çok boşluk karakterine sabitlemek ve sekme karakterini çözüm olarak kullanmak konusunda biraz tereddüt ediyorum.
ron

Ayrıca bir hata olabilir linux belirli bir sürümü veya dağıtımında boşluk karşı sekmesini belirtmek unuttum? ve eğer durum buysa, bir sekme veya boşlukla çeşitli ip adresi / ana bilgisayar adı girişleri yapabilmeniz gerekir, sonra çözülüp çözülmediğini görmek için onlara bir ping yapın ... sadece bunu yapmalocalhost
ron

maalesef hangi makinede (ve dolayısıyla dağıtımda) problem yaşadığımı hatırlamıyorum ... - Sanırım sanal kutudan Ubuntu 15.05'te .
Thomas Lauria
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.