NAT / PortForwarding / TCP / IP कैसे काम करता है?


12

मैंने हाल ही में एक लेख पढ़ा जिसका शीर्षक है कि NAT कैसे काम करता है । कुछ चीजें अभी भी मेरे लिए अस्पष्ट हैं। अगर कोई समझा सकता है तो मैं आभारी रहूंगा।

डायनामनेट के बारे में लेख का हिस्सा नीचे है जो सबसे अधिक भ्रमित करने वाला है:

स्टब डोमेन पर एक कंप्यूटर नेटवर्क के बाहर एक कंप्यूटर से कनेक्ट करने का प्रयास करता है, जैसे कि वेब सर्वर।

राउटर को स्टब डोमेन पर कंप्यूटर से पैकेट प्राप्त होता है। राउटर कंप्यूटर की नॉन-रूटेबल आईपी एड्रेस को एड्रेस ट्रांसलेट टेबल में सेव करता है। राउटर पहले उपलब्ध आईपी पते के साथ अद्वितीय आईपी पतों की सीमा से बाहर भेजने वाले कंप्यूटर के गैर-रिटेबल आईपी पते को बदल देता है। अनुवाद तालिका में अब एक अद्वितीय IP पते के साथ मिलान किए गए कंप्यूटर के गैर-निष्क्रिय आईपी पते की मैपिंग है।

जब कोई पैकेट गंतव्य कंप्यूटर से वापस आता है, तो राऊटर पैकेट पर गंतव्य पते की जांच करता है। यह पता अनुवाद तालिका में दिखता है कि स्टब डोमेन पर कंप्यूटर किस पैकेट से संबंधित है।

1) NAT को कैसे पता चलता है कि पैकेट "वापस आता है" गंतव्य कंप्यूटर के लिए?

2) क्या होगा यदि LAN के अन्य कंप्यूटर एक ही सर्वर से जुड़े हों? NAT को कैसे पता चलता है कि किस पैकेट को "वापस आना चाहिए" कहाँ है?

3) क्या पैकेट हैडर मॉडिफिकेशन से इंटरनेट अटैक करने की अनुमति मिलती है, जिसमें पीड़ित के आईपी से "सोर्स आईपी" को बदल दिया जाता है, और उत्तर देने वाले सर्वर को अनचाहे पैकेट से बाढ़ का शिकार होना पड़ेगा?

मुझे लगता है कि कई हमलावरों को शामिल करने की आवश्यकता होगी ...

4) क्या स्टैटिकनेट सभी बंदरगाहों के पोर्टफ़ॉरवर्डिंग के बराबर है?

जवाबों:


11

NAT (नेटवर्क एड्रेस ट्रांसलेशन) और PAT (पोर्ट एड्रेस ट्रांसलेशन) के बीच एक सामान्य गलतफहमी है , जिसे हम अपने घरेलू राउटर्स में ज्यादातर इस्तेमाल करते हैं।

NAT
मान लें कि हमारे पास निम्न टोपोलॉजी वाला एक नेटवर्क है:

Private_Network <-------> राउटर <-------> The_Internet

के इंटरफेस रूटर कि से जुड़ा है Private_Network है कोई निजी IP पता एक ही है कि में अद्वितीय नहीं है, यानी The_Internet । दूसरी ओर, NAT के मामले में , राउटर में The_Internet से जुड़े कई इंटरफेस हैं । प्रत्येक इंटरफ़ेस का The_Internet में एक अद्वितीय IP पता है । आइए अब मान लेते हैं कि Host_A और Host_B में हैं Private_Network और वे दोनों उपयोग करना चाहते Website_X में The_Internet एक ही समय में। IPs और Host_A के पोर्टपैकेट होगा:

स्रोत IP: Host_A का निजी IP
स्रोत पोर्ट: Host_A
गंतव्य IP पर एक पोर्ट : Website_X जनता / अद्वितीय IP
गंतव्य पोर्ट: एक बंदरगाह जहां Website_X का सर्वर सुन रहा है

और उसी तरह Host_B से आने वाले एक पैकेट के लिए ।
यदि स्रोत आईपी को अपरिवर्तित छोड़ दिया जाता है, तो Website_X एक आईपी पते का जवाब देगा जो निजी है, अर्थात अद्वितीय नहीं है, और इसलिए पैकेट कभी भी इसे वापस लाने में सक्षम नहीं होगा। उस समस्या को हल करने के लिए, राउटर यह जांचता है कि The_Internet से जुड़ा उसका कोई विशिष्ट IP पता उपयोग नहीं किया गया है या नहीं। अगर ऐसा है, तो यह निम्नलिखित मानचित्रण करता है:

Host_A का निजी IP ======= राउटर का_नीक_आईपी_के

और अब पैकेट कि से शुरू Host_A के लिए जा रहा Website_X और अब के इंटरफेस छोड़कर जा रहा है रूटर से जुड़े The_Internet प्रपत्र करना होगा:

सोर्स आईपी: राउटर का_निक_आईपी_के
सोर्स पोर्ट: होस्ट_ए
डेस्टिनेशन आईपी पर एक पोर्ट : वेबसाइट_एक्स का पब्लिक / यूनिक आईपी
डेस्टिनेशन पोर्ट: एक पोर्ट जहां Website_X का सर्वर सुन रहा है

इस प्रकार आप समझ सकते हैं कि निजी आईपी से लेकर सार्वजनिक आईपी तक एक-से-एक एसोसिएशन है। इसलिए जब एक पैकेट वेबसाइट_एक्स से राउटर तक पहुंचता है , तो इस एसोसिएशन की जांच की जाती है और गंतव्य आईपी पते को वापस निजी एक में बदल दिया जाता है और सही मेजबान को सफलतापूर्वक वितरित किया जाता है।
जैसा कि आप देख सकते हैं, यह विधि काफी सरल है, लेकिन इसका एक बड़ा नुकसान है: प्रत्येक निजी होस्ट के पास एक अद्वितीय आईपी पता सुरक्षित होना चाहिए, जो महंगा हो, इस प्रकार हम निजी नेटवर्क में मेजबान की तुलना में कम अद्वितीय आईपी पते का चयन करते हैं। इसलिए यदि सभी निजी होस्ट एक ही समय में The_Internet को एक्सेस करने का प्रयास करते हैं , तो केवल उनका सबसेट, उपलब्ध सार्वजनिक IP पतों की संख्या के बराबर है कि Routerहै, का उपयोग होगा और बाकी से इनकार कर दिया जाएगा।
काउंटर करने के लिए हमने PAT बनाया ।

PAT
PAT वह है जो हमारे होम रूटर्स का विशाल उपयोग कर रहा है। मूल सीमा यह है कि राउटर का एकल यूपी पता होता है जिसके साथ वह The_Internet से जुड़ता है , लेकिन हम अभी भी निजी नेटवर्क से एक ही समय में The_Internet तक पहुंचने के लिए कई मेजबानों को अनुमति देना चाहते हैं ।
जिस तरह से हम करते हैं कि " एनएटी " उसी तरह से होता है जिस तरह से एनएटी एक महत्वपूर्ण अंतर के साथ करता है: राउटर के बजाय आईपी ​​पते का एक पूल पकड़े हुए, यह पोर्ट नंबर का एक पूल रखता है। अधिक सटीक रूप से, Private_Network में Host_A से राउटर पर पहुंचने वाला एक पैकेट Website_X को मिलता हैThe_Internet में निम्न प्रारूप होगा:

स्रोत IP: Host_A का निजी IP
स्रोत पोर्ट: Host_A
गंतव्य IP पर एक पोर्ट : Website_X जनता / अद्वितीय IP
गंतव्य पोर्ट: एक बंदरगाह जहां Website_X का सर्वर सुन रहा है

अब राउटर दो कार्य करेगा:

  1. यह सोर्स आईपी को राउटर के यूनिक पब्लिक आईपी और में बदल देगा
  2. यह स्रोत पोर्ट को एक पूल से पोर्ट में बदल देगा जिसे राउटर बनाए रख रहा है और पहले से उपयोग नहीं किया गया है, जैसे कि पोर्ट_ज़

और अब पैकेट कि से शुरू Host_A के लिए जा रहा Website_X और अब के इंटरफेस छोड़कर जा रहा है रूटर से जुड़े The_Internet प्रपत्र करना होगा:

सोर्स आईपी: राउटर का_निक_आईपी_के
सोर्स पोर्ट: पोर्ट_जेड
डेस्टिनेशन आईपी: वेबसाइट_एक्स का पब्लिक / यूनिक आईपी
डेस्टिनेशन पोर्ट: एक पोर्ट जहां वेबसाइट_एक्स का सर्वर सुन रहा है

और राउटर निम्नलिखित मैपिंग रखेगा:

Host_A का निजी IP और Host_A ======= पोर्ट_ Z पर एक पोर्ट

यह काम क्यों करता है?
अब जब कोई पैकेट वापस आता है, तो राउटर केवल गंतव्य पोर्ट नंबर की जांच करता है और गंतव्य आईपी पते और गंतव्य पोर्ट नंबर को पूर्व-उल्लेखित मैपिंग के अनुसार बदल देता है और पैकेट सफलतापूर्वक डिलीवर हो जाता है।

यदि मैं एक ही होस्ट पर कई एप्लिकेशन चलाऊं तो क्या होगा?
विभिन्न अनुप्रयोगों में अलग-अलग पोर्ट होंगे, परिभाषा के अनुसार, इस प्रकार वे राउटर से एक अलग पोर्ट पर मैप किए जाएंगे ।

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

पीएटी खतरनाक रूप से क्रॉस-लेयर के एक ग्रे स्पेस में संतुलन बना रहा है। पोर्ट नंबर ट्रांसपोर्ट प्रोटोकॉल का हिस्सा हैं जबकि राउटर को इंटरनेट प्रोटोकॉल तक संचालित करने की अनुमति है। तो तकनीकी रूप से बोलना कुछ ऐसा है जो प्रोटोकॉल द्वारा अनुमत नहीं है। इसलिए, कम से कम सैद्धांतिक रूप से, संभावित खतरे हैं: पोर्ट पूल सीमित है। इसलिए यदि मेरे निजी नेटवर्क में 1000 होस्ट्स हैं और प्रत्येक एक पोर्ट_पुल / 10 एप्लिकेशन चला रहा है, तो राउटर पर मैपिंग टेबल उपलब्ध प्रविष्टियों से बाहर हो जाएगी और अनुप्रयोगों तक पहुंच से इनकार कर दिया जाएगा।

यह उत्तर मेरी इच्छित लंबाई को पार कर गया, लेकिन मुझे आशा है कि यह मददगार था।


2
नोटों की एक जोड़ी, सबसे पहले आप "NAT" शब्द का उपयोग कर रहे हैं कि RFCs "बेसिक NAT" और "PAT" को क्या कहते हैं, जो RFC को "NAPT" कहते हैं। RFC आमतौर पर "NAT" का उपयोग "बेसिक NAT" और "NAPT" दोनों को कवर करने वाले एक छत्र शब्द के रूप में करते हैं। दूसरे यहां तक ​​कि "बेसिक नेट" को टीसीपी / यूडीपी हेडर को संशोधित करना पड़ता है क्योंकि टीसीपी / यूडीपी हेडर में एक चेकसम होता है जो आईपी पते को कवर करता है।
पीटर ग्रीन

@PeterGreen लेकिन क्या उत्तर का सार सटीक है?
lpydawa

6

राउटर को पता होता है कि पैकेट कहां हैं क्योंकि The router saves ... an address translation table.यह याद रखता है कि उसके अंदर के बाहर के अनुवाद क्या हैं। जैसे, एक अंदर का पता एक बाहर के पते के बराबर होता है, और बाहर का इंटरनेट अप्रासंगिक होता है। बेशक, यह व्यावहारिक रूप से हर NAT रूटर में मौजूद फ़ायरवॉल को अनदेखा करता है, जो पूर्ण कनेक्शन को ट्रैक करता है:

(inside) src:ip+port,dst:ip+port <-> (outside) src:ip+port,dst:ip+port

NAT, IP और / या पोर्ट के किसी भी संयोजन को बदल सकता है।

# 3 किसी भी पूरी तरह से अलग विषय है: स्पूफिंग

# 4 "स्टेटिक एनएटी", या "1-टू -1", एक पता केवल नक्शा है। तो, पोर्ट (और यहां तक ​​कि प्रोटोकॉल: tcp, udp, gre, आदि) अप्रासंगिक है।


2) क्या होगा यदि LAN के अन्य कंप्यूटर एक ही सर्वर से जुड़े हों? NAT को कैसे पता चलता है कि किस पैकेट को "वापस आना चाहिए" कहाँ है?
user2449761

1 और 2 एक ही उत्तर हैं: क्योंकि यह कनेक्शन / अनुवाद को ट्रैक कर रहा है। दो अंदर के मेजबानों को एक ही बाहरी पते पर मैप नहीं किया जाएगा; इसलिए कोई भी पैकेट बाहर के पते पर मैप किया हुआ होता है, स्वचालित रूप से केवल एक गंतव्य के अंदर होता है। यदि आपके पास केवल एक (सार्वजनिक) पता है, तो यह "NAT" नहीं है, लेकिन PAT (पोर्ट ट्रांसलेशन)
रिकी बीम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.