क्या अवही को लैन पर "एनीकास्ट नाम रेजोल्यूशन" लागू करने का कोई तरीका है?


9

सबसे पहले, कुछ पृष्ठभूमि: हमें एक प्रयोगशाला मिली है जिसमें समर्पित लिनक्स सर्वर हैं जो एक पृथक LAN पर चलते हैं। सभी सर्वर एक ही ओएस (डेबियन लिनक्स) और एक ही मालिकाना सर्वर सॉफ्टवेयर चलाते हैं, और सर्वर प्रक्रियाएं अपने डेटा को सिंक में रखने के लिए एक दूसरे के साथ संवाद करती हैं। इसका मतलब है कि जहां तक ​​किसी भी ग्राहक का संबंध है, इससे कोई फर्क नहीं पड़ता कि ग्राहक किस सर्वर से जुड़ता है - कोई भी सर्वर किसी अन्य के समान डेटा लौटाएगा।

ये लिनक्स सर्वर सभी अपने लिए mDNS होस्टनाम प्रकाशित करने के लिए अवही-डेमॉन चलाते हैं, जिसका अर्थ है कि एक ग्राहक उदा " http: //linux-server-1.local " दर्ज कर सकता है । अपने वेब ब्राउज़र में और लिनक्स सर्वर # 1 से कनेक्ट करें, और इसी तरह।

यह सब अच्छी तरह से और अच्छा है, इसके अलावा इसका मतलब है कि ग्राहक मशीन पर बैठे उपयोगकर्ता (आमतौर पर एक मैक या विंडोज के साथ बोंजोर स्थापित) को यह जानना होगा (या पता लगाना) कि कौन से लिनक्स सर्वर वर्तमान में ऑनलाइन हैं, और उसे क्या करना है सुनिश्चित करें कि वह उनमें से एक से जुड़ता है। उदाहरण के लिए, यदि सर्वर # 2 आज ऑफ़लाइन है, और क्लाइंट " http: //linux-server-2.local " में प्रवेश करता है । अपने URL बार में, उसे कोई प्रतिक्रिया नहीं मिलने वाली है। यह निश्चित रूप से दुनिया का अंत नहीं है, लेकिन यह नौसिखिया उपयोगकर्ताओं के लिए कष्टप्रद है जो "बस काम" के लिए सब कुछ की उम्मीद करते हैं, और यह मजबूत क्लाइंट-साइड स्क्रिप्टिंग के विकास को और अधिक जटिल बनाता है (क्लाइंट-साइड स्क्रिप्ट के बाद से स्पष्ट रूप से ऑफ़लाइन सर्वर से निपटने का तरीका जानने की आवश्यकता होगी)।

इस बात को ध्यान में रखते हुए, मेरा प्रश्न यह है कि क्या अवही को कॉन्फ़िगर करने के लिए एनाकास्ट शैली mDNS होस्टनाम उर्फ ​​के रूप में अच्छी तरह से प्रकाशित करना संभव है? लक्ष्य यह है कि कोई भी अपने लैपटॉप के साथ बैठ सकता है, " http: //any-linux-server.local " दर्ज करें । (या समान), और एक सर्वर से जुड़ा हुआ है जो वर्तमान में लाइन पर है (फिर से, यह कोई फर्क नहीं पड़ता कि कौन सा है)।

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

यह भी ध्यान दें कि हम एक अलग नेमसर्वर या प्रॉक्सी बॉक्स की उपस्थिति पर या किसी विशेष लिनक्स सर्वर की उपस्थिति पर भरोसा नहीं कर सकते हैं, क्योंकि यह विफलता के एक बिंदु को पेश करेगा, जिसे हम बचने की कोशिश कर रहे हैं।

जवाबों:


13

ट्रेंट लॉयड यहां, अवही परियोजना के लेखकों में से एक हैं।

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

ऐसा करना संभव है यदि आप ए रिकॉर्ड करने के लिए मैन्युअल रूप से प्रकाशित करने के लिए अवही एपीआई का उपयोग करते हैं, और इसे गैर-अनन्य के रूप में चिह्नित करते हैं। आपको पायथन, C या इसी तरह के प्रत्येक सर्वर के लिए एक छोटी पृष्ठभूमि प्रक्रिया लिखनी होगी।

उपयोग करने के लिए API कॉल avahi_entry_group_add_record है, और आपको AVAHI_PUBLISH_ALLOW_MULTIPLE को फ़्लैग फ़ील्ड में पास करना होगा। इसके बाद काम करना चाहिए।

एक विकल्प यह है कि जिस तरह से इरादा किया गया था, उस तरह से सेवा खोज का उपयोग करें और प्रत्येक ग्राहक को HTTP सेवा प्रकाशित करें, और घोषित वेब सेवाओं को ब्राउज़ करने के लिए फ़ायरफ़ॉक्स प्लगइन या इसी तरह का उपयोग करें। या किसी और तरह का सर्विस ब्राउजर।

बॉनजोर इंटरनेट एक्सप्लोरर के लिए एक प्लगइन को शामिल करने के लिए एक बुकमार्क बार की तरह करता था, मुझे यकीन नहीं है कि यह अभी भी करता है।


2
मुझे यह काम करने के लिए मिला, धन्यवाद! अगर किसी को दिलचस्पी है, तो मैंने यहाँ C स्रोत कोड पोस्ट किया है: public.msli.com/lcs/jaf/publish_cnames.c
जेरेमी फ्रेज़र

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