होस्टनाम और आईपी एड्रेस / मैपिंग / होस्ट्स में मैपिंग


14

मेरे लिनक्स मशीन में, जब मैं दौड़ता हूं hostname, तो यह दिखाता है mongodb, लेकिन जब मैं दौड़ता हूं host mongodb, तो यह दिखाता है:

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

मेरी /etc/hostsफ़ाइल:

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
  • मेरा पहला सवाल है: चूंकि /etc/hostsआईपी ​​से होस्टनाम में मैपिंग हो रही है, इसलिए यह मशीन होस्टनाम mongodbको आईपी 192.168.10.10 पर हल नहीं कर सकती है ? इसके बजाय, जब मैं दौड़ता हूं host localhost, तो इसे हल किया जा सकता है और दिखाता है:

    localhost has address 127.0.0.1
    
  • मेरा एक और सवाल: /etc/hostsफ़ाइल के अनुसार , होस्टनाम localhostको लूपबैक आईपी पते 127.0.1 के बजाय 192.168.10.10 पर हल किया जाना चाहिए था। कोई मुझे यह समझा सकता है?

जवाबों:


30

host(और nslookup) उपयोगिताओं स्पष्ट रूप से क्वेरी DNS सर्वर, और परामर्श नहीं है /etc/hostsएक डिफ़ॉल्ट सिस्टम विन्यास में फ़ाइल। यदि आप उस पते पर tracerouteया pingउस पते पर थे, तो आप इसे सही तरीके से हल कर सकते हैं।

आप 127.0.0.1 के अलावा किसी भी चीज़ के लिए मानचित्र में परिवर्तन नहीं करना चाहते हैं localhost, इससे कई चीजों पर अजीब और सूक्ष्म प्रभाव पड़ सकता है। मुझे लगता है कि /etc/hostsयह उस क्रम में पार्स किया गया है जिसमें यह लिखा है, और जब से आपके पास है:

192.168.10.10   localhost
127.0.0.1       localhost

.. दूसरी प्रविष्टि पहले ओवरराइडिंग हो सकती है।


5
/etc/hostsDNS सर्वर को सीधे क्वेरी करते समय DNS रिज़ॉल्यूशन पर कोई प्रभाव नहीं पड़ता है, जो कि hostकरता है। हालांकि, कई सिस्टम टूल और यूटिलिटी परिभाषा का उपयोग करते हैं localhost, यह लूपबैक एड्रेस होने की उम्मीद करते हैं, और सिस्टम नाम रिज़ॉल्यूशन (जो /etc/hostsकि DNS को क्वेरी करने से पहले दिखता है ) का उपयोग करते हुए नामों को सख्ती से DNS में जाने के बजाय हल करते हैं, जो हमेशा मौजूद नहीं हो सकता है।
डोपघोटी

1
मैं /etc/hostsफ़ाइल के संबंध में समस्याओं के साथ अनुभव भी साझा कर सकता हूं localhost। अतीत में हमने कुछ सॉफ़्टवेयर का उपयोग किया था 127.0.0.2 localhostजो होस्ट फ़ाइल में सम्मिलित करेंगे और अंतिम localhostप्रविष्टि होने के कारण यह सभी प्रकार के सॉफ़्टवेयर और लाइसेंस समस्याओं का कारण होगा। इसलिए मेरी सिफारिश है कि 127.0.0.1 localhostआपकी /etc/hostsफ़ाइल में पहली प्रविष्टि के रूप में है और सुनिश्चित करें localhostकि उस फ़ाइल में कोई अन्य प्रविष्टि नहीं है । और मैं किसी भी ipv6 सामान को भी सत्यापित करूँगा।
रॉन

5
कुछ हद तक पांडित्यपूर्ण होने के लिए, दोनों एक ns लुकअप करते हैं, जो एक डीएनएस लुकअप हो सकता है, अगर इस तरह आपने nsswitch.conf में होस्ट लुकअप कॉन्फ़िगर किया है।
सिम्बियन

1
@symcbean - आप जो कहते हैं वह सही है। मैं उस पांडित्य को नहीं कहूंगा।
DarkHeart

2
इसका एक उल्लेखनीय गैर-स्पष्ट अपवाद यह है कि यदि आपके /etc/resolv.confDNS सर्वर पर सीधे आपके डिवाइस (जैसे कैशिंग dnsmasq) पर चल रहे हैं और कहा कि /etc/hostsबाहरी सर्वरों से पूछताछ करने से पहले सर्वर आपके स्थानीय से परामर्श कर रहा है। फिर, अप्रत्यक्ष रूप से, जैसे आदेश hostआपके द्वारा प्रभावित होंगे /etc/hosts- यह एक असामान्य सेटअप है, लेकिन एक मैंने उपकरणों के साथ जहाज देखा है, और इस तरह की प्रणाली का उपयोग करने वाले किसी व्यक्ति का अनुभव इस उत्तर के साथ संघर्ष कर सकता है यदि कोई इस अजीबोगरीब सेटअप से अनजान है। ।
mtraceur

9

DopeGhoti के उत्तर के अलावा, अपने समाधान का परीक्षण करने के लिए, /etc/hostsपूर्ववर्तीता को रेखांकित करते हुए , आप getent hosts <some_hostname>कमांड का उपयोग कर सकते हैं ।


-3

मुझे TAB का उपयोग करने के बजाय IP और hostname के बीच कई रिक्त स्थान वाले / a / etc / होस्ट के साथ समान समस्याएं मिलीं। TAB में बदलने के बाद होस्टनाम को पिंग द्वारा हल किया जा सकता है।

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

/superuser//a/938366/467479 पर भी देखें


5
इसने मुझे चौंका दिया। के लिए मैनपेज hostsकहता है: Fields of the entry are separated by any number of blanks and/or tab characters. शायद आपके मामले में आईपी और होस्टनाम के बीच कुछ गैर-प्रिंट योग्य चरित्र था?
dr_

निश्चित रूप से कोई गैर-मुद्रण योग्य वर्ण नहीं थे। मैंने इसे यहां पोस्ट करने से पहले इसकी जाँच की;)
थॉमस लौरिया

मेरे पास टैब वर्ण नहीं हैं, मैं SLES 11.x चलाता हूं, और डीवीडी से साफ स्थापना के बाद मेरे / etc / मेजबान फ़ाइल के 127.0.0.1बाद 7 रिक्त स्थान हैं localhost। इसलिए मैं विशेष रूप से कई अंतरिक्ष वर्णों पर समस्या को पिन करने में थोड़ा संकोच करूंगा और समाधान के रूप में टैब चरित्र का उपयोग कर निष्कर्ष निकालूंगा।
रॉन

टैब का उल्लेख करना भूल गया। स्पेस एक विशिष्ट संस्करण या लिनक्स के वितरण के भीतर भी हो सकता है, जो बग हो सकता है? और अगर यह मामला था तो आपको एक टैब या एक स्थान के साथ विभिन्न आईपी पते / होस्टनाम प्रविष्टियां करने में सक्षम होना चाहिए, फिर उन पर एक पिंग करें यह देखने के लिए कि क्या यह हल हो जाता है ... बस इसके साथ मत करोlocalhost
रॉन

दुर्भाग्य से मुझे याद नहीं है कि किस मशीन (और इसलिए डिस्ट्रो) पर मैंने समस्या का अनुभव किया ... - मुझे लगता है कि यह Ubuntubox 15.05 पर virtualboximages.com/ से था। मैं इसका मूल्यांकन करने जा रहा हूं।
थॉमस लॉरिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.