CentOS 7.0 पर पूरी तरह से योग्य होस्टनाम कैसे सेट करें?


19

मैं CentOS 7.0 पर पूरी तरह से योग्य होस्टनाम कैसे सेट करूं?

मैंने उदाहरण के लिए ऑनलाइन कुछ पोस्ट देखे हैं:

$ sudo hostnamectl set-hostname nodename.domainname

हालाँकि, चल रहा डोमेन नाम कुछ भी नहीं देता है:

$ domainname
(none)

इसके अलावा:

$ hostname
nodename.domainname

तथापि,

$ hostname -f
hostname: Name or service not known
$ hostname -d
hostname: Name or service not known

कुछ डिबग आउटपुट:

$ cat /etc/hostname
nodename.domainname

$ grep ^hosts /etc/nsswitch.conf
hosts:      files dns

जवाबों:


30

होस्टनाम सेट करने के लिए उपयोग करें hostnamectl, लेकिन केवल होस्टनाम के साथ, जैसे:

hostnamectl set-hostname nodename


सेट करने के लिए (DNS) domainname संपादित /etc/hostsफ़ाइल और सुनिश्चित करें कि:

  1. वहां एक लाइन <machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>है
  2. वहाँ नहीं के साथ अन्य लाइनें हैं <some IP> <hostname>, और इस के साथ लाइनें शामिल हैं 127.0.0.1और ::1(IPv6) पतों।

ध्यान दें कि जब तक आप एनआईएस का उपयोग नहीं कर रहे हैं, कमांड (none)चलाते समय सही आउटपुट है domainname

यह जाँचने के लिए कि क्या आपका DNS डोमेननाम सही ढंग से सेट है dnsdomainnameऔर hostnameबनाम hostname -f(FQDN) के आउटपुट की जाँच करें ।


एनआईएस बनाम डीएनएस डोमेन

जब मैंने पहली बार इसे देखा तो इस मुद्दे ने मुझे उलझन में डाल दिया। ऐसा लगता है कि domainnameकमांड इंटरनेट की लोकप्रियता का अनुमान लगाता है। डीएनएस डोमेन नाम के बजाय, यह सिस्टम के एनआईएस (नेटवर्क सूचना सेवा) उर्फ वाईपी (येलो पेज) डोमेन नाम (कंप्यूटर का एक समूह जिसमें मास्टर एनआईएस सर्वर द्वारा प्रदान की गई सेवाएं हैं) दिखाता या सेट करता है । यह कमांड केवल getdomainname(2)मानक लाइब्रेरी फ़ंक्शन द्वारा लौटाए गए नाम को प्रदर्शित करता है । ( nisdomainnameऔर ypdomainnameइस कमांड के लिए वैकल्पिक नाम हैं।)

FQDN या DNS डोमेन नाम प्रदर्शित करें

DNS (इंटरनेट) डोमेन नाम की जांच करने के लिए , आपको dnsdomainnameकमांड या विकल्पों के hostnameसाथ चलना चाहिए -d, --domain। (ध्यान दें कि dnsdomainnameडीएनएस डोमेन नाम सेट करने के लिए कमांड का उपयोग नहीं किया जा सकता है - यह केवल इसे प्रदर्शित करने के लिए उपयोग किया जाता है।)

सिस्टम के FQDN (पूरी तरह से योग्य डोमेन नाम) को प्रदर्शित करने के लिए, विकल्पों के hostnameसाथ चलाएं -f, --fqdn, --long(इसी तरह, इस कमांड का उपयोग डोमेन नाम भाग को सेट करने के लिए नहीं किया जा सकता है)।

gethostbyname(3)डीएनएस डोमेन नाम और FQDN को निर्धारित करने के लिए उपरोक्त कमांड सिस्टम के रिसॉल्वर ( मानक लाइब्रेरी से फ़ंक्शन द्वारा कार्यान्वित , POSIX द्वारा निर्दिष्ट) का उपयोग करते हैं।

नाम का संकल्प

आरएचईएल 7 जैसे आधुनिक ऑपरेटिंग सिस्टम में, hostsप्रविष्टि /etc/nsswitch.confका उपयोग मेजबान नामों को हल करने के लिए किया जाता है। आपके CentOS 7 मशीन में, यह पंक्ति इस रूप में कॉन्फ़िगर की गई है (CentOS 7 के लिए डिफ़ॉल्ट):

hosts:      files dns

इसका मतलब यह है कि जब रिज़ॉल्वर फ़ंक्शंस होस्टनाम या आईपी पते को देखता है, तो वे पहले /etc/hosts फ़ाइल में एक प्रविष्टि की जांच करते हैं और इसके बाद DNS सर्वर (एस) को सूचीबद्ध करते हैं /etc/resolv.conf

hostname -fहोस्ट के FQDN को प्राप्त करने के लिए दौड़ते समय , रिज़ॉल्वर फ़ंक्शन सिस्टम के होस्टनाम के लिए FQDN प्राप्त करने का प्रयास करता है। यदि होस्ट /etc/hostsफ़ाइल में या प्रासंगिक DNS सर्वर द्वारा सूचीबद्ध नहीं है, तो प्रयास विफल हो जाता है और hostnameरिपोर्ट करता है Name or service not known

जब hostname -dडोमेन नाम प्राप्त करने के लिए चलाया जाता है, तो वही ऑपरेशन किए जाते हैं, और होस्टनाम भाग और FQDN से पहली डॉट को अलग करके डोमेन नाम भाग निर्धारित किया जाता है।

डोमेन नाम कॉन्फ़िगर करें

1. प्रासंगिक DNS नाम सर्वर को अपडेट करें

मेरे मामले में, मैंने अपने स्थानीय LAN के लिए DNS सर्वर में अपनी नई CentOS 7 मशीन के लिए एक प्रविष्टि पहले ही जोड़ दी थी, जब FQDN /etc/hostsफ़ाइल में नहीं मिला था जब मैं या विकल्प के hostnameसाथ भाग गया था , स्थानीय DNS सेवाओं में सक्षम थे मेरे नए होस्टनाम के लिए FQDN को पूरी तरह से हल करें।-d-f

2. /etc/hostsफ़ाइल का उपयोग करें

यदि DNS सर्वर कॉन्फ़िगर नहीं किया गया है, तो पूरी तरह से योग्य डोमेन नाम /etc/hostsफ़ाइल में निर्दिष्ट किया जा सकता है । ऐसा करने का सबसे आम तरीका है कि सिस्टम के प्राथमिक आईपी पते को उसके FQDN और उसके लघु होस्टनाम के बाद निर्दिष्ट किया जाए। उदाहरण के लिए,

172.22.0.9  nodename.domainname nodename

hostnameमैन पेज से अंश

आप FQDN को hostnameया के साथ बदल नहीं सकते dnsdomainname

FQDN को सेट करने की अनुशंसित विधि होस्टनाम को /etc/hosts,DNS, या NIS का उपयोग करके पूरी तरह से योग्य नाम के लिए एक अन्य नाम है । उदाहरण के लिए, यदि hostname "ursula" था, तो एक पंक्ति हो सकती है /etc/hostsजिसमें लिखा हो:

27.0.1.1    ursula.example.com ursula

तकनीकी रूप से: FQDN नाम है getaddrinfo (3) gethostname (2) द्वारा लौटाए गए होस्ट नाम के लिए। डीएनएस डोमेन नाम पहले डॉट के बाद का हिस्सा है।

इसलिए यह रिज़ॉल्वर (आमतौर पर /etc/host.conf) में कॉन्फ़िगरेशन पर निर्भर करता है कि आप इसे कैसे बदल सकते हैं। आमतौर पर होस्ट फ़ाइल को DNS या NIS से पहले पार्स किया जाता है, इसलिए FQDN को बदलना सबसे आम है /etc/hosts


आपके उत्तर के लिए धन्यवाद। मैंने सवाल अपडेट किया है - दुर्भाग्य से hostname -fकमांड मेरे CentOS vm पर काम नहीं करता है।
क्रिस स्नो

@SHC क्या आप अपने प्रश्न को संपादित कर सकते हैं जिसमें /etc/hostnameऔर की सामग्री भी शामिल है grep ^hosts: /etc/nsswitch.conf? मैं नेटवर्क मैनेजर के बारे में ज्यादा नहीं जानता, लेकिन मैंने यह भी देखा कि मेरे हिस्से /etc/NetworkManager/NetworkManager.confमें एक लाइन है :। [keyfile]hostname=<nodename>
एंथनी जी -

1
@SHC मैं तब से इस मुद्दे पर शोध कर रहा हूं, और मौलिक रूप से मेरे उत्तर को संशोधित कर रहा हूं; इसे अब आपके प्रश्न को अधिक व्यापक रूप से संबोधित करना चाहिए।
एंथनी जी -

इस उत्तर का नेतृत्व शरीर के साथ असंगत है। DNS डोमेन नाम सेट नहींhostnamectl set-hostname nodename.domainname करता है (और ऐसा नहीं है कि यह NIS डोमेन नाम या तो सेट करता है)।
स्रोतजेडी

@sourcejedi मेरे पास इस समय समय नहीं है लेकिन मौका मिलने पर मैं अपना जवाब स्पष्ट करने की कोशिश करूंगा।
एंथनी जी -

1

Centos7 पर होस्टनाम सेट करने के लिए nmtui का उपयोग करके और nodename.domainname / FQDN प्रारूप प्रदान करने से लगातार परिणाम मिल रहे हैं। होस्टनाम [d / f / s] सभी सही अपेक्षित परिणाम प्रदान करते हैं। यह /etc/resolv.conf OR / etc / मेजबान में संग्रहीत नहीं है। लेकिन FQDN को सिंगल लाइन एंट्री के रूप में / etc / hostname लिखा जाता है।


0

मेरे लिए, / etc / hostname फ़ाइल में hostname (जैसे, hostname.example.com के बजाय hostname) के बजाय FQDN था। एक बार जब मैंने डोमेन को होस्टनाम / in / etc / hostname से हटा दिया तो 'hostname -f' कमांड ने सामान्य रूप से काम किया।

मुझे लगता है कि यह पेश किया गया था क्योंकि मैंने CentOS 7 VM स्थापित किया था। मुझे केवल होस्टनाम दर्ज करना चाहिए था, न कि पूरी तरह से योग्य डोमेन नाम।

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