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


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

उदाहरण 1

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

उदाहरण 2

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

उदाहरण 3

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

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


45
2017-10-14 13:12


मूल


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


जवाब:


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

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

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

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

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

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


32
2017-10-14 13:27





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

कहा जा रहा है, कुछ "कामकाज" हैं।

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

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

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


13
2018-01-26 14:20



ठीक है, तो आईआईएस पर प्रॉक्सी कैसे सेट करें? - Tomasz Smykowski
यदि यह आईआईएस 7 है, तो आप एप्लिकेशन अनुरोध रूटिंग (एआरआर) का उपयोग कर सकते हैं। - Scott Forsyth - MVP
स्कॉट, क्या आपके पास एआरआर पर दस्तावेज़ीकरण के लिए एक अच्छा लिंक है? - Jacques


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

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

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


12
2017-12-22 13:56



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


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

_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.

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

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

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

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


11
2017-10-14 13:18





DNS में किसी विशिष्ट पोर्ट पर रीडायरेक्ट करने की क्षमता नहीं है, सभी DNS की देखभाल किसी नाम का आईपी पता समाधान है, और इसके विपरीत।

कुछ सेवाएं, जैसे गतिशील आईपी DNS प्रदाता, जैसे कि कोई आईपी नहीं एक सेरिवस प्रदान करें जो आपको घर की डीएनएस सेवाओं पर आईपी के राउंड अवरुद्ध होने के समान कुछ करने में मदद कर सकता है।


6
2018-01-26 23:20



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


इस्तेमाल करने के लिए कोई भी (टीबीटी) सेवा गैर-मानक बंदरगाह पर और यूआरआई में बंदरगाह नहीं लिखती है, हर आरएफसी 2782 में परिभाषित एसआरवी रिकॉर्ड का उपयोग कर सकते हैं।

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

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


5
2017-08-21 18:07



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


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

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

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

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


0
2017-10-25 22:12





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

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


0