होस्ट फ़ाइल: क्या एक ही IP पता कई लाइनों पर होना गलत है?


28

कुछ समय से मैं अपनी मेजबानों की फाइल को इस तरह से तैयार कर रहा हूं। एक ही आईपी को दो लाइनों पर ध्यान दें:

e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com

मैंने हाल ही में पढ़ा कि उपनामों को एक पंक्ति में समेकित किया जाना चाहिए:

e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com 

हालाँकि, मुझे यह तरीका पसंद नहीं है क्योंकि आप आसानी से कुछ उपनामों पर टिप्पणी नहीं कर सकते हैं या इस तरह से विशेष उपनामों में टिप्पणियां जोड़ सकते हैं:

  a.b.c.d foo.mydevsite.com          # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com        # myOtherSite on box 1 
  a.b.c.d ubuntuBox                  

  e.f.g.h foo.myOtherSite.com        # myOtherSite testing environment

अब तक यह ठीक काम कर रहा है; क्या इसमें कोई समस्या है?

जवाबों:


28

मुझे यह धागा मिला जो इन पंक्तियों के साथ कुछ करने की चर्चा करता है। /etc/hostsफ़ाइल के कई पंक्तियों के न होने के बारे में थ्रेड काफी अडिग है ।

अंश - Re: / etc / मेजबान: एक ही आईपी पते के साथ दो लाइनें?

नहीं यह नहीं होगा। रिज़ॉल्वर पहले रिज़ॉल्यूशन पर रुकते हैं। कुछ इस तरह से:

   127.0.0.1 localhost.localdomain localhost
   127.0.0.1 somenode.somedom.com somenode

जो आप बात कर रहे हैं वह नहीं करेंगे। लेकिन होने:

   127.0.0.1 somenode.somedom.com somenode
   127.0.0.1 localhost.localdomain localhost

सभी प्रकार के कहर का कारण होगा। जिसमें अग्रेषण भी शामिल है।

मैं आमतौर पर वह नहीं करता जो आप कर रहे हैं। यदि आपको अधिक प्रमाणों की आवश्यकता है तो मैन पेज भी ऐसा नहीं करने के लिए कहता है:

अंश man hosts

यह मैनुअल पेज / etc / मेजबान फ़ाइल के प्रारूप का वर्णन करता है। यह फ़ाइल एक साधारण पाठ फ़ाइल है जो आईपी पते को होस्टनाम के साथ जोड़ती है, प्रति आईपी पते की एक पंक्ति। प्रत्येक मेजबान के लिए एक एकल पंक्ति निम्नलिखित जानकारी के साथ मौजूद होनी चाहिए:

         IP_address canonical_hostname [aliases...]

यह सब कहा जा रहा है, यदि आपके होस्टनाम FQDN हैं और वे ओवरलैप नहीं करते हैं, तो आप संभवतः वह करने के लिए सुरक्षित हैं जो आप कर रहे हैं। बस ध्यान रखें कि यदि कोई ओवरलैप है जैसे कि ऊपर दिए गए धागे में क्या उल्लेख किया गया है, तो आप समस्याओं को हल करने में भाग सकते हैं।


1
मैं उस धागे में किसी भी पक्ष द्वारा उल्लिखित प्रभावों का निरीक्षण नहीं करता । उदाहरण के लिए, 127.0.0.1 के लिए कई लाइनें hostname(ओपी को नियंत्रित करना) के आउटपुट को प्रभावित नहीं करती हैं , और वे सभी सही ढंग से हल करते हैं (प्रतिक्रिया व्यक्त करते हैं)।
गोल्डीलॉक्स

1
लेकिन gethostbyaddr()वे जो बात उठाते हैं वह महत्वपूर्ण है। +1
गोल्डीलॉक्स

बहुत ही रोचक! मुझे महसूस नहीं हुआ कि एक होस्ट फ़ाइल का उपयोग अप्रत्यक्ष रूप से किया गया था (आईपी से होस्ट-नाम प्राप्त करें, होस्ट-नाम से आईपी प्राप्त करें)। यह निश्चित रूप से कुछ मुद्दों को लाता है। हो सकता है कि मुझे एक होस्ट फ़ाइल बनाने की प्रक्रिया में देखना चाहिए, जो एक मानव पठनीय संस्करण को पकड़ता है और फिर मेजबान-उपनामों को एक पंक्ति में समेटकर इसे "सही" करता है। बहुत आसान स्क्रिप्ट होनी चाहिए।
एलेक्सा

1
@ एलेक्सा - यदि आप पा रहे हैं कि /etc/hostsआपको दुःख हो रहा है तो आप हमेशा DNS सेटअप कर सकते हैं। मैं इस सटीक कारण के लिए BIND चलाता हूं, (1) b / c यह केंद्रीय रूप से प्रबंधित करने के लिए आसान है, और (2) मुझे बहुत सारे सिरदर्द के बिना वहां से जिस तरह से मैं चाहता हूं, वह हल मिलता है। ऐसा करने के लिए DNSMasq जैसे हल्के विकल्प भी हैं। इन प्रणालियों का उपयोग एक एकल बॉक्स पर भी किया जा सकता है!
स्लम

@ एसएलएम एक उत्पादन वातावरण के लिए एक बहुत अच्छा विकल्प लगता है। संभवतः एक मूल्यवान शिक्षण परियोजना भी।
एलेक्सा

5

मेरा मानना ​​है कि तीसरी विधि ठीक काम कर रही है; क्या इसमें कोई समस्या है?

मैंने हमेशा ऐसा किया है कि थोड़ा बहुत है, लेकिन एक संभावित समस्या है क्योंकि man gethostbyaddrसिस्टम कॉल /etc/hostsएक आईपी पते को नाम के साथ जोड़ने के लिए उपयोग कर सकता है । यद्यपि बहुत अधिक सामान्य मामला अन्य तरीके से होता है (नाम से पता प्राप्त करें), इस बारे में जागरूक रहें क्योंकि कुछ भी मजेदार होता है।


जैसा कि मुझे संदेह था, लेकिन यह सुनिश्चित करना चाहता था कि इस पर महान प्रलेखन नहीं लगता है। मैं इस बारे में भी अनिश्चित था कि क्या कुछ अतिरिक्त-सख्त यूनिक्स वितरणों के साथ अधिक मुद्दे हो सकते हैं। मैं आपको जल्द ही उत्तर देने का श्रेय दूंगा अगर कोई और अलग रुख के साथ झंकार न करे।
17

खैर, बिंदु slmबनाता है विचार करने योग्य है; शायद इस प्रणाली का उपयोग इस तरह से नहीं किया जाना चाहिए था। मैं इसे करता रहूंगा (nb मैं ज्यादातर इसका उपयोग केवल 127.0.0.1 के लिए करता हूं, इसलिए मैं स्थानीय होस्ट कॉन्फ़िगरेशन को संशोधित किए बिना चीजों को स्थानीय रूप से ट्रांसप्लांट और परीक्षण कर सकता हूं), लेकिन मैंने पिछले पैराग्राफ में एक चेतावनी जोड़ दी है।
गोल्डीलॉक्स

वास्तव में मैंने इसे "एक संभावित समस्या" के रूप में ध्यान में रखते हुए संपादित किया है ...
सोने का टुकड़ा

0

Apache 2.4 ने मेरे यूनिक्स सिस्टम को शुरू करने से इनकार कर दिया। मूल कारण / etc / मेजबान में डुप्लिकेट लाइनें थीं। डुप्लिकेट लाइन को हटाने के बाद मैं वेब सर्वर शुरू करने में सक्षम था।


4
यह उपयोगी जानकारी है, लेकिन इस साइट के दिशानिर्देशों के अनुसार उत्तर के बजाय शायद एक टिप्पणी होनी चाहिए।
एलेक्सा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.