DNS / Hostnames का उपयोग कैसे करें या किसी विशिष्ट IP को हल करने के अन्य तरीके: पोर्ट


51

यह IP / पोर्ट के DNS / होस्टनाम रिज़ॉल्यूशन के बारे में एक कैननिकल प्रश्न है

उदाहरण 1

मैं पोर्ट 80 पर एक वेब सर्वर और पोर्ट 87 पर एक और चल रहा हूं। मैं DNS का उपयोग करना चाहूंगा ताकि www.example.com 87 पोर्ट पर जाए। मैं केवल DNS का उपयोग करके इसे कैसे पूरा कर सकता हूं?

उदाहरण 2

मैं अपने सर्वर पर एक गैर-मानक पोर्ट पर एक सेवा चला रहा हूं। मैं इस गैर-मानक पोर्ट से स्वचालित रूप से कनेक्ट करने के लिए क्लाइंट कैसे प्राप्त कर सकता हूं? क्या मैं DNS का उपयोग कर सकता हूं? क्या कुछ एप्लिकेशन विशिष्ट समर्थन है जहां DNS आईपी और पोर्ट का संकेत दे सकता है?

उदाहरण 3

क्या कुछ एप्लिकेशन प्रोटोकॉल विशेष रूप से होस्टनाम जागरूकता का समर्थन करते हैं, और इस जानकारी के आधार पर विशेष कार्रवाई करने की अनुमति देते हैं? क्या सर्वर फॉल्ट पर अन्य प्रश्न हैं जो इनमें से कुछ को कवर करते हैं?

Commandeering:यह प्रश्न मूल रूप से IIS और Apache को एक ही सर्वर पर चलाने के बारे में पूछ रहा था, लेकिन समान अवधारणाओं को क्लाइंट से कनेक्शन प्राप्त करने वाले किसी भी सर्वर सॉफ़्टवेयर पर लागू किया जा सकता है। नीचे दिए गए उत्तर तकनीकी समस्याओं और DNS का उपयोग करने के समाधान और एप्लिकेशन प्रोटोकॉल का वर्णन करते हैं ताकि क्लाइंट को कनेक्ट करने के लिए पोर्ट नंबर असाइन किया जा सके।


उदाहरण तीन के संबंध में, पाठक मनमाने ढंग से प्रोटोकॉल को होस्टनाम-जागरूक बनाने पर हमारे विहित प्रश्न की जांच करना चाह सकते हैं ।
15

जवाबों:


34

आप किसी पोर्ट को इंगित करने के लिए DNS का उपयोग नहीं कर सकते (जब तक कि ग्राहक SRV रिकॉर्ड का समर्थन नहीं करता, सबसे अधिक नहीं)।

होस्ट हेडर के साथ वेबसाइट और प्रोटोकॉल

ऐसा करने के लिए आपको कुछ फ्रंट-एंड मेथड लगाने होंगे। आमतौर पर आप हेडर में अनुरोध किए जा रहे सर्वर के नाम के आधार पर पोर्ट 80 से पोर्ट 80 के कनेक्शन को आगे बढ़ाने के लिए फ्रंट एंड वेब सर्वर या समर्पित प्रॉक्सी सॉफ्टवेयर का उपयोग करेंगे। कुछ फायरवॉल होस्ट हेडर के आधार पर भी आगे बढ़ सकते हैं।

एसआरवी रिकॉर्ड्स

कुछ क्लाइंट SRV रिकॉर्ड्स के लुकअप का समर्थन करते हैं जो निर्दिष्ट सेवा के लिए होस्टनाम और सर्वर की पोर्ट संख्या को इंगित करते हैं (यानी उपयोगकर्ता "example.com" निर्दिष्ट करता है, क्लाइंट SRV रिकॉर्ड को देखता है और पोर्ट "255 पर" server101.example.com "प्राप्त करता है। "; फिर उस से जोड़ता है)। कुछ क्लाइंट इसे लागू भी करते हैं जहां इसकी आवश्यकता नहीं होती है (उदाहरण के लिए एक नया ई-मेल खाता सेट करते समय मेरा आखिरी स्मार्टफोन SRV रिकॉर्ड की खोज करेगा)।

दुर्भाग्य से एसआरवी रिकॉर्ड के लिए समर्थन अत्यधिक असामान्य है। केवल कुछ उल्लेखनीय प्रोटोकॉल यह जनादेश (Jabber / XMPP, Kerberos, LDAP, SIP) का समर्थन करते हैं और अनिवार्य नहीं होने पर भी हर ग्राहक इसका समर्थन करता है।


15

जब आप अपने ब्राउज़र में http://www.domain.com टाइप करते हैं, तो यह समझ में आता है कि HTTP पोर्ट 80 पर है। इसलिए, यदि आपके पास पहले से ही कोई सेवा है, तो www.domain.com को 87 पोर्ट करने का कोई सीधा तरीका नहीं है। IIS में उस पोर्ट पर चल रहा है।

कहा जा रहा है, वहाँ कुछ "workarounds" हैं।

  • बस http://www.domain.com:87/ का उपयोग करें - यह आपके सर्वर पर पोर्ट 87 (अपाचे) से कनेक्ट होगा।
  • आप एक रीडायरेक्ट, की स्थापना कर सकते हैं ताकि http://www.domain.com/apache (, आप कल्पना प्राप्त करना चाहते हैं, तो या प्रॉक्सी) www.domain.com:87 को पहुंचाएंगे।
  • आप एक "VirtualHost" सेट कर सकते हैं ताकि www.domain2.com www.domain.com के साथ साझा होने के बाद भी पोर्ट 80 पर रहेगा। आप इसे IIS को संशोधित किए बिना सेट नहीं कर सकते।

सैम सही है, जब बंदरगाह पर आता है तो DNS अज्ञेयवादी है। पोर्ट पुनर्निर्देशन का कोई भी प्रकार उस पोर्ट पर चलने वाली सेवा द्वारा होता है। इसलिए आपको ऐसा करने के लिए IIS के साथ कुछ करने की आवश्यकता होगी, यदि आपके पास पोर्ट 80 पर इसे छोड़ने के अलावा कोई विकल्प नहीं है।

मैं Apache पर mod_proxy का उपयोग करके आपकी स्थिति के आसपास भी पहुँच गया हूँ, सुनिश्चित नहीं है कि अगर IIS के साथ ऐसा करने का कोई तरीका है।


ठीक है, तो IIS पर प्रॉक्सी कैसे सेट करें?
टॉमाज़ स्म्यकोव्स्की

2
यदि यह IIS7 है, तो आप अनुप्रयोग अनुरोध रूटिंग (ARR) का उपयोग कर सकते हैं।
स्कॉट फोर्सिथ - एमवीपी

1
स्कॉट, क्या आपके पास एआरआर पर प्रलेखन के लिए एक अच्छा लिंक है?
जैक्स

12

मुझे डर है कि डोमेन नाम केवल एक आईपी पते के साथ जुड़ा हो सकता है और पोर्ट नहीं।

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

यदि आप कहते हैं कि वेब सर्वर क्या है जिसका आप उपयोग कर रहे हैं, तो मुझे यकीन है कि लोग आपकी इच्छानुसार आपके सर्वर को स्थापित करने के लिए आपको संबंधित दस्तावेज़ में इंगित कर सकते हैं


यही तो बात है। मैं दो अलग-अलग वेब सर्वर का उपयोग कर रहा हूं।
उमर आबिद

12

तकनीकी रूप से आप DNS सर्वरों पर SRV रिकॉर्ड का उपयोग कर सकते हैं जैसा कि RFC 2782 में परिभाषित किया गया है कि वे कौन से सर्वर http (कौन-से) डोमेन के लिए कौन से पोर्ट को हैंडल करते हैं:

_http._tcp.www.example.com.  IN      SRV 0    5      80   www.example.com.
_http._tcp.www2.example.com. IN      SRV 0    5      87   www.example.com.

यह कई प्रोटोकॉल / सेवाओं के लिए अच्छी तरह से काम करता है, खासकर जहां SRV रिकॉर्ड का उपयोग प्रोटोकॉल विनिर्देश में पहले से ही परिभाषित है।

हालाँकि जैसा कि " हॉल ऑफ शेम " कहता है, अधिकांश वेब ब्राउज़र / क्लाइंट इसका (HTTP के लिए) समर्थन नहीं करते हैं। यह भी देखें -क्यों-ब्राउज़र-नॉट-यूज़-एसआरवी-रिकॉर्ड

यह सौदा मूल रूप से है, कि SRV http प्रोटोकॉल में शामिल नहीं है, इसलिए इसे हर उस ब्राउज़र को लागू करना चाहिए जो URL को हल करता है जो ब्राउज़रों से अलग है।

इसलिए आपको इसे केवल कुछ वैकल्पिक लोड संतुलन के रूप में उपयोग करना चाहिए, जहां यह प्रासंगिक नहीं है कि सामग्री के संदर्भ में कौन सा सर्वर चुना गया है। "वैकल्पिक" क्योंकि यह लोड का बहुत संतुलन नहीं होगा अगर केवल कुछ ही ग्राहक इसे लागू करते हैं।


6

DNS में किसी विशिष्ट पोर्ट पर पुनर्निर्देशित करने की क्षमता नहीं है, सभी DNS परवाह है कि एक नाम का आईपी पता रिज़ॉल्यूशन है, और इसके विपरीत।

कुछ सेवाएं, जैसे कि डायनेमिक आईपी डीएनएस प्रदाता, जैसे कि नो-आईपी एक सीरवीस प्रदान करते हैं, जो आपको होम डीएनएस सेवाओं पर आईपी के राउंड ब्लॉकिंग प्राप्त करने के लिए कुछ समान करने में मदद कर सकता है।


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

6

गैर-मानक पोर्ट पर किसी भी (TBT) सेवा का उपयोग करने के लिए और URI में पोर्ट न लिखने के लिए, हर कोई RFC 2782 में परिभाषित SRV रिकॉर्ड का उपयोग कर सकता है।

_http._tcp.www.example.com. IN      SRV 0    5      87   www.example.com.

ज़ोन के अन्य सभी http-होस्ट्स अभी भी डिफ़ॉल्ट पोर्ट 80 पर परोसे जाएंगे


3
+1 यह इंगित करने के लिए कि नीचे दिए गए कथनों में से कई गलत हैं, जहां तक ​​कि कल्पना जाती है - DNS बिल्कुल SRV रिकॉर्ड के माध्यम से एक सेवा पोर्ट का संकेत दे सकता है। लेकिन यह भी मानता है कि ग्राहक पहले एसआरवी रिकॉर्ड के लिए पूछना जानता है।
muckuth

2

सबसे सरल तरीका रिवर्स प्रॉक्सी का उपयोग करना है और इसे अपने वेब प्रॉक्सी के रूप में सेट करना है। आप nginxया इसके apacheलिए कॉन्फ़िगर कर सकते हैं । मुझे मूल रूप से अतीत में एक ही समस्या थी और इस तरह के विन्यास को सरल तरीके से प्राप्त करने के लिए एक उपकरण बनाया। एर्गो: https://github.com/cristianoliveira/ergo

मैं यह और मूल रूप से उपयोग कर रहा हूं, एक आकर्षण की तरह काम करता है :)


0

एक ही मेजबान पर दो वेब सर्वरों को तैनात करने के लिए एक दृष्टिकोण दोनों को दो अलग-अलग आईपीवी 6 पते पर पोर्ट 80 पर सुनना है। IPv6 आधिकारिक तौर पर निर्दिष्ट करता है कि आप दो पतों को एक इंटरफ़ेस में निर्दिष्ट कर सकते हैं, और पर्याप्त IPv6 पते हैं जो आप पतों से बाहर चलाए बिना ऐसा कर सकते हैं।

यह भविष्य का प्रमाण है, और आपके दो डोमेन प्रत्येक में अलग-अलग आईपी पते की ओर इशारा करते हुए AAAA रिकॉर्ड हो सकते हैं, इसलिए डोमेन विभिन्न वेब सर्वर पर समाप्त होते हैं।

यदि आपके पास एकल IPv4 पता है, तो आप रिवर्स प्रॉक्सी को चलाने के लिए IPv4 पते पर पोर्ट 80 का उपयोग कर सकते हैं। इस तरह से IPv4- केवल क्लाइंट आपके दोनों वेब सर्वर तक पहुँच सकते हैं। रिवर्स प्रॉक्सी दृष्टिकोण तब भी काम करता है जब कुछ वेब सर्वर रिवर्स प्रॉक्सी के समान होस्ट पर होते हैं और कुछ वेब सर्वर अन्य होस्ट पर होते हैं।

ऐसे सेटअप example.orgमें पते हो सकते हैं 192.0.2.1और 2001:db8::1जबकि example.netपते 192.0.2.1और हैं 2001:db8::2

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