अपने होस्टनाम का उपयोग करके लैन से मशीन को कैसे सुलभ बनाया जाए


120

यहां उस मशीन का विवरण दिया गया है जिसका उपयोग मैं अपने होस्टनाम का उपयोग करके करना चाहता हूं:

$ hostname
hostname
$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   hostname.company.local  hostname

यह एक डिफ़ॉल्ट डेबियन 6 (निचोड़) स्थापित है, इसलिए मैंने अभी तक कुछ भी नहीं किया है।

यह वही है जो मैं मशीन से प्राप्त करता हूं (डेबियन अनस्टेबल चल रहा है) मशीन से ऊपर पहुंचने की कोशिश कर रहा है:

$ ping hostname
ping: unknown host hostname
$ ping hostname.company.local
ping: unknown host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local

आपको क्लाइंट (मशीन जहां आप चलाते हैं ping) पर, या ग्राहक को सलाह देने वाली मशीन पर कुछ करने की जरूरत है । क्लाइंट पर OS क्या है? इसका DNS कॉन्फ़िगरेशन क्या है?
गिल्स

DNS कॉन्फ़िगरेशन क्या है? इसके अलावा, अद्यतन पोस्ट देखें।
tshepang

1
क्या मेरा जवाब है कि आप किस तरह के थे? जो के बारे में जानता है - यदि हां, तो प्रश्न को सरल बनाने की जरूरत है pingऔर /etc/hostsलेकिन डीएनएस के बारे में नहीं वैसे भी?
गिल्स

बहुत बहुत धन्यवाद। नजर होगी। ओह, और यह एक उत्तर की तुलना में अधिक लेख है :)
tshepang

3
जवाब "स्थापित और dnsmasq कॉन्फ़िगर" है। किया हुआ। :)
वॉरेन यंग

जवाबों:


145

इंटरनेट पर, स्थानीय नेटवर्क सहित, मशीनें एक दूसरे को आईपी ​​पते से बुलाती हैं । मशीन B के नाम का उपयोग करके मशीन A से मशीन B तक पहुँचने के लिए, मशीन A के पास B के नाम को उसके IP पते पर मैप करने का कोई तरीका है। A पर मशीन के नाम घोषित करने के तीन तरीके हैं:

  • एक होस्ट फ़ाइल । यह एक साधारण पाठ फ़ाइल है जो पतों के नामों को मैप करती है।
  • डोमेन नाम प्रणाली (DNS) । यह वैश्विक इंटरनेट पर उपयोग की जाने वाली विधि है। उदाहरण के लिए, जब आप इस पृष्ठ को किसी ब्राउज़र में लोड करते हैं, तो आपके कंप्यूटर पर पहली बात यह है कि इसका पता जानने के लिए DNS अनुरोध करना चाहिए unix.stackexchange.com
  • अन्य नाम डेटाबेस जैसे NIS , LDAP या सक्रिय निर्देशिका । ये कुछ कॉर्पोरेट नेटवर्क में उपयोग किए जाते हैं, लेकिन बहुत बार नहीं (कई नेटवर्क जो उपयोगकर्ता डेटाबेस के लिए एनआईएस, एलडीएपी या एडी का उपयोग करते हैं, DNS का उपयोग नामों के लिए करते हैं)। यदि आपका नेटवर्क इनमें से किसी एक का उपयोग करता है, तो आपके पास एक पेशेवर नेटवर्क व्यवस्थापक है और उससे पूछना चाहिए कि क्या करना है।

ऐसे कई तरीके हैं जिनसे ये व्यवहार में काम कर सकते हैं; उन सभी को कवर करना असंभव है। इस उत्तर में, मैं कुछ सामान्य स्थितियों का वर्णन करूँगा।

होस्ट फ़ाइल

मेजबानों फ़ाइल विधि का यह फायदा है कि इसके लिए किसी विशेष विधि की आवश्यकता नहीं होती है। यदि आपके पास कई मशीनें हैं, तो यह बोझिल हो सकता है, क्योंकि एक मशीन का नाम बदलने पर आपको हर मशीन को अपडेट करना होगा। यह उपयुक्त नहीं है यदि बी का आईपी पता गतिशील रूप से सौंपा गया है (ताकि आपको नेटवर्क से कनेक्ट होने पर हर बार एक अलग मिल जाए)।

एक होस्ट फ़ाइल आईपी पते के नाम मैपिंग लाइनों की एक सरल सूची है। यह इस तरह दिख रहा है:

127.0.0.1       localhost localhost.localdomain
198.51.100.42   darkstar darkstar.bands

यूनिक्स सिस्टम पर, होस्ट फ़ाइल है /etc/hosts। विंडोज पर, यह है c:\windows\system32\drivers\etc\hosts। बस हर ऑपरेटिंग सिस्टम के बारे में जिसे आप इंटरनेट से कनेक्ट कर सकते हैं एक समान फ़ाइल है; विकिपीडिया की एक सूची है

A की होस्ट फ़ाइल में B के लिए एक प्रविष्टि जोड़ने के लिए:

  1. बी। बी। का आईपी पता निर्धारित करें, कमांड चलाएं ifconfig(यदि कमांड नहीं मिली है, तो कोशिश करें /sbin/ifconfig)। आउटपुट में इस तरह की लाइनें होंगी:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
              inet addr:10.3.1.42  Bcast:10.3.1.255  Mask:255.255.255.0
    

    इस उदाहरण में, B का IP पता 10.3.1.42 है। यदि कई inet addr:लाइनें हैं, तो अपने नेटवर्क कार्ड से मेल खाने वाले को चुनें, कभी भी loप्रवेश या सुरंग या आभासी प्रवेश न करें।

  2. मेजबान फ़ाइल को ए पर संपादित करें। यदि ए कुछ यूनिक्स प्रणाली चला रहा है, तो आपको /etc/hostsसुपर उपयोगकर्ता के रूप में संपादित करना होगा ; देखें कि मैं सिस्टम एडमिनिस्ट्रेटर (रूट) के रूप में कमांड कैसे चलाता हूं

घर या छोटे कार्यालय नेटवर्क पर डीएचसीपी + डीएनएस

यदि आपके पास आवश्यक उपकरण हैं तो यह विधि सबसे सरल है। आपको केवल एक डिवाइस को कॉन्फ़िगर करने की आवश्यकता है, और आपके सभी कंप्यूटर एक-दूसरे के नाम के बारे में जानेंगे। यह विधि मानती है कि आपके कंप्यूटर को डीएचसीपी पर अपने आईपी पते मिलते हैं , जो कंप्यूटर से नेटवर्क से जुड़ने पर आईपी पते को स्वचालित रूप से प्राप्त करने की एक विधि है। यदि आप नहीं जानते कि डीएचसीपी क्या है, तो वे शायद करते हैं।

यदि आपके नेटवर्क में होम राउटर है , तो यह उस राउटर से जुड़ी मशीनों के लिए नामों को कॉन्फ़िगर करने के लिए सबसे अच्छी जगह है। सबसे पहले, आपको बी के मैक पते का पता लगाने की आवश्यकता है । प्रत्येक नेटवर्क डिवाइस में एक अद्वितीय मैक पता होता है। बी पर, कमांड चलाएं ifconfig -a(यदि कमांड नहीं मिला है, तो प्रयास करें /sbin/ifconfig -a)। आउटपुट में इस तरह की लाइनें होंगी:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab

इस उदाहरण में मैक एड्रेस है 01:23:45:67:89:ab। आपको HWaddr लाइन को चुनना होगा जो नेटवर्क पोर्ट से मेल खाती है जो एक केबल के माध्यम से राउटर से जुड़ा हुआ है (या यदि आप वाईफाई से जुड़े हैं तो वाईफाई कार्ड)। यदि आपके पास कई प्रविष्टियाँ हैं और आपको नहीं पता है कि कौन सा है, तो केबल को प्लग करें और देखें कि कौन सा नेटवर्क डिवाइस एक आईपी पता प्राप्त करता है ( inet addrनीचे बस पंक्ति)।

अब, अपने राउटर के वेब इंटरफेस पर, "डीएचसीपी" जैसी सेटिंग देखें। सेटिंग का नाम और स्थान पूरी तरह से राउटर मॉडल पर निर्भर है, लेकिन अधिकांश में मूल सेटिंग्स का एक समान सेट है। यह एक टमाटर फर्मवेयर पर कैसा दिखता है :

टमाटर स्क्रीनशॉट

मैक पते, एक आईपी पते और वांछित नाम दर्ज करें। आप अपने स्थानीय नेटवर्क की पता सीमा पर कोई भी IP पता चुन सकते हैं। अधिकांश होम राउटर्स फॉर्म 192.168 की एड्रेस रेंज के लिए पूर्व-निर्धारित हैं। xy या 10. xजेड । उदाहरण के लिए, ऊपर दिखाए गए टमाटर राउटर पर, "नेटवर्क" टैब में, 10.3.0.1 मान के साथ एक "राउटर आईपी एड्रेस" सेटिंग है और 255.255.255.0 मान के साथ एक "सबनेट मास्क" सेटिंग है, जिसका मतलब है कि कंप्यूटर स्थानीय नेटवर्क के पास प्रपत्र 10.3.0 का पता होना चाहिए। जेड । स्वचालित रूप से निर्दिष्ट डीएचसीपी पते (10.3.0.129–10.3.0.254) के लिए कई पते हैं; अपने मैन्युअल रूप से निर्दिष्ट डीएचसीपी पते के लिए, वह चुनें जो इस सीमा में नहीं है।

अब बी को नेटवर्क से कनेक्ट करें, और इसे आपके द्वारा निर्दिष्ट आईपी पता प्राप्त करना चाहिए और यह नेटवर्क में किसी भी मशीन से निर्दिष्ट नाम से पहुंच योग्य होगा।

Dnsmasq के साथ अपना DNS सर्वर बनाएं

यदि आपके पास सक्षम होम राउटर नहीं है, तो आप किसी भी लिनक्स मशीन पर समान कार्यक्षमता सेट कर सकते हैं। DNS को सेट करने के लिए Dnsmasq का उपयोग करने का तरीका बताऊंगा । इसी तरह के कई अन्य कार्यक्रम हैं; मैंने Dnsmasq को चुना क्योंकि यह कॉन्फ़िगर करना आसान है और हल्का है (यह टमाटर राउटर उदाहरणों के लिए ऊपर वर्णित है)। Dnsmasq पीसी, सर्वर और नेटवर्क उपकरणों के लिए अधिकांश लिनक्स और बीएसडी वितरण पर उपलब्ध है।

एक कंप्यूटर चुनें जो हमेशा चालू हो, जिसमें एक स्थिर आईपी पता हो, और वह किसी प्रकार का लिनक्स या बीएसडी चला रहा हो; चलो इसे एस (सर्वर के लिए) कहते हैं। एस पर, dnsmasqपैकेज स्थापित करें (यदि यह पहले से ही नहीं है)। नीचे मैं मानूंगा कि कॉन्फ़िगरेशन फ़ाइल है /etc/dnsmasq.conf; स्थान कुछ वितरण पर भिन्न हो सकते हैं। अब आपको कई काम करने की जरूरत है।

  • बताएं कि इंटरनेट से मिलने वाली चीजों के अलावा अपने होस्ट नामों की सेवा करने के लिए Dnsmasq करें। सबसे सरल तरीका है कि नाम और आईपी पते दर्ज करें /etc/hosts(ऊपर "होस्ट फ़ाइल देखें" अनुभाग), और यह सुनिश्चित करें कि निर्देश अप्रमाणित /etc/dnsmasq.confनहीं है no-hosts। (लाइनें जो एक #टिप्पणी के साथ शुरू होती हैं।) आप नामों को एक अलग फ़ाइल में रख सकते हैं; यदि आप ऐसा करते हैं, तो एक पंक्ति addn-hosts=/path/to/hosts/fileअंदर रखें /etc/dnsmasq.conf
  • इंटरनेट पर मशीनों के नामों के लिए आईपी पते कैसे प्राप्त करें

    • यदि आप डेबियन, उबंटू या एक व्युत्पन्न चला रहे हैं, तो resolvconfपैकेज स्थापित करें । ज्यादातर सामान्य मामलों में, सब कुछ बॉक्स से बाहर काम करेगा।
    • यदि आपके नेटवर्क व्यवस्थापक या आपके ISP ने आपको DNS सर्वरों के पते दिए हैं, तो उन्हें /etc/dnsmasq.confउदाहरण के लिए दर्ज करें :

      server=8.8.8.8
      server=8.8.4.4
      
    • यदि आपको नहीं पता कि आपकी वर्तमान DNS सेटिंग्स क्या हैं, तो फ़ाइल में देखें /etc/resolv.conf। यदि आपको एक पंक्ति दिखाई देती है nameserver 8.8.8.8, तो एक पंक्ति server=8.8.8.8अंदर डालें /etc/dnsmasq.conf। आपके बदलने के बाद /etc/dnsmasq.conf, Dnsmasq को पुनरारंभ करें। ऐसा करने के लिए आदेश वितरण पर निर्भर करता है; विशिष्ट संभावनाओं में शामिल हैं restart dnsmasqया /etc/init.d/dnsmasq restart

  • बताएं S सभी होस्ट नाम अनुरोधों के लिए Dnsmasq सेवा का उपयोग करें। फ़ाइल को संपादित करें /etc/resolv.conf(रूट के रूप में), हर nameserverपंक्ति को हटा दें , और nameserver 127.0.0.1इसके बजाय डाल दें ।
    • यदि आप डेबियन या उबंटू पर रिसोल्वॉन्फ का उपयोग कर रहे हैं, /etc/resolv.confतो यदि आपने resolvconfनेटवर्क के साथ पैकेज को स्थापित किया है और चल रहा है , तो यह सबॉप्टीमल हो सकता है । सुनिश्चित करें कि फ़ाइलें बनाओ base, headऔर tailमें /etc/resolvconf/resolv.conf.d/निर्देशिका किसी भी शामिल नहीं है nameserverप्रविष्टियों, तो चलाने resolvconf -u(रूट के रूप में)।
  • अन्य मशीनों को S को DNS सर्वर के रूप में उपयोग करने के लिए कहें। /etc/resolv.confसभी nameserverलाइनों को एक एकल के साथ संपादित करें और प्रतिस्थापित करें nameserver 10.3.0.2जहां 10.3.0.2 एस का आईपी पता है (एस के आईपी पते का पता लगाने के लिए ऊपर देखें)।

आप Dnsmasq को DHCP सर्वर के रूप में भी उपयोग कर सकते हैं , ताकि मशीनें अपने नाम के अनुरूप पता अपने आप प्राप्त कर सकें। यह इस उत्तर के दायरे से परे है; Dnsmasq प्रलेखन से परामर्श करें (यह मुश्किल नहीं है)। ध्यान दें कि किसी दिए गए स्थानीय नेटवर्क पर केवल एक ही डीएचसीपी सर्वर हो सकता है (स्थानीय नेटवर्क की सटीक परिभाषा इस उत्तर के दायरे से परे है)।

वैश्विक इंटरनेट पर नाम

अब तक, मैंने एक स्थानीय नेटवर्क मान लिया है। क्या होगा अगर आप एक ऐसी मशीन को नाम देना चाहते हैं जो दुनिया के किसी अलग कोने में हो? आप अभी भी ऊपर दी गई किसी भी तकनीक का उपयोग कर सकते हैं, सिवाय इसके कि डीएचसीपी वाले भाग केवल एक स्थानीय नेटवर्क के भीतर लागू होते हैं। वैकल्पिक रूप से, यदि आपकी मशीनों में सार्वजनिक आईपी पते हैं, तो आप उनके लिए अपना स्वयं का सार्वजनिक नाम पंजीकृत कर सकते हैं। (आप एक निजी आईपी पते को एक सार्वजनिक नाम पर भी असाइन कर सकते हैं, यह कम सामान्य और कम उपयोगी है, लेकिन कोई तकनीकी कठिनाई नहीं है।)

अपना खुद का डोमेन नाम प्राप्त करना

आप इस डोमेन के अंदर नामों को होस्ट करने के लिए अपना स्वयं का डोमेन नाम प्राप्त कर सकते हैं और आईपी पते निर्दिष्ट कर सकते हैं । आपको डोमेन नाम प्रदाता के साथ डोमेन नाम पंजीकृत करने की आवश्यकता है; यह आमतौर पर $ 10- $ 15 / वर्ष (सबसे सस्ता डोमेन के लिए) खर्च होता है। अपने डोमेन नाम प्रदाता के वेब इंटरफेस का उपयोग करें नाम होस्ट करने के लिए पते असाइन करें।

डायनेमिक डीएनएस

यदि आपकी मशीनों में एक गतिशील आईपी पता है, तो आप पते के बदलते समय मशीन के नाम से जुड़े आईपी पते को अपडेट करने के लिए गतिशील DNS प्रोटोकॉल का उपयोग कर सकते हैं । सभी डोमेन नाम प्रदाता डायनेमिक DNS का समर्थन नहीं करते हैं, इसलिए खरीदने से पहले खरीदारी करें। यदि आप अपने स्वयं के डोमेन (जैसे ) का उपयोग करते हैं, तो निजी उपयोग के लिए, नो-आईपी एक मुफ्त गतिशील डीएनएस सेवा प्रदान करता है example.ddns.net


Dnsmasq के साथ अपना खुद का DNS सर्वर बनाएं: S का उपयोग करने के लिए मैं दूसरी मशीन को कैसे बता सकता हूं, जब दूसरी मशीन में Windows स्थापित हो
Radu Rădeanu

@Radu आप कंट्रोल पैनल के माध्यम से कनेक्शन के साथ जुड़े DNS सर्वरों को कहीं भी बदल सकते हैं। मुझे लगता है कि आपको नेटवर्क इंटरफ़ेस के कनेक्शन गुणों को खींचने की आवश्यकता है।
गाइल्स

मैंने c: \ windows \ system32 \ driver \ etc \ Host को होस्ट किया और यह काम करता है। धन्यवाद!
राडू रियडेनू

मैं अपने बालों को बाहर खींच रहा था और इस तरह इसे राउटर में पाया जैसे आपने सुझाव दिया था। विस्तृत जानकारी के लिए धन्यवाद!
जेसन तुरान

यदि यह एक कंपनी नेटवर्क है, तो मुझे बुनियादी ढांचा विभाग को बताना होगा। DNS सर्वर सूची में मेरा लिनक्स मैक जोड़ने के लिए, सही?
पश्चिमीगुन

24

मल्टीकास्ट डीएनएस (mDNS) का उपयोग करें । यह एक शून्य-कॉन्फ़िगरेशन प्रोटोकॉल है जो LAN सबनेट पर काम करता है। कोई सर्वर की आवश्यकता है। .localTLD का उपयोग करता है (जो कि आप पहले से ही उपयोग करते हैं)।

क्योंकि आप पूछ रहे हैं, बाकी सब कुछ ओवरकिल लगता है। अगर यह नहीं था, तो आप शायद नहीं पूछेंगे।


1
mDNS हर विंडोज बॉक्स पर कुछ स्थापित किए बिना विंडोज पर समर्थित नहीं लगता है।
ज़िट्रैक्स

1
@Zitrax अच्छा बिंदु (हालांकि यह एक * निक्स साइट है)। विंडोज सेटअप के लिए प्रासंगिक जानकारी वहां मिल सकती है - अपेक्षाकृत सीधी।
tain

3
आका ज़र्कोनफ़ या बोन्जौर। avahiपैकेज द्वारा प्रदान किया गया । आप avahi-browse -alrउदाहरण के लिए अपने नेटवर्क को क्वेरी कर सकते हैं ।
दानमेन

4
vi /etc/dhcp3/dhclient.conf

send host-name "ubuntu-laptop";

तथा

/etc/init.d/networking restart

क्या मुझे इसे क्लाइंट या होस्ट पर चलाना चाहिए?
tshepang

पहला बिट dhcp सर्वर पर किया जाएगा (और आप चलाना चाहते हैं service restart dhcpd)। दूसरा भाग क्लाइंट पर किया जाएगा, और अब अधिकांश डिस्ट्रोस के रूप में चलाया जाना चाहिए service networking restart
कालेब

जैसा कि मुझे याद है कि मुझे केवल क्लाइंट पक्ष पर इसे चलाने की आवश्यकता है ..
लांसबैन्स

3

कंप्यूटर केवल जादुई रूप से नहीं जानते हैं कि होस्टनाम क्या आईपी पते से संबंधित हैं। यहां तक ​​कि लोकलहोस्ट पर भी किसी तरह का लुक शामिल है।

किसी प्रकार की नाम खोज सेवा का उपयोग करने के लिए आपको अपने अन्य सिस्टम को कॉन्फ़िगर करने की आवश्यकता होगी। यह /etc/hostsक्लाइंट, ldap, nsswitch, या सामान्य DNS सर्वरों पर हो सकता है। मैं bindएक स्थानीय डोमेन के अंदर सभी स्थानीय मशीनों का उपयोग करता हूं और दर्ज करता हूं , फिर क्या यह उस साइट के लिए डीएनएस है।

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