OpenVPN मा persist-tun र persist-key ले वास्तवमा के जोगाउँछन्
दुवै विकल्पले जीवित प्रक्रियाभित्रको नरम पुनःसुरु समेट्छन्। ती रोकेपछि इन्टरफेस राख्दैनन्, र ती ट्राफिक अवरोध गर्ने नीति होइनन्।
सेवा रोक्दा persist-tun सेट भए पनि इन्टरफेस हट्छ। यो विकल्प कागजातअनुसार काम गरिरहेको हो, असफलता होइन। विकल्पले चलिरहेको प्रक्रियाभित्र एउटा पुनःसुरु मार्ग वर्णन गर्छ, र systemctl stop त्यो मार्ग होइन।
दुवै नाम सँगै पढ्नुहोस् र डिजाइन स्पष्ट हुन्छ। एउटाले डिस्क्रिप्टर राख्छ, अर्कोले कुञ्जी सामग्री राख्छ, र दुवै विशेषाधिकार छोडेपछि के हुन्छ त्यसका कारण अस्तित्वमा छन्।
दुई स्रोत र ती जुन रिसेटसँग सम्बन्धित छन्
OpenVPN ले दुई सामान्य अवस्थामा आफ्नै पुनःसुरुको संकेत गर्छ। स्पष्ट SIGUSR1 ले त्यो गर्छ, र मृत साथीले ट्रिगर गरेको ping-restart ले पनि त्यही गर्छ। दुवैले प्रक्रिया जीवित राख्छन् र जडान सेटअप फेरि चलाउँछन्, र त्यहीँ विकल्पहरूले आफ्नो ठाउँ कमाउँछन्।
| Event | TUN/TAP device | Key and auth files | Addresses and routes | up/down hooks |
|---|---|---|---|---|
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itself | survives only with persist-tun | survive only with persist-key | survive with the device, otherwise rebuilt | run again only when restart hooks are enabled |
Configuration reload, SIGHUP | recreated | re-read from disk | rebuilt once the device returns | run again |
| Service stop | lost | re-read at the next start | removed | run at the next start |
यी दुई विकल्पले बदल्ने कुरा नरम-रिसेट पंक्ति मात्र हो, र तिनीहरूले छोड्ने काम व्यस्त लिंकमा महँगो भाग हो। यन्त्र फेरि खोल्दा त्यसमा जोडिएका ठेगाना र मार्ग भत्किन्छन्, र तिनीहरू पुनःनिर्माण गर्दा रिसेट सुरु हुँदा बाटोमा रहेका प्याकेट खस्न सक्छन्। रोक्नेले ती वस्तुहरूलाई जोगाउने कुनै विकल्प बिना नष्ट गर्छ।
यी विकल्पहरू किन नै छन्
कडा बनाइएको OpenVPN सर्भर सामान्यतया root को रूपमा सुरु हुन्छ, आफ्ना कुञ्जी र यन्त्र खोल्छ, त्यसपछि विशेषाधिकार नभएको प्रयोगकर्तामा झर्छ। त्यसपछि केही कार्यहरू यत्तिकै हराउँछन्। मोड 0600 को कुञ्जी फाइल पढ्ने, नेटवर्क इन्टरफेस बनाउने वा मार्ग बदल्ने सबै अस्वीकार हुन सक्छन्।
persist विकल्प बिना, ping-restart ट्रिगर गर्न पर्याप्त समय चुप बस्ने साथीले ठ्याक्कै ती कार्यहरू बाध्य पार्छ। कन्फिगरेसनमा केही नबदले पनि पुनःजडान असफल हुन्छ। प्रक्रिया कारणबिना मर्दै गरेको जस्तो देखिन्छ, र लगले नेटवर्क त्रुटिको सट्टा अनुमति त्रुटि देखाउँछ।
तिनीसँग, नरम रिसेटले विशेषाधिकार प्राप्त चरणले पहिले नै पाएको कुरा पुनः प्रयोग गर्छ। कुनै जादु छैन र प्रक्रिया केही पनि जोगाउँदैन। स्रोत प्राप्ति यत्तिकै पर सारिन्छ।
अन्तिम होइन, पहिलो त्रुटि पढ्नुहोस्
रिसेट असफल हुँदा, अन्तिमको सट्टा पहिलो त्रुटि पढ्नुहोस्। सुरक्षित कुञ्जी, auth फाइल, इन्टरफेस ioctl र बाह्य हुक चार फरक स्रोत हुन्। एउटा राख्नाले अरूमा पहुँचबारे केही भन्दैन। फायरवाल उपकरण बोलाउने हुकलाई अझै त्यो उपकरणले माग्ने विशेषाधिकार चाहिन्छ।
हुकको आफ्नै स्विच हुन्छ। OpenVPN म्यानुअल ले persist विकल्पहरूलाई up-restart सँग जोड्छ, जसले रिसेटपछि up र down स्क्रिप्ट फेरि चल्ने कि नचल्ने तय गर्छ। त्यसैले माथि रहेको इन्टरफेसले तपाईंको रिजोल्भर एकीकरण ताजा भयो कि भएन भन्नेबारे केही भन्दैन।
# which restart path just happened?
journalctl -u openvpn-client@office --since '10 min ago' | grep -E 'SIGUSR1|ping-restart|Restart pause|NOTE:'
# did the interface survive, and do its routes still exist?
ip -brief link show tun0
ip route show dev tun0
यी दुई आदेशले दुई असफलता विधि सेकेन्डमै छुट्याउँछन्। रहेको तर मार्ग हराएको इन्टरफेस हुक वा मार्गको समस्या हो। हराएको इन्टरफेस भनेको प्रक्रिया साँच्चै सकियो।
राखिएको इन्टरफेस kill switch होइन
यदि आवश्यकता ट्राफिक कहिल्यै सुरुङबाहिर नजाओस् भन्ने हो भने, राखिएको यन्त्रले त्यो दिँदैन। अर्को ठेगाना परिवारका मार्ग, दोस्रो पूर्वनिर्धारित मार्ग, र प्रक्रिया पूरै बाहिर निस्कने अवस्था सबै विकल्पको दायराबाहिर रहन्छन्।
दुई आवश्यकता छुट्टाछुट्टै व्यवस्थापन गर्नुहोस्। पुनःजडानहरूबीच सुरुङ वस्तु राख्नु डेमनका लागि सुविधा हो। सुरुङ बन्द हुँदा बाहिर जाने कुरा रोक्नु आफ्नै नियम र आफ्नै परीक्षण भएको फायरवाल नीति हो। तिनलाई मिसाउँदा रक्षात्मक देखिने तर उत्तम-प्रयास पुनःजडानजस्तै व्यवहार गर्ने कन्फिग बन्छ।
निदान गर्नुअघि घटनाको नाम राख्नुहोस्। नरम रिसेट, असफल जडान प्रयास र सेवा रोक्नु तीन व्यवहार भएका तीन घटना हुन्, र पहिलो मात्र यी विकल्पले वर्णन गर्ने कुरा हो।