ब्ल्याकहोल रुट र VPN किल स्विच: प्रत्येकले के गर्छ
ब्ल्याकहोल रुटले मिल्ने ट्राफिकलाई छोड्छ र असफलतामा बन्द बाटो लाद्छ। यसको दायरा र अन्धा बिन्दुहरूलाई प्याकेट फिल्टरमा आधारित किल स्विचसँग तुलना गर्नुहोस्।
एउटा प्याकेट ल्यापटपबाट निस्कन्छ, VPN गेटवेमा कहिल्यै पुग्दैन, र कुनै फायरवल काउन्टर सर्दैन। रुट तालिकाले प्याकेटको भाग्य पहिले नै तय गरिसकेको छ: एउटा ब्ल्याकहोल प्रविष्टि त्यससँग मिल्यो र कुनै पनि इन्टरफेसले देख्नुअघि कर्नेलले त्यसलाई फालिदियो। गन्तव्य बन्द रूपमा असफल हुनुपर्ने बेला यो व्यवहार उपयोगी हुन्छ, तर यो साँघुरो दायराको रुटिङ क्रिया हो। यसलाई पूरा किल स्विच मान्नु नै डिजाइनहरू गल्ती हुने ठाउँ हो।
फाल्ने क्रियाले वास्तवमा केसँग मिल्छ
रुट खोजले एउटा तालिका छान्छ, त्यसपछि त्यसभित्र सबैभन्दा लामो मिल्ने प्रिफिक्स छान्छ। ब्ल्याकहोल रुट क्रिया फाल्नु भएको सामान्य प्रविष्टि हो, त्यसैले सम्पूर्ण निर्णयपछि त्यो प्रविष्टि छान्ने प्याकेटलाई मात्र असर गर्छ। नीति नियमले तालिका बदल्नुहोस्, वा अझ विशिष्ट प्रिफिक्स थप्नुहोस्, फाल्ने कार्य लागू हुँदैन।
त्यसैले ब्ल्याकहोलको दायरा ठ्याक्कै र भन्न सजिलो छ: यसले प्रिफिक्स, तालिकामा, त्यो ठेगाना परिवारका लागि समेट्छ। अर्को तालिकाले जित्ने गन्तव्य यसले समेट्दैन, र केवल IPv4 प्रिफिक्स फालिएको कारणले IPv6 समेट्दैन।
ip route get केही पनि तैनाथ गर्नुअघि निर्णय देखाउँछ, तालिका र रुट प्रकार सहित। त्यो आउटपुट पढ्नु असफल अनुरोधबाट कुन नियम वा प्रिफिक्स लागू भयो भन्ने अनुमान गर्नुभन्दा छिटो हुन्छ।
ब्ल्याकहोल unreachable वा prohibit जस्तो होइन
Linux ले फाल्नेजस्ता तीन रुट प्रकार दिन्छ, र ती प्रेषकले के देख्छ भन्नेमा फरक पर्छन्। ब्ल्याकहोलले प्याकेटलाई जवाफबिना खसाल्छ, त्यसैले क्लाइन्टले समय समाप्ति देख्छ। unreachable रुटले ICMP unreachable सन्देश फर्काउँछ, त्यसैले जडान होस्ट वा नेटवर्क त्रुटिसँग छिटो असफल हुन्छ। prohibit रुटले प्रशासनिक निषेधको त्रुटि फर्काउँछ, जुन जानाजान नीति अस्वीकारसँग नजिक छ।
एप्लिकेसनले देख्नुपर्ने व्यवहार छान्नुहोस्। नीति प्रकट गर्न नचाहँदा शान्त फाल्नु उपयुक्त हुन्छ, र गन्तव्य किन उपलब्ध छैन भनी प्रयोगकर्ताले बुझ्नुपर्ने बेला तत्काल त्रुटि राम्रो हुन्छ। नेटवर्कभरि प्रकार मिसाउँदा एउटै नीतिलाई तीन फरक खराबीका रूपमा वर्णन गर्ने सहायता टिकटहरू बन्छन्।
जडानको निदान गर्दा प्रत्येक फाल्ने प्रविष्टि अदलबदल गर्न मिल्ने हो भनी नमान्नुहोस्। त्रुटि पाठ, समय र प्याकेट क्याप्चर फरक हुन्छन्, र तालिकाको रुट प्रकारले तपाईं कुन हेर्दै हुनुहुन्छ भनी बताउँछ। ip-route पुस्तिका प्रकार र तिनका त्रुटि व्यवहार सूचीबद्ध गर्छ।
किल स्विचसँग यो कसरी तुलना हुन्छ
किल स्विच प्याकेट फिल्टरिङ हो: सुरुङबाहिर जाने बाहिरी ट्राफिक फाल्ने फायरवल नियम। ब्ल्याकहोल रुट स्ट्याकमा अगाडि लिइने फर्वार्डिङ निर्णय हो। दुवैले ट्राफिक रोक्न सक्छन्, तर तिनले फरक कुरा देख्छन् र फरक अवस्था छुटाउँछन्।
| Mechanism | What it blocks | What it misses | How failure looks |
|---|---|---|---|
| Blackhole route | Destinations matching the prefix and table | Other tables, other address families, traffic with a different route | Silent timeout |
| Firewall kill switch | Egress not bound to the tunnel interface | Rules that are too broad can break the endpoint or DHCP | Dropped packets with counters |
| WireGuard AllowedIPs | Destinations not routed into the interface | Traffic that never enters the interface at all | No 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दोस्रो आदेशले ब्ल्याकहोल रुट र त्यो कुन तालिकाबाट आयो भनी जनाउनुपर्छ। तेस्रोले एक मिनेटमा हटाउने तालिका बनाउँछ, जुन नीति पुष्टि गर्न पर्याप्त समय र टाढाको होस्टमा गल्तीबाट सुधार हुन पर्याप्त छोटो छ। व्यवहार पुष्टि भएपछि, अन्य रुटको मालिक त्यही कन्फिगरेसन व्यवस्थापनमार्फत प्रविष्टि स्थायी बनाउनुहोस्।
प्रिफिक्स, तालिका, ठेगाना परिवार र रोलब्याक विधि अभिलेख गरेर परिवर्तन बन्द गर्नुहोस्। फाल्नु रुटिङ डिजाइनमा जानाजान गरिएको अपवाद हो, र अर्को इन्जिनियरले यो अझै उपयुक्त छ कि छैन भन्ने निर्णय गर्नुअघि कुन ट्राफिक रोक्नका लागि यो थियो भनी जान्नुपर्छ।