एक पैकेट लैपटॉप से निकलता है, कभी VPN गेटवे तक नहीं पहुँचता, और कोई फ़ायरवॉल काउंटर नहीं हिलता। रूट तालिका पहले ही पैकेट का भाग्य तय कर चुकी है: एक ब्लैकहोल प्रविष्टि उससे मेल खाई और कर्नेल ने किसी भी इंटरफ़ेस के उसे देखने से पहले उसे छोड़ दिया। यह व्यवहार तब उपयोगी है जब किसी गंतव्य को बंद-विफल होना चाहिए, लेकिन यह संकीर्ण दायरे की रूटिंग क्रिया है। इसे पूरा किल स्विच मानना वहीं है जहाँ डिज़ाइन गलत होते हैं।

छोड़ने की क्रिया वास्तव में किससे मेल खाती है

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

इसलिए ब्लैकहोल का दायरा सटीक और कहने में आसान है: यह प्रीफ़िक्स को, तालिका में, उस पता परिवार के लिए कवर करता है। यह ऐसे गंतव्य को नहीं कवर करता जिसे कोई दूसरी तालिका जीत लेती, और यह केवल इसलिए IPv6 को नहीं कवर करता कि IPv4 प्रीफ़िक्स छोड़ा जा रहा है।

ip route get कुछ भी तैनात करने से पहले निर्णय दिखाता है, जिसमें तालिका और रूट प्रकार शामिल हैं। उस आउटपुट को पढ़ना विफल अनुरोध से अनुमान लगाने से तेज़ है कि कौन-सा नियम या प्रीफ़िक्स लागू हुआ।

ब्लैकहोल unreachable या prohibit के समान नहीं है

Linux तीन छोड़ने जैसे रूट प्रकार देता है, और वे इसमें भिन्न हैं कि प्रेषक क्या देखता है। ब्लैकहोल पैकेट को बिना उत्तर के गिरा देता है, इसलिए क्लाइंट समय-समाप्ति देखता है। unreachable रूट ICMP unreachable संदेश लौटाता है, इसलिए कनेक्शन होस्ट या नेटवर्क त्रुटि के साथ जल्दी विफल होता है। prohibit रूट प्रशासनिक निषेध की त्रुटि लौटाता है, जो जानबूझकर पॉलिसी अस्वीकृति के अधिक निकट है।

वह व्यवहार चुनें जो आप एप्लिकेशन को दिखाना चाहते हैं। जब आप पॉलिसी प्रकट नहीं करना चाहते तब मौन छोड़ना उपयुक्त है, और जब उपयोगकर्ताओं को समझना हो कि गंतव्य क्यों अनुपलब्ध है तब तत्काल त्रुटि बेहतर है। नेटवर्क में प्रकारों को मिलाने से ऐसे सहायता टिकट बनते हैं जो एक ही पॉलिसी को तीन अलग खराबियों के रूप में बताते हैं।

कनेक्शन का निदान करते समय यह न मानें कि हर छोड़ने वाली प्रविष्टि विनिमेय है। त्रुटि पाठ, समय और पैकेट कैप्चर भिन्न होते हैं, और तालिका में रूट प्रकार बताता है कि आप किसे देख रहे हैं। ip-route मैनुअल प्रकारों और उनके त्रुटि व्यवहार की सूची देता है।

यह किल स्विच से कैसे तुलना करता है

किल स्विच पैकेट फ़िल्टरिंग है: एक फ़ायरवॉल नियम जो टनल से बाहर जाने वाले आउटबाउंड ट्रैफ़िक को छोड़ देता है। ब्लैकहोल रूट स्टैक में पहले लिया गया फ़ॉरवर्डिंग निर्णय है। दोनों ट्रैफ़िक रोक सकते हैं, पर वे अलग चीज़ें देखते हैं और अलग मामले चूकते हैं।

MechanismWhat it blocksWhat it missesHow failure looks
Blackhole routeDestinations matching the prefix and tableOther tables, other address families, traffic with a different routeSilent timeout
Firewall kill switchEgress not bound to the tunnel interfaceRules that are too broad can break the endpoint or DHCPDropped packets with counters
WireGuard AllowedIPsDestinations not routed into the interfaceTraffic that never enters the interface at allNo tunnel route, direct egress

कवरेज वहीं है जहाँ तुलना मायने रखती है। फ़ायरवॉल स्वामी, पोर्ट या इंटरफ़ेस से मेल खा सकता है और किसी एप्लिकेशन को अवरुद्ध कर सकता है जबकि एंडपॉइंट पहुँच योग्य रहे; रूट यह नहीं कर सकता। इसके विपरीत, रूट किसी पैकेट फ़िल्टर को लोड किए बिना पूरा प्रीफ़िक्स छोड़ने में भेज सकता है, जो न्यूनतम सिस्टम पर उपयोगी है।

WireGuard का AllowedIPs क्रिप्टोकी रूटिंग है, फ़ायरवॉल नहीं। यह तय करता है कि कौन-से गंतव्य प्रीफ़िक्स इंटरफ़ेस में स्वीकार किए जाते हैं, और केवल टनल सबनेट सूचीबद्ध करने वाली प्रोफ़ाइल अन्य गंतव्यों को सामान्य डिफ़ॉल्ट रूट पर छोड़ देती है। इसीलिए फ़ुल-टनल प्रोफ़ाइल 0.0.0.0/0 का उपयोग करती हैं और इसीलिए wg-quick जब कर सकता है तब फ़ायरवॉल नियम भी स्थापित करता है।

टनल एंडपॉइंट को छोड़ने से बाहर रखें

एंडपॉइंट का बाहरी पता भौतिक इंटरफ़ेस से पहुँच योग्य रहना चाहिए। जो छोड़ना उस पते को भी पकड़ लेता है वह हैंडशेक को बाहर जाने से रोकता है, और टनल कभी नहीं उठता, जो रूटिंग पॉलिसी के बजाय VPN विफलता जैसा दिखता है। बदलाव से पहले और बाद में एंडपॉइंट का रूट जाँचें।

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

IPv6 को अपनी प्रविष्टि और अपनी समीक्षा चाहिए। जो डिज़ाइन IPv4 को ब्लैकहोल में छोड़ता है और IPv6 को डिफ़ॉल्ट रूट पर छोड़ देता है, वह ठीक वही ट्रैफ़िक लीक करता है जिसे पॉलिसी रोकना चाहती थी, और गलती केवल IPv4 वाले परीक्षण में अदृश्य रहती है।

इसे टाइमर और रोलबैक के साथ चरणबद्ध करें

रूट को छोटी स्वचालित हटाने के साथ लागू करें ताकि गलती रीबूट के पार न टिके। नीचे दिए कमांड दस्तावेज़ीकरण श्रेणी का उपयोग करते हैं; इसे उस प्रीफ़िक्स से बदलें जिसे आपका डिज़ाइन वास्तव में छोड़ता है:

sudo ip route replace blackhole 10.0.0.0/8
ip route get 10.1.2.3
sudo systemd-run --on-active=60 /sbin/ip route del blackhole 10.0.0.0/8

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

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

संबंधित लेख