हम बीजीपी पर समुद्री युद्ध खेलते हैं

बीजीपी इंटरनेट का गोंद है। प्रोटोकॉल के लिए, जो 1989 में दो नैपकिन पर खींचा गया था , यह एक साथ आश्चर्यजनक और भयानक है कि यह आईएसपी के बीच लगभग सभी इंटरैक्शन को संभालता है, जो इंटरनेट का एक मूलभूत हिस्सा है।

मुख्य रूप से डिफ़ॉल्ट रूप से साथियों के बीच संबंधों की विश्वसनीय प्रकृति और मार्गों की वैधता को सत्यापित करने के कठिन कार्य के कारण बीजीपी की एक खराब प्रतिष्ठा है। यही कारण है कि हर जगह हम गंभीरता के अलग-अलग डिग्री के बीजीपी हैक के बारे में सुनते हैं: सभी यूट्यूब के मार्ग बदलने से लेकर एडब्ल्यूएस रूट 53 तक

लेकिन इन हैक की प्रकृति को समझने के लिए, आपको इंटरनेट की टोपोलॉजी को समझने की आवश्यकता है। आइए एक एकल राउटर से शुरुआत करें:



एक राउटर बहुत काम का होता है अगर वह कुछ भी रूट नहीं कर सकता है। इसलिए, हम भौतिक स्तर पर इसे एक और राउटर से जोड़ेंगे (यह कुछ भी हो सकता है: तांबे के ईथरनेट और पानी के नीचे के ऑप्टिकल फाइबर से 802.11 वाई-फाई लिंक)।

फिर, दो जुड़े हुए राउटर (हमारे मामले में लाल और नीले) को समझना चाहिए कि वे एक-दूसरे के लिए यातायात मार्ग कर सकते हैं। सब के बाद, राउटर का बिंदु यातायात को एक गंतव्य से दूसरे तक पहुंचाना है।

जैसा कि ऊपर उल्लेख किया गया है, आईएसपी के बीच ऐसा करने का एक सामान्य तरीका दोनों तरफ बीजीपी स्थापित करना है, और उन्हें एक दूसरे के लिए "घोषणा" करने दें कि वे ट्रैफ़िक को रूट कर सकते हैं:



लेकिन यह बहुत उपयोगी नहीं है अगर वे केवल एक दूसरे के साथ बात करते हैं, अचानक लाल और नीले रंग के राउटर सीधे जुड़े नहीं होते हैं? जितना अधिक राउटर हम कनेक्ट करते हैं, उतना ही जटिल रूटिंग टोपोलॉजी हम बनाते हैं। यह संभव है क्योंकि प्रत्येक बीजीपी सहकर्मी अन्य साथियों के साथ रूटिंग टेबल साझा करता है जिससे वह जुड़ा हुआ है:



राउटर एक दूसरे के साथ सूचनाओं का आदान-प्रदान कैसे करते हैं, यह कॉन्फ़िगरेशन नीति पर निर्भर करता है, और यह आमतौर पर पड़ोसी नोड्स के लिए वास्तविक दुनिया की स्थितियों पर निर्भर करता है। ग्राहकों, ट्रैफ़िक विनिमय समझौतों और उच्च प्रदाताओं के लिए विभिन्न सेटिंग्स हैं।

इस वजह से, राउटर को प्रोग्राम किए गए निर्देशों के एक सेट की आवश्यकता होती है ताकि वे यह पता लगा सकें कि वे अन्य नोड्स से क्या लेना या देना नहीं चाहते हैं। लेकिन समय-समय पर, हमलावर एक राउटर तक पहुंच प्राप्त करते हैं जो दूसरे राउटर से जुड़ा होता है जिसमें ऐसे फिल्टर नहीं होते हैं। सॉफ़्टवेयर स्तर पर इसे ठीक करना अविश्वसनीय रूप से कठिन है , क्योंकि इसके लिए प्रत्येक प्रदाता के राउटर में परिवर्तन की आवश्यकता होती है। पिछले प्रयास व्यापक नहीं हैं।

बीजीपी के पास समुदाय नामक मार्ग का उपयोग करके जानकारी को एन्कोड करने का तरीका है। इसे RFC1997 में परिभाषित किया गया है (दुर्भाग्य से, 1996 में लिखा गया था, थोड़ा सा चूक गया)। समुदाय को एक मार्ग घोषणा से जोड़ा जा सकता है और इसमें 32-बिट संख्या होती है। व्यवहार में, इस मान को दो 16-बिट संख्या (ASN के लिए एक और इस NN के लिए / के साथ जुड़े सिग्नल के लिए एक) में विभाजित किया गया है:



वे मार्ग के बारे में अतिरिक्त जानकारी प्रसारित करने के लिए उपयोग किए जाते हैं, उदाहरण के लिए, जहां प्रदाता ने यह मार्ग लिया है:



यह छानने के मामले में उपयोगी है। उदाहरण के लिए, यदि आपके पास कई प्रदाता हैं और आप देश के बाहर ट्रैफ़िक नहीं जाने देने का प्रयास करते हैं, तो आप इन मार्गों से यातायात को निर्देशित करने के लिए उपयुक्त समुदाय का उपयोग कर सकते हैं।

इसने मुझे सोच में डाल दिया। मैं समुदाय के माध्यम से और क्या संकेत कर सकता हूं? और कितनी दूर जा सकते हैं?

कुछ परीक्षण के बाद, यह पता चला कि प्रत्येक टियर -1 नेटवर्क समुदाय को मिटा देता है, पूर्व स्तर 3 को छोड़कर, जो स्रोत राउटर से क्लाइंट को समुदाय के हस्तांतरण की अनुमति देता है। इसका मतलब यह भी है कि एक राउटर एक सीधा कनेक्शन के बिना भी दूसरों को जानकारी भेज सकता है।

समुद्र की लड़ाई


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

बीजीपी पर दो खेल दो समुदाय बनाए गए।



पूरा खेल दो 16-बिट संख्या में फिट बैठता है, जिससे दो समुदायों के माध्यम से विश्वसनीय खेलने की अनुमति मिलती है।

चूंकि नौसैनिक मुकाबला दो के लिए एक खेल है, इसलिए मैंने AS203729 को खेलने के लिए आमंत्रित किया। यह न्यूयॉर्क में बीजीपी से जुड़ा है, और मेरी स्थापना लंदन में काम करती है।

गेम की योजना बनाते समय, हमने माना कि मार्गों को अपडेट करने की आवृत्ति के कारण, हम बीजीपी ट्रैफ़िक को कम कर सकते हैं। चूंकि हम दोनों वास्तविक उत्पादन यातायात पर बैठे हैं, इसलिए हम प्रत्येक चाल के लिए 30-सेकंड का टाइमर सेट करने के लिए सहमत हुए, क्योंकि डंपिंग के कारण उत्पादन सर्वर में विफलताएं होंगी।

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

इन सेटिंग्स के साथ, 16 मई 2018 को, AS206924 और AS203729 ने शायद इतिहास में पहला बोर्ड गेम खेला जो विशुद्ध रूप से बीजीपी पर आयोजित किया गया था।



उपरोक्त भिगोना के कारण 45 मिनट के ठहराव के अपवाद के साथ खेल आसानी से चला गया। यह मेरी तरफ से हुआ और स्तर 3 ने 45 मिनट के लिए मेरे यातायात के लिए कम इष्टतम मार्ग लागू किया। स्थिति की पुनरावृत्ति को रोकने के लिए, हमने चालों के बीच 90 सेकंड की अवधि में स्विच करने का निर्णय लिया।

इसके बावजूद, मेरे मित्र AS203729 के बेड़े को अंतिम झटका 68 के कदम पर दिया गया। जो मुझे सार्वजनिक इंटरनेट रूटिंग प्रोटोकॉल का उपयोग करके आयोजित बोर्ड गेम का पहला विजेता बनाता है।

क्या वह तार्किक था? शायद नहीं। क्या यह मज़ेदार था? गोश, हाँ।

स्रोत कोड दोनों पक्षों पर प्रकाशित किया गया है, हालांकि मैं इस प्रयोग को दोहराने का प्रस्ताव नहीं करता हूं।

अगली बार तक!

Source: https://habr.com/ru/post/hi415689/


All Articles