पहले से अंतिम IP रेंज को सटीक VPN रूट में बदलें
पहले से अंतिम पते की रेंज शायद ही किसी एक प्रीफ़िक्स में फ़िट होती है। इसे सटीक CIDR ब्लॉक में बदलें ताकि रूट अंतराल के बाहर के गंतव्यों को न पकड़े।
कोई आपको पहला और अंतिम पता देकर VPN रूट माँगता है। लुभावना कदम यह है कि दोनों सिरों को समेटने वाला सबसे छोटा प्रीफ़िक्स चुन लिया जाए, और वह कदम चुपचाप ऐसे गंतव्य जोड़ देता है जिनके बारे में किसी ने नहीं पूछा। CIDR ब्लॉक का आकार हमेशा दो की घात होता है और शुरुआती पता उसके साथ संरेखित होता है, इसलिए एक मनमाने अंतराल को आम तौर पर एक से अधिक की ज़रूरत होती है। अंतराल पर चलें, उसे ठीक-ठीक विभाजित करें, फिर उसके ठीक बाहर के पतों की जाँच करें।
प्रीफ़िक्स से नहीं, अंतराल से शुरू करें
कुछ और लिखने से पहले पहला पता और अंतिम पता लिख लें। यह जोड़ी ही आवश्यकता है; प्रीफ़िक्स उसका केवल एक संभावित रूप है, और कभी-कभी ग़लत रूप। दो संख्याओं की जाँच मास्क से कहीं अधिक आसान भी है।
संरेखित अंतराल एक ही ब्लॉक में सिमट जाता है। असंरेखित अंतराल कई ब्लॉकों में टूटता है, और यह विभाजन अनुमानित नहीं, सटीक होता है। आपको जो नहीं करना चाहिए वह है बाहर की ओर गोल करके उसे काफ़ी करीब कहना, क्योंकि अतिरिक्त पतों को वही नीति मिलती है जो रूट अपने साथ ले जाता है।
ग़लती की दोनों दिशाएँ मायने रखती हैं। सुरंग में जाने वाले रूट के लिए अतिरिक्त पते VPN में खींच लिए जाते हैं। बाईपास अपवाद के लिए अतिरिक्त पते उसे छोड़ देते हैं। दोनों में से कोई परिणाम ऐसी रूट तालिका में दिखाई नहीं देता जो केवल आपके द्वारा लगाया गया प्रीफ़िक्स दिखाती है।
पहला मामला: अंतराल संयोगवश संरेखित है
198.51.100.64 से 198.51.100.127 लें। पहला पता 64 पतों की सीमा पर संरेखित है और अंतराल ठीक 64 पते का है, इसलिए एक ही /26 बिना किसी अतिरिक्त के इसका वर्णन करता है।
यह आसान मामला है और इसे पहचानना उचित है, क्योंकि इसका अर्थ है कि आवश्यकता संभवतः ऐसे किसी व्यक्ति ने लिखी जो पहले से प्रीफ़िक्स में सोच रहा था। इसका यह भी अर्थ है कि जाँच छोटी है: पुष्टि करें कि आकार दो की घात है और शुरुआत उस आकार का गुणज है।
दस्तावेज़ीकरण रेंज अच्छे उदाहरण बनाती हैं ठीक इसलिए कि उनका कोई मालिक नहीं होता। इन पतों को किसी वास्तविक सुरंग पर न लगाएँ, और यह न मानें कि आपको दी गई रेंज केवल असामान्य दिखने के कारण दस्तावेज़ीकरण स्थान है।
दूसरा मामला: संरेखित नहीं है, इसलिए विभाजित करें
अब 198.51.100.100 से 198.51.100.107 लें। ये आठ पते हैं, जो दो की घात है, लेकिन 100 आठ का गुणज नहीं है। उस आकार का एक भी ब्लॉक वहाँ से शुरू नहीं हो सकता, इसलिए अंतराल को एक से अधिक से ढकना होगा।
सटीक आवरण दो /30 ब्लॉक हैं: 198.51.100.100/30 100 से 103 तक ढकता है, और 198.51.100.104/30 104 से 107 तक। कुल आठ पते, अंतराल के बाहर कुछ नहीं, और दिए गए अंतराल के लिए विभाजन अद्वितीय है।
python3 -c "from ipaddress import ip_address, summarize_address_range as s; print(*s(ip_address('198.51.100.100'), ip_address('198.51.100.107')), sep='\n')"
मानक लाइब्रेरी का फ़ंक्शन आपके लिए गणित करता है, और ipaddress दस्तावेज़ तय करता है कि यह क्या लौटाता है। जो यह नहीं करता वह है गेटवे चुनना, यह तय करना कि पते किसके हैं, या उनके पीछे की किसी भी सेवा तक पहुँच देना।
मापें कि व्यापक प्रीफ़िक्स क्या पकड़ता
किसी शॉर्टकट को स्वीकार करने से पहले गणना करें कि उसकी कीमत क्या है। 198.51.100.96 से शुरू होने वाला /28 96 से 111 तक ढकता है, जो आठ के बजाय सोलह पते हैं। अतिरिक्त आठ 96 से 99 और 108 से 111 हैं, और उनमें से हर एक को रूट विरासत में मिलता।
python3 -c "from ipaddress import ip_network as n; w=set(n('198.51.100.96/28')); t=set(n('198.51.100.100/30'))|set(n('198.51.100.104/30')); print(len(w), len(t), sorted(w-t))"
आठ अतिरिक्त गंतव्य एक ठोस संख्या है जिसे आप परिवर्तन अनुरोध में डाल सकते हैं। यह वही संख्या भी है जो तय करती है कि शॉर्टकट स्वीकार्य है या नहीं, और यह नीति का प्रश्न है, गणित का नहीं।
गणित और खोज को अलग रखें। नेटवर्क ऑपरेटर द्वारा दिया गया अंतराल सटीक रूप से परिवर्तित होता है। बदलती सेवा का एक DNS उत्तर उस सेवा की पूरी या स्थायी रेंज स्थापित नहीं करता, और असंबंधित नाम एक पता साझा कर सकते हैं।
सटीक सेट लगाएँ और किनारों को सत्यापित करें
प्रत्येक परिणामी प्रीफ़िक्स उसे दें जो VPN कॉन्फ़िगरेशन का मालिक है और उसे समर्थित तंत्र के माध्यम से लगाने दें। यदि आवश्यकता को दो प्रविष्टियाँ चाहिए, तो फ़ॉर्म छोटा करने के लिए एक को चौड़ा करने के बजाय दो प्रविष्टियाँ रखें।
sudo ip route add 198.51.100.100/30 via 10.90.0.1 dev tun0 sudo ip route add 198.51.100.104/30 via 10.90.0.1 dev tun0 ip route get 198.51.100.101 ip route get 198.51.100.97
अंतिम दो कमांड वही हैं जिन्हें लोग छोड़ देते हैं। पहला भीतरी पता नए रूट का पालन करना चाहिए, और अंतराल के ठीक बाहर का पता नहीं। यदि दोनों एक ही रास्ते जाते हैं, तो अंतराल को आवश्यकता और कॉन्फ़िगरेशन के बीच कहीं चौड़ा किया गया है।
पहला पता, अंतिम पता और उन्हें व्यक्त करने वाले प्रीफ़िक्स दर्ज करें। नियम की समीक्षा करने वाला अगला व्यक्ति फिर गणित दोहराए बिना आवश्यकता को कॉन्फ़िगरेशन के विरुद्ध जाँच सकेगा, और सटीक रूट तथा सुविधाजनक रूट के बीच का अंतर दिखाई देता रहेगा।