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

जवाब रूट होता है, याद नहीं रखा जाता

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

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

सख़्त रिवर्स-पाथ फ़िल्टरिंग इनबाउंड पैकेट को डेमन के पढ़ने से पहले ही गिरा सकती है। पहले वह काउंटर देखें, क्योंकि फ़िल्टर की गिरावट और रूटिंग की ग़लती बाहर से एक जैसी दिखती हैं।

ip route show default
sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.eth0.rp_filter
nft list ruleset | grep -A3 'hook forward'

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

वापसी पथ बनाए रखने के तीन तरीक़े

सेवा के गंतव्य को टनल से बाहर रखना सबसे संकीर्ण विकल्प है। LAN गेटवे की ओर इंगित होस्ट रूट, साथ में हर पते के बजाय भौतिक पते से बंधा डेमन, उस एक प्रवाह को टनल से बाहर रखता है। बदलाव स्थानीय है और पलटना आसान है।

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

ip rule add from 203.0.113.25/32 table 100 priority 100
ip route add default via 192.0.2.1 dev eth0 table 100
ip route get 198.51.100.7 from 203.0.113.25

पहले दो कमांड सार्वजनिक पते से आने वाले जवाबों के लिए वैकल्पिक पथ बनाते हैं। तीसरा कर्नेल से पूछता है कि ठीक वही स्रोत और गंतव्य कौन सा पथ लेंगे, और इसी तरह आप पुष्टि करते हैं कि नियम का कोई असर है।

स्रोत अनुवाद तीसरा विकल्प है और अकेला ऐसा है जो सेवा के सामने पहले से NAT करने वाले राउटर के सामने टिकता है। जवाब को उसी राउटर पर लौटना होता है, और WAN इंटरफ़ेस पर मास्करेडिंग यह हासिल करता है और क्लाइंट को सेवा लॉग से छिपाता है। कनेक्ट होने के बाद डिफ़ॉल्ट रूट हाथ से बदलना एक निदान है, क्योंकि क्लाइंट अगली बार फिर कनेक्ट होने पर तालिका फिर से लिखता है।

जब बॉक्स LAN के लिए भी रूट करता है

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

तब कनेक्शन ट्रैकिंग ऐसे प्रवाह का जवाब देखती है जिसे उसने कभी दर्ज नहीं किया और उसे गिरा देती है। गंतव्य अनुवाद इनबाउंड कनेक्शन को उपकरण तक पहुँचाता है, और स्रोत अनुवाद जवाब को ऐसा दिखाता है जैसे वह राउटर से ही आया हो।

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

कारणों को अलग करने वाली तीन जाँचें

तीन जाँचें चलाएँ: इंटरनेट से बॉक्स में एक कनेक्शन, उससे बाहर एक सार्वजनिक होस्ट तक कनेक्शन, और एक नाम की खोज। जब पहले दो असहमत हों, तो वापसी पथ दोषी है। जब नाम दोनों दिशाओं में विफल हों, तो रिज़ॉल्वर एक अलग ख़राबी है जो केवल टनल साझा करती है।

पहले रूटिंग का सवाल ठीक करें, फिर नाम देखें। दोनों को मिलाना ही वह तरीक़ा है जिससे काम करता सर्वर टूटे रिज़ॉल्वर के लिए दोषी ठहराया जाता है।

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

संबंधित लेख