आप विशेष रूप से DNS और एप्लिकेशन लेयर प्रोटोकॉल के बीच TCP / IP प्रोटोकॉल स्टैक की परतों के बीच कैसे प्रवाहित होते हैं, इस बारे में आपकी सोच में गड़बड़ हो रही है।
आपके पास एक सार्वजनिक IP पता है। आपके DNS निश्चित रूप से दोनों हल कर सकते हैं mail.example.com
और example.com
एक ही सार्वजनिक IP पता करने के लिए।
सामान्य तौर पर, आपके सार्वजनिक आईपी पते के अनुरोध वाले आईपी डेटाग्राम, जो आपके फ़ायरवॉल के बाहरी इंटरफ़ेस से प्राप्त होंगे, उस होस्ट का नाम शामिल नहीं है जिसे दूरस्थ क्लाइंट एक्सेस करने का प्रयास कर रहा है। आपका फ़ायरवॉल जादुई रूप से "पता नहीं" कर सकता है कि कौन से होस्टनाम ने दूरस्थ क्लाइंट को हल किया है, क्योंकि दोनों होस्टनाम एक ही आईपी पते पर हल करते हैं। IP लेयर एप्लिकेशन लेयर में उपयोग किए जाने वाले होस्टनाम से अवगत नहीं है।
TCP और UDP प्रोटोकॉल पोर्ट नंबर का उपयोग करके होस्ट द्वारा दी जाने वाली विशिष्ट सेवाओं को अलग करते हैं। आपके उदाहरण के मामले में, पोर्ट फॉरवर्डिंग (जिसे पोर्ट एड्रेस ट्रांसलेशन भी कहा जाता है, या PAT) का उपयोग आपके NAT फ़ायरवॉल के फीचर को टीसीपी पोर्ट 80 (HTTP) में इनबाउंड टीसीपी पोर्ट भेजने के दौरान वेब सर्वर पर भेजने के लिए संभव हो सकता है। आपके ईमेल सर्वर पर 25 (SMTP)।
यदि, हालांकि, आप दोनों मशीनों पर एक ही सेवा की मेजबानी करने की योजना बनाते हैं तो यह रणनीति समस्याग्रस्त हो जाती है। मान लीजिए कि आप अपने वेब सर्वर (ग्राहक की पहुंच के लिए) पर एक सुरक्षित वेब साइट और अपने ईमेल सर्वर (वेबमेल के लिए) पर एक सुरक्षित वेब साइट दोनों की मेजबानी करने जा रहे हैं। टीसीपी पोर्ट 443 (HTTPS) में आपके NAT फ़ायरवॉल के सार्वजनिक आईपी पते पर आने वाले अनुरोधों को केवल एक सर्वर या दूसरे पर भेजा जा सकता है।
इस स्थिति का सामान्यीकृत समाधान अधिक सार्वजनिक आईपी पते हैं। क्योंकि IPv4 पते दुर्लभ हो रहे हैं जो समस्याग्रस्त भी हो सकते हैं।
हम आवेदन स्तर पर कुछ प्रोटोकॉल में सार्वजनिक आईपी पते की कमी के आसपास काम कर रहे हैं । उदाहरण के लिए, HTTP / 1.1 ने Host:
हेडर को विशेष रूप से एक वेब सर्वर को एक ही सार्वजनिक आईपी पते पर कई वेबसाइटों की मेजबानी करने की अनुमति देने के लिए जोड़ा । दूरस्थ क्लाइंट द्वारा दर्ज होस्टनाम के आधार पर उचित प्रमाण पत्र के चयन की अनुमति देने के लिए टीएलएस सर्वर नाम संकेत (एसएनआई) एक्सटेंशन जोड़ता है ।
एप्लिकेशन लेयर में इस तरह का वर्कअराउंड करने का मतलब है कि हर एप्लिकेशन लेयर प्रोटोकॉल को अपने "फिक्स" (और फिर सभी सर्वर और क्लाइंट सॉफ्टवेयर को उस "फिक्स" को लागू करना होगा)। यह एक लंबा आदेश है।
अनुप्रयोग परत प्रोटोकॉल को संशोधित करने के एवज में कुछ प्रोटोकॉल सॉफ्टवेयर का उपयोग करते हुए कई मेजबानों के बीच "मल्टीप्लेक्स" होने के लिए आसानी से उपयोग करने योग्य हैं जो "मार्ग" अनुरोध कर सकते हैं। यह संभावना इस बात से परे है कि एक सरल एनएटी फ़ायरवॉल सक्षम है क्योंकि पैकेट को आवेदन परत पर निरीक्षण करने की आवश्यकता है। एनजीएक्स जैसे रिवर्स-प्रॉक्सी का उपयोग HTTP प्रोटोकॉल के लिए "मल्टीप्लेक्सिंग" (या फ़ोरफ़्रंट TMG या ISA सर्वर पर Microsoft वातावरण में वेब प्रकाशन नियमों) का एक अच्छा उदाहरण है। सिद्धांत रूप में किसी भी प्रोटोकॉल को एक रिवर्स प्रॉक्सी के माध्यम से गुणा किया जा सकता है, लेकिन प्रोटोकॉल जितना अधिक गूढ़ होगा, उतना ही संभव होगा कि आप कस्टम कोड लिखे जाने के बारे में बात करेंगे।
जब आपको एक ही सार्वजनिक आईपी पते पर दो अलग-अलग मेजबानों से एक ही सेवा की पेशकश करने की आवश्यकता होती है, तो आपके पास हमेशा मेजबानों में से एक को गैर-मानक पोर्ट पर ले जाने का विकल्प होता है। हालांकि इसके लिए ग्राहकों को गैर-मानक पोर्ट के बारे में पता होना चाहिए। HTTP (एस) के मामले में यह URL में http://example.com:XXX
नोटेशन (जहां XXX
गैर-मानक पोर्ट संख्या है) के साथ होता है। क्या यह आपकी स्थिति में समस्याग्रस्त होगा या नहीं, यह केवल आप ही तय कर सकते हैं। (मेरे अनुभव से पता चला है कि वस्तुतः कोई भी अंत उपयोगकर्ता :XXX
किसी भी URL में पोर्ट संकेतन को संभालने में सक्षम नहीं है, जिसे उन्हें हाथ से दर्ज करना है।)