सुरुङ बन्द छ, तर मेसिन अझै यो खुला छ जस्तै व्यवहार गर्छ: एउटा लुकअप टाइमआउट नहुन्जेल झुन्डिरहन्छ, र एउटा रुट अब नभएको इन्टरफेसमा संकेत गर्छ। यो आफ्नो डिस्कनेक्ट हेल्पर नचलाई मरेको openconnect प्रक्रियाको चिन्ह हो। यसले बनाएको नेटवर्क अवस्था अझै स्थापित छ, र प्रणालीमा अरू कसैलाई पनि यसलाई कसरी हटाउने भन्ने थाहा छैन।

मेसिनभित्र अवस्था बनेको क्रममा हिँड्नुहोस्: प्रक्रिया, लिंक, रुट, रिजोल्भर। हरेक चरणले क्लाइन्ट साँच्चै गयो वा तपाईंको टर्मिनलबाट मात्र अलग भयो भन्ने बताउँछ, र यही भिन्नताले केही ठीक गर्ने हो कि होइन भनेर निर्णय गर्छ।

प्रक्रियाबाट सुरु गर्नुहोस्, कन्फिगरेसनबाट होइन

रुट छुनुअघि टर्मिनल खोल्नुहोस् र अझै के चलिरहेको छ सोध्नुहोस्। pgrep -a openconnect हरेक इन्स्टेन्सलाई यसका आर्गुमेन्टसहित सूचीबद्ध गर्छ, जसले pid फाइल र यसलाई दिइएको स्क्रिप्ट देखाउँछ। तपाईंले नसोचेको प्रक्रियाले फ्यान्टम सुरुङलाई कुनै पनि लगभन्दा छिटो व्याख्या गर्छ।

यदि केही चलिरहेको छैन भने लिंक हेर्नुहोस्। ip link show tun0 इन्टरफेस बाँच्यो कि भन्ने बताउँछ, र ip route show dev tun0 अझै यसमा बाँधिएका रुटहरू सूचीबद्ध गर्छ। त्यसपछि रिजोल्भर यसले जाँच्नुहोस् resolvectl status। परिवर्तन गर्नुअघि तीनै आउटपुट लेख्नुहोस्, किनकि त्यही अभिलेख नै पछि पुरानो प्रविष्टि नयाँबाट छुट्याउने तरिका हो।

गएको इन्टरफेसले सामान्यतया आफ्ना रुट पनि लिएर जान्छ। लिंकपछि टिकिरहने रुटहरूले सामान्यतया प्रक्रिया अझै जीवित छ वा दोस्रो क्लाइन्टसँग यन्त्र छ भन्ने अर्थ दिन्छ।

परिवर्तनहरू फर्काउने काम हेल्पर स्क्रिप्टले गर्छ

openconnect आफैंले इन्टरफेस, रुट वा रिजोल्भर प्रविष्टि हटाउँदैन। यसले बाह्य हेल्पर बोलाउँछ, /etc/vpnc/vpnc-script upstream build मा र /usr/share/vpnc-scripts/vpnc-script Debian र Ubuntu प्याकेजहरूमा, छनोट यसरी गरिन्छ: -s। सुरुङ उभ्याउने स्क्रिप्टले नै यसलाई भत्काउँछ।

प्रक्रिया त्यो हेल्पर नबोलाई बाहिर निस्कियो भने अवस्था रहिरहन्छ। OpenConnect म्यानुअल स्क्रिप्टबिना राउटिङ र नाम सेवा ठीकसँग काम गर्दैनन् भनी स्पष्ट भन्छ, र बाहिर निस्कँदा इन्टरफेसको अवस्था भत्काउने घटकका रूपमा हेल्परको वर्णन गर्छ। त्यसैले क्लाइन्ट -s सँग सुरु गर्दा मार्ग महत्त्वपूर्ण हुन्छ।

त्यो मार्गसम्म कुन सिग्नल पुग्छ भन्ने संस्करणहरूबीच बदलियो। 7.06 म्यानुअलले SIGTERM लाई स्क्रिप्ट छोड्ने तत्काल निकास मान्छ। हालका build हरूले INT र TERM लाई सफा रोकका रूपमा कागजात गर्छन्, जहाँ सत्र लगआउट हुन्छ र हेल्पर चल्छ। दुईमध्ये कुनै व्यवहार मान्नुको सट्टा तपाईंसँग साँच्चै भएको बाइनरीको SIGNALS खण्ड पढ्नुहोस्।

man openconnect | sed -n '/^SIGNALS/,/^LIMITATIONS/p'

तपाईंको build ले कागजात गर्ने सिग्नल पठाउनुहोस्

सिग्नल थाहा भएपछि प्रक्रिया ढाँचाले होइन, pid ले रोक्नुहोस्।

pgrep -a openconnect
sudo kill -INT "$(cat /var/run/openconnect.pid)"

त्यसपछि एग्जिट स्टेटसमा भरोसा गर्नुको सट्टा पहिलो भागका तीन जाँच दोहोर्याउनुहोस्। ip link show tun0 असफल हुनुपर्छ, ip route show dev tun0 केही छाप्नु हुँदैन, र resolvectl status अब VPN लिंक सूचीबद्ध गर्नु हुँदैन।

SIGHUP रोक्ने बटन होइन: यसले डिस्कनेक्ट गर्छ, स्क्रिप्ट चलाउँछ र सत्र पुनः सुरु गर्न सकिने राख्छ: --cookie। SIGUSR2 ले तत्काल पुनः जडान गर्न बाध्य गर्छ। SIGKILL ले सफाइ पूरै छोड्छ, र यो लेख ठ्याक्कै त्यही अवस्थाबारे हो।

resolv.conf नबदली रिजोल्भर मर्मत गर्नुहोस्

अधिकांश Ubuntu प्रणालीमा /etc/resolv.conf systemd-resolved मा सिम्बोलिक लिंक हो, तपाईंले सम्पादन गर्नुपर्ने फाइल होइन। यसलाई बदल्दा VPN मात्र होइन, हरेक नेटवर्कको नाम रिजोल्युसन बिग्रन्छ। यसको सट्टा सुरुङको दर्ता हटाउनुहोस्:

resolvectl revert tun0
resolvectl query example.com

प्रणालीले systemd-resolved को सट्टा resolvconf प्रयोग गर्छ भने, प्रत्येक इन्टरफेसको अभिलेख लिंक छोड्न भनिएसम्म रहिरहन्छ, र resolvconf -d tun0 समान कार्य हो। आदेश छान्नुअघि कुन रिजोल्भर प्रयोग भइरहेको छ जाँच्नुहोस्।

मृत लिंकपछाडिको सर्भरतिर अझै लक्षित लुकअप टाइमआउट नहुन्जेल झुन्डिरहन्छ, र त्यो ढिलाइ बाँकी रहेको रुटभन्दा बिग्रिएको DNS सर्भरजस्तो देखिन्छ।

अर्को डिस्कनेक्टलाई निरस बनाउनुहोस्

स्टार्टअप र शटडाउनमा pid फाइलको मार्ग एउटै राख्नुहोस्, हरेक पटक --pid-file दिएर, वा openconnect लाई unit अन्तर्गत चलाउनुहोस् जसको KillSignal तपाईंको संस्करणले कागजात गर्ने सिग्नलसँग मिल्छ। पहिले फोरग्राउन्डमा परीक्षण गर्दा हेल्परले छाप्ने शटडाउन सन्देशहरू देखिन्छन्।

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

सम्बन्धित लेखहरू