इससे पहले कि हम IPv4 पतों से बाहर निकलना शुरू करें, हमने NAT का व्यापक रूप से उपयोग नहीं किया। हर इंटरनेट से जुड़े कंप्यूटर का अपना विश्व स्तर पर अनूठा पता होगा। जब NAT पहली बार पेश किया गया था, तो यह ISP के ग्राहकों को प्रति डिवाइस 1 वास्तविक पता देने से आगे बढ़ना था, जिसका उपयोग ग्राहक उस ग्राहक को 1 वास्तविक पता देने के लिए करता था। उस समय (वर्षों) के लिए समस्या को ठीक किया गया, जबकि हमें IPv6 में जाना चाहिए था। IPv6 पर स्विच करने के बजाय, (ज्यादातर) हर कोई हर किसी के स्विच करने के लिए इंतजार कर रहा था और इसलिए (ज्यादातर) किसी ने भी IPv6 को रोल आउट नहीं किया। अब हम फिर से उसी समस्या को मार रहे हैं, लेकिन इस बार, NAT की एक दूसरी परत (CGN) तैनात की जा रही है, ताकि ISPs कई ग्राहकों के बीच 1 वास्तविक पता साझा कर सकें।
अगर नैट भयानक नहीं है, तो आईपी एड्रेस की थकावट कोई बड़ी बात नहीं है, जिसमें यह भी शामिल है कि एंड यूज़र का इस पर कोई नियंत्रण नहीं है (कैरियर ग्रेड NAT या CGN)।
लेकिन मैं तर्क दूंगा कि एनएटी भयानक है, खासकर उस मामले में जहां अंतिम उपयोगकर्ता का इस पर नियंत्रण नहीं है। और (एक व्यक्ति जिसकी नौकरी नेटवर्क इंजीनियरिंग / प्रशासन है, लेकिन एक सॉफ्टवेयर इंजीनियरिंग की डिग्री है) मैं तर्क देता हूं कि आईपीवी 6 के बजाय एनएटी को तैनात करके, नेटवर्क प्रशासकों ने अपने क्षेत्र से बाहर और अंत उपयोगकर्ताओं के लिए पते की थकावट को हल करने का वजन स्थानांतरित कर दिया है। और अनुप्रयोग डेवलपर्स।
तो (मेरी राय में), एनएटी एक भयानक, बुरी चीज क्यों है जिसे टाला जाना चाहिए?
देखते हैं कि क्या मैं इसे समझाने में न्याय कर सकता हूं कि यह क्या टूटता है (और यह किन मुद्दों का कारण बनता है कि हम इतने आदी हो गए हैं कि हमें यह भी पता नहीं है कि यह बेहतर हो सकता है):
- नेटवर्क परत स्वतंत्रता
- पीयर टू पीयर कनेक्शन
- लगातार नामकरण और संसाधनों का स्थान
- ट्रैफ़िक का इष्टतम मार्ग, अपने वास्तविक पते को होस्ट करता है
- दुर्भावनापूर्ण ट्रैफ़िक के स्रोत पर नज़र रखना
- नेटवर्क प्रोटोकॉल जो अलग-अलग कनेक्शन में डेटा और नियंत्रण को अलग करते हैं
आइए देखें कि क्या मैं उनमें से प्रत्येक वस्तु की व्याख्या कर सकता हूं।
नेटवर्क परत स्वतंत्रता
ISP को केवल लेयर 3 पैकेट के आस-पास से गुजरना चाहिए और इस बात की परवाह नहीं करनी चाहिए कि ऊपर की परतों में क्या है। चाहे आप टीसीपी, यूडीपी के आसपास से गुजर रहे हों, या कुछ बेहतर / अधिक विदेशी (एससीटीपी हो सकता है? या यहां तक कि कुछ अन्य प्रोटोकॉल जो टीसीपी / यूडीपी से बेहतर है, लेकिन एनएटी समर्थन की कमी के कारण अस्पष्ट है), आपके आईएसपी को माना नहीं जाता है ध्यान; यह सब सिर्फ उन्हें डेटा की तरह देखना चाहिए।
लेकिन यह नहीं है - जब वे NAT की "दूसरी लहर", "कैरियर ग्रेड" NAT को लागू कर रहे हैं। फिर उन्हें आवश्यक रूप से देखना होगा, और समर्थन करना होगा, परत 4 प्रोटोकॉल जो आप उपयोग करना चाहते हैं। अभी, व्यावहारिक रूप से इसका मतलब है कि आप केवल टीसीपी और यूडीपी का उपयोग कर सकते हैं। अन्य प्रोटोकॉल या तो केवल अवरुद्ध / गिराए जाएंगे (मेरे अनुभव के अधिकांश मामलों में) या केवल उस प्रोटोकॉल का उपयोग करने वाले NAT के अंदर "अंतिम मेजबान" को भेज दिया गया है (मैंने 1 कार्यान्वयन देखा है जो ऐसा करता है)। यहां तक कि अंतिम होस्ट को अग्रेषित करने वाले ने उस प्रोटोकॉल का वास्तविक निर्धारण नहीं किया है - जैसे ही दो मेजबान इसका उपयोग करते हैं, यह टूट जाता है।
मुझे लगता है कि टीसीपी और यूडीपी के लिए कुछ प्रतिस्थापन प्रोटोकॉल हैं जो वर्तमान में इस मुद्दे के कारण अप्रयुक्त और अप्रयुक्त हैं। मुझे गलत मत समझिए, टीसीपी और यूडीपी प्रभावशाली तरीके से डिजाइन किए गए थे और यह आश्चर्यजनक है कि दोनों आज जिस तरह से हम इंटरनेट का उपयोग करते हैं, उस तरह से पैमाने पर करने में सक्षम हैं। लेकिन कौन जानता है कि हम क्या याद किया है? मैंने SCTP के बारे में पढ़ा है और यह अच्छा लगता है, लेकिन इसका उपयोग कभी नहीं किया क्योंकि यह NAT की वजह से अव्यावहारिक था।
पीयर टू पीयर कनेक्शन
यह बड़ा वाला है। दरअसल, मेरी राय में सबसे बड़ा। यदि आपके दो नेट उपयोगकर्ता हैं, तो दोनों अपने स्वयं के NAT के पीछे, कोई फर्क नहीं पड़ता कि कोई पहले कनेक्ट करने का प्रयास करता है, तो दूसरे उपयोगकर्ता का NAT उनके पैकेट को छोड़ देगा और कनेक्शन सफल नहीं होगा।
यह गेम, वॉयस / वीडियो चैट (जैसे स्काइप) को प्रभावित करता है, अपने स्वयं के सर्वरों की मेजबानी करता है, आदि।
वर्कअराउंड हैं। समस्या यह है कि उन वर्कअराउंड में या तो डेवलपर समय, अंत उपयोगकर्ता समय और असुविधा, या सेवा अवसंरचना लागत खर्च होती है। और वे मूर्ख नहीं हैं और कभी-कभी टूट जाते हैं। (देखें अन्य उपयोगकर्ता Skype द्वारा किए गए आउटेज के बारे में टिप्पणी करते हैं।)
एक वर्कअराउंड पोर्ट फ़ॉरवर्डिंग है, जहाँ आप NAT डिवाइस के पीछे विशिष्ट कंप्यूटर के लिए विशिष्ट इनकमिंग पोर्ट को अग्रेषित करने के लिए NAT डिवाइस को प्रोग्राम करते हैं। वहाँ पूरी तरह से वहाँ से बाहर हैं सभी अलग-अलग NAT उपकरणों के लिए यह करने के लिए समर्पित पूरी वेबसाइटें हैं। Https://portforward.com/ देखें । यह आमतौर पर अंत उपयोगकर्ता समय और निराशा लागत।
एक और काम है कि अनुप्रयोगों के लिए छिद्रण जैसी चीजों के लिए समर्थन जोड़ना, और सर्वर अवसंरचना को बनाए रखना जो दो NATed क्लाइंट को शुरू करने के लिए NAT के पीछे नहीं है। यह आमतौर पर विकास के समय को खर्च करता है, और डेवलपर्स को संभावित रूप से सर्वर अवसंरचना बनाए रखने की स्थिति में रखता है, जहां पहले इसकी आवश्यकता नहीं होती थी।
(याद रखें कि मैंने IPv6 के बजाय NAT को तैनात करने के बारे में क्या कहा था कि नेटवर्क एडमिनिस्ट्रेटर से लेकर एंड यूजर्स और एप्लिकेशन डेवेलपर्स तक के इश्यू का वजन शिफ्ट किया जाए?)
नेटवर्क संसाधनों का लगातार नामकरण / स्थान
क्योंकि एक अलग पता स्थान का उपयोग NAT के अंदर पर किया जाता है, तो बाहर की तरफ, NAT के अंदर एक उपकरण द्वारा दी जाने वाली किसी भी सेवा के पास इसके द्वारा पहुंचने के लिए कई पते होते हैं, और उपयोग करने के लिए सही पता इस बात पर निर्भर करता है कि ग्राहक इसे कहां से एक्सेस कर रहा है। । (पोर्ट फॉरवर्डिंग कार्य करने के बाद भी यह एक समस्या है।)
यदि आपके पास NAT के भीतर एक वेब सर्वर है, तो पोर्ट 192.168.0.23 पोर्ट 80 पर कहें, और आपके NAT डिवाइस (राउटर / गेटवे) का बाहरी पता 35.72.216.228 है, और आप TCP पोर्ट 80 के लिए पोर्ट फॉरवर्डिंग सेट करते हैं, अब आपका वेबसर्वर को 192.168.0.23 पोर्ट 80 या 35.72.216.228 पोर्ट 80 का उपयोग करके एक्सेस किया जा सकता है। आपको जो उपयोग करना चाहिए वह इस बात पर निर्भर करता है कि आप NAT के अंदर हैं या बाहर हैं। यदि आप NAT के बाहर हैं, और 192.168.0.23 पते का उपयोग करते हैं, तो आप उस स्थान पर नहीं पहुंचेंगे जहाँ आप उम्मीद कर रहे हैं। यदि आप NAT के अंदर हैं, और आप बाहरी पते का उपयोग करते हैं 35.72.216.228, तो आप वहीं प्राप्त कर सकते हैं जहाँ आप करना चाहते हैं, यदि आपका NAT कार्यान्वयन एक उन्नत है जो हेयरपिन का समर्थन करता है, लेकिन तब आपके अनुरोध पर काम करने वाले वेब सर्वर आपके NAT डिवाइस से आने वाले अनुरोध को देखेंगे। इसका मतलब यह है कि सभी ट्रैफ़िक NAT डिवाइस से होकर जाना चाहिए, भले ही NAT के पीछे नेटवर्क में कोई छोटा रास्ता हो, और इसका मतलब है कि वेब सर्वर पर लॉग बहुत कम उपयोगी होते हैं क्योंकि वे सभी NAT डिवाइस को स्रोत के रूप में सूचीबद्ध करते हैं संपर्क। यदि आपका NAT कार्यान्वयन हेयरपिन का समर्थन नहीं करता है, तो आपको वह नहीं मिलेगा जहां आप जाने की उम्मीद कर रहे थे।
और जैसे ही आप DNS का उपयोग करते हैं यह समस्या और भी बदतर हो जाती है। अचानक, यदि आप चाहते हैं कि NAT के पीछे होस्ट की गई किसी चीज़ के लिए सब कुछ ठीक से काम करे, तो आप NAT के अंदर होस्ट की गई सेवा के पते पर अलग-अलग उत्तर देना चाहेंगे, जो पूछ रहा है (AKA विभाजित क्षितिज DNS, IIRC)। छी।
और यह सब मान रहा है कि आपके पास पोर्ट फ़ॉरवर्डिंग और हेयरपिन NAT और स्प्लिट क्षितिज DNS के बारे में कोई जानकार है। अंत उपयोगकर्ताओं के बारे में क्या? जब वे उपभोक्ता राउटर और कुछ आईपी सुरक्षा कैमरा खरीदते हैं और इसे "बस काम" करना चाहते हैं, तो यह सब प्राप्त करने की उनकी संभावना क्या है?
और यह मुझे ले जाता है:
ट्रैफ़िक का इष्टतम मार्ग, अपने वास्तविक पते को होस्ट करता है
जैसा कि हमने देखा है, उन्नत हेयरपिन के साथ भी NAT ट्रैफ़िक हमेशा इष्टतम पथ पर प्रवाहित नहीं होता है। यह उस स्थिति में भी है जहां एक जानकार प्रशासक एक सर्वर स्थापित करता है और हेयरपिन NAT है। (दी गई, विभाजित क्षितिज डीएनएस नेटवर्क प्रशासक के हाथों में आंतरिक ट्रैफ़िक के इष्टतम मार्ग को जन्म दे सकती है।)
क्या होता है जब एक एप्लिकेशन डेवलपर ड्रॉपबॉक्स की तरह एक प्रोग्राम बनाता है, और इसे उन अंत उपयोगकर्ताओं को वितरित करता है जो नेटवर्क उपकरण को कॉन्फ़िगर करने में विशेषज्ञ नहीं हैं? विशेष रूप से, क्या होता है जब मैं अपनी शेयर फ़ाइल में 4 जीबी फ़ाइल डालता हूं, और फिर अगले कंप्यूटर पर एक्सेस करने की कोशिश करता हूं? क्या यह सीधे मशीनों के बीच स्थानांतरित हो जाता है, या क्या मुझे इसके लिए धीमे WAN कनेक्शन के माध्यम से क्लाउड सर्वर पर अपलोड करने के लिए इंतजार करना पड़ता है, और फिर उसी धीमी WAN कनेक्शन के माध्यम से डाउनलोड करने के लिए दूसरी बार इंतजार करना पड़ता है?
एक भोले-भाले कार्यान्वयन के लिए, इसे ड्रॉपबॉक्स के सर्वर अवसंरचना का उपयोग करके अपलोड किया जाएगा और डाउनलोड किया जाएगा, जो कि एक मध्यस्थ के रूप में NAT के पीछे नहीं है। लेकिन अगर दो मशीनें केवल महसूस कर सकती हैं कि वे एक ही नेटवर्क पर हैं, तो वे सीधे फाइल को बहुत तेजी से स्थानांतरित कर सकते हैं। इसलिए हमारे पहले कम-भोले कार्यान्वयन के लिए, हम ओएस से पूछ सकते हैं कि आईपी (वी 4) मशीन को क्या संबोधित करता है, और फिर उसी ड्रॉपबॉक्स खाते में पंजीकृत अन्य मशीनों के खिलाफ जांच करें। यदि यह हमारे जैसे ही रेंज में है, तो सीधे फाइल ट्रांसफर करें। यह बहुत सारे मामलों में काम कर सकता है। लेकिन फिर भी एक समस्या है: NAT केवल इसलिए काम करता है क्योंकि हम पते फिर से इस्तेमाल कर सकते हैं। तो क्या हुआ अगर 192.168.0.23 एड्रेस और 192.168.0। एक ही ड्रॉपबॉक्स खाते पर पंजीकृत 42 पते वास्तव में अलग-अलग नेटवर्क (जैसे आपके होम नेटवर्क और आपके कार्य नेटवर्क) पर हैं? अब आपको मध्यस्थता करने के लिए ड्रॉपबॉक्स सर्वर अवसंरचना का उपयोग करने में विफल रहना होगा। (अंत में, ड्रॉपबॉक्स ने अन्य ग्राहकों को खोजने की उम्मीद में स्थानीय नेटवर्क पर प्रत्येक ड्रॉपबॉक्स ग्राहक को प्रसारित करके समस्या को हल करने की कोशिश की। लेकिन उन प्रसारणों को एनएटी के पीछे आपके किसी भी राउटर को पार नहीं किया जा सकता है, जिसका अर्थ है कि यह पूर्ण समाधान नहीं है। ,विशेष रूप से CGN के मामले में ।)
स्टेटिक आईपी
इसके अतिरिक्त, चूंकि पहली कमी (और एनएटी की लहर) तब हुई जब कई उपभोक्ता कनेक्शन हमेशा कनेक्शन (जैसे डायलअप) पर नहीं थे, आईएसपी केवल सार्वजनिक / बाहरी आईपी पते आवंटित करके अपने पते का बेहतर उपयोग कर सकते हैं जब आप वास्तव में जुड़े थे। इसका मतलब यह है कि जब आप कनेक्ट होते हैं, तो आपको हमेशा वही मिलता है, बजाय इसके कि आपको जो भी पता मिले, वह मिल जाए। यह आपके सर्वर को अधिक कठिन बनाता है, और यह सहकर्मी को सहकर्मी के अनुप्रयोगों को कठिन बना देता है क्योंकि उन्हें निश्चित पते पर होने के बजाय साथियों के साथ घूमने की आवश्यकता होती है।
दुर्भावनापूर्ण यातायात के स्रोत का विरोध
क्योंकि एनएटी आउटगोइंग कनेक्शन को फिर से लिखता है जैसे कि वे एनएटी डिवाइस से ही आ रहे हैं, सभी व्यवहार, अच्छे या बुरे, एक बाहरी आईपी पते में लुढ़का हुआ है। मैंने कोई NAT डिवाइस नहीं देखा है जो डिफ़ॉल्ट रूप से प्रत्येक आउटगोइंग कनेक्शन को लॉग करता है। इसका मतलब यह है कि डिफ़ॉल्ट रूप से, पिछले दुर्भावनापूर्ण ट्रैफ़िक के स्रोत को केवल NAT डिवाइस के माध्यम से पता लगाया जा सकता है। जबकि अधिक उद्यम या वाहक वर्ग उपकरण प्रत्येक आउटगोइंग कनेक्शन को लॉग करने के लिए कॉन्फ़िगर किया जा सकता है, मैंने ऐसा करने वाले किसी भी उपभोक्ता को नहीं देखा है। मुझे निश्चित रूप से यह देखना दिलचस्प होगा कि क्या (और कब तक) आईएसपी सीजीएन के माध्यम से किए गए सभी टीसीपी और यूडीपी कनेक्शनों का एक लॉग रखेंगे क्योंकि वे उन्हें रोल आउट करते हैं। दुरुपयोग की शिकायतों और DMCA शिकायतों से निपटने के लिए इस तरह के रिकॉर्ड की आवश्यकता होगी।
कुछ लोग सोचते हैं कि NAT सुरक्षा बढ़ाता है। यदि यह करता है, तो यह अस्पष्टता के माध्यम से करता है। आने वाले ट्रैफ़िक की डिफ़ॉल्ट ड्रॉप जो NAT अनिवार्य करता है वह एक स्टेटफुल फ़ायरवॉल होने के समान है। यह मेरी समझ है कि NAT के लिए आवश्यक कनेक्शन ट्रैकिंग करने में सक्षम कोई भी हार्डवेयर एक स्टेटफुल फ़ायरवॉल चलाने में सक्षम होना चाहिए, इसलिए NAT वास्तव में वहाँ किसी भी बिंदु के लायक नहीं है।
प्रोटोकॉल जो एक दूसरे कनेक्शन का उपयोग करते हैं
एफ़टीपी और एसआईपी (वीओआईपी) जैसे प्रोटोकॉल नियंत्रण और वास्तविक डेटा सामग्री के लिए अलग-अलग कनेक्शन का उपयोग करते हैं। प्रत्येक प्रोटोकॉल जो ऐसा करता है उसके पास प्रत्येक NAT डिवाइस पर ALG (एप्लीकेशन लेयर गेटवे) नामक हेल्पर सॉफ्टवेयर होना चाहिए, जो किसी प्रकार के मध्यस्थ या छेद छिद्रण के साथ समस्या के आसपास काम करता है। मेरे अनुभव में, ALG शायद ही कभी अपडेट किए गए हों और कम से कम कुछ मुद्दों का कारण हो जो मैंने SIP को शामिल किया है। जब भी मैं किसी की रिपोर्ट सुनता हूं कि वीओआईपी उनके लिए काम नहीं करता था क्योंकि ऑडियो केवल एक ही तरह से काम करता था, मुझे तुरंत संदेह होता है कि कहीं न कहीं, एक नेट गेटवे है जो यूडीपी पैकेट को छोड़ रहा है, यह समझ नहीं पा रहा है कि इसके साथ क्या करना है।
सारांश में, NAT टूट जाता है:
- टीसीपी या यूडीपी के लिए वैकल्पिक प्रोटोकॉल
- पीयर-टू-पीयर सिस्टम
- NAT के पीछे किसी चीज़ की मेजबानी करना
- SIP और FTP जैसी चीजें। इसके आसपास काम करने के लिए ALG आज भी यादृच्छिक और अजीब समस्याएं पैदा करते हैं, खासकर SIP के साथ।
कोर में, लेयर्ड एप्रोच जो नेटवर्क स्टैक लेता है, अपेक्षाकृत सरल और सुरुचिपूर्ण है। नेटवर्किंग के लिए इसे किसी नए व्यक्ति को समझाने की कोशिश करें, और वे अनिवार्य रूप से यह मानते हैं कि उनके घर का नेटवर्क संभवतः समझने के लिए एक अच्छा, सरल नेटवर्क है। मैंने इस मामले को कुछ दिलचस्प (अत्यधिक जटिल) विचारों के एक जोड़े में देखा है कि बाहरी और आंतरिक पतों के बीच भ्रम के कारण रूटिंग कैसे काम करता है।
मुझे संदेह है कि नेट के बिना, वीओआईपी सर्वव्यापी होगा और पीएसटीएन के साथ एकीकृत होगा, और यह कि सेल फोन या कंप्यूटर से कॉल करना मुफ्त होगा (आपके लिए पहले से भुगतान किए गए इंटरनेट को छोड़कर)। आखिरकार, मैं फोन के लिए भुगतान क्यों करूंगा जब आप और मैं बस 64K वीओआईपी स्ट्रीम खोल सकते हैं और यह PSTN के साथ ही काम करता है? यह आज की तरह लगता है, वीओआईपी को तैनात करने के साथ नंबर 1 मुद्दा NAT उपकरणों के माध्यम से चल रहा है।
मुझे संदेह है कि हम आमतौर पर यह महसूस नहीं करते हैं कि अगर नैट टूट गया तो अंत में कनेक्टिविटी खत्म होने की कितनी सरलता हो सकती है। लोग अभी भी ईमेल (या ड्रॉपबॉक्स) खुद ही फाइल करते हैं क्योंकि अगर नैट के पीछे दो क्लाइंट्स के लिए मध्यस्थ की जरूरत की मुख्य समस्या है।