तपाईं /etc/wireguard/wg0.conf मा एउटा पीयर थप्नुहुन्छ, systemctl restart wg-quick@wg0 चलाउनुहुन्छ, र फेरि हेर्दा पीयर फाइलबाट हराइसकेको हुन्छ। कसैले केही बिगारेको छैन। पुनः सुरु गर्नु भनेको रोकिएपछिको सुरुवात हो, र रोकिने चरणले अहिले सम्पादन गरेको फाइलमाथि वर्तमान रनटाइम अवस्था लेख्न सक्छ। जिम्मेवार सेटिङ तपाईंले सम्पादन गरिरहेको त्यही फाइलमा बस्छ, र यसैले यो लूप पहिलो पटक भेट्दा यति भ्रमित बनाउँछ।

दुई अवस्था, एउटा फाइल र बन्द गर्दा हुने सुरक्षितता

WireGuard को रनटाइम अवस्था र wg-quick कन्फिगरेसन फाइल सम्बन्धित छन् तर फरक छन्। फाइल इनपुट हो: wg-quick ले यो पढ्छ, इन्टरफेस बनाउँछ, ठेगाना र रुट सेट गर्छ र पीयर कन्फिगर गर्छ। कर्नेल उपकरण जीवित वस्तु हो, र wg बाट गरिएका तल्लो तहका परिवर्तनहरू कहिल्यै आफैं फिर्ता लेखिँदैनन्।

एउटा दिशा बाहेक। इन्टरफेस खण्डमा SaveConfig = true देखा पर्दा, wg-quick ले इन्टरफेस तल झार्ने भागको रूपमा जीवित कन्फिगरेसन फाइलमा सुरक्षित गर्छ। wg-quick म्यानुअल ले ठ्याक्कै यसैको चेतावनी दिन्छ: इन्टरफेस चालु हुँदा फाइलमा गरिएका परिवर्तनहरू यो हटाउँदा माथि लेखिन सक्छन्। यो बन्द गर्दा हुने सुरक्षितता हो, पृष्ठभूमि टाइमर होइन, त्यसैले कुनै कुराले इन्टरफेस रोक्दा मात्र यो चल्छ।

ActionWhat it writesWhen it surprises you
wg set on a live interfaceKernel state onlyAfter reboot, when the file was never updated
wg-quick down with SaveConfigLive state into the fileRight after you edited the file
wg syncconfKernel state onlyNever; it does not touch the file
wg-quick upKernel state from the fileIf the file is stale, you get the old tunnel

तालिकालाई क्रमको चेतावनीको रूपमा पढ्नुहोस्। यस क्षेत्रमा हुने हरेक आकस्मिक हानि सुरक्षित गरेपछि होइन, सुरक्षित गर्नुअघि भएको सम्पादनबाट आउँछ।

पहिले रोक्नुहोस्, दोस्रो सम्पादन गर्नुहोस्, अन्तिममा सुरु गर्नुहोस्

यदि फाइल तपाईंको सत्यको स्रोत हो भने, आशाले होइन, संरचनाले फाइललाई आधिकारिक बनाउनुहोस्। इन्टरफेस तल झार्नुहोस्, यो गएको पुष्टि गर्नुहोस्, त्यसपछि सम्पादन गर्नुहोस्, त्यसपछि फेरि माथि उठाउनुहोस्। नियम सरल छ: सुरक्षितता अझै चल्न सक्दासम्म कुनै सम्पादन हुँदैन।

sudo cp -a /etc/wireguard/wg0.conf /root/wg0.conf.$(date +%F-%H%M)
sudo wg-quick down wg0
ls /sys/class/net/wg0 2>/dev/null || echo "interface is gone"
sudoedit /etc/wireguard/wg0.conf
sudo wg-quick up wg0

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

सामान्य तल झार्नुअघि SaveConfig = false सेट गर्नु अर्को स्वीकार्य मार्ग हो, र यो wg-quick ले साँच्चै पढ्ने फाइलमै गर्नुपर्छ। यसले त्यो एक स्वचालित सुरक्षितता रोक्छ। यसले अलग NetworkManager प्रोफाइल, राउटर निर्यात वा कन्टेनर प्रवेश-बिन्दुलाई तपाईंका सम्पादनहरू पुनः लोड गर्न लगाउँदैन, किनकि ती प्रबन्धकहरूले यो फाइल बिल्कुलै पढ्दैनन्।

इन्टरफेस च्यात्नु बिना पीयर परिवर्तन लागू गर्नुहोस्

हरेक सम्पादनलाई अवरोध आवश्यक हुँदैन। फाइललाई कन्फिगरेसनमा परिणत गरी सिङ्क गरेर चलिरहेको इन्टरफेसमा पीयर-स्तरका परिवर्तनहरू लागू गर्न सकिन्छ, जसले तल झार्ने चरण पूर्ण रूपमा बेवास्ता गर्छ र त्यसैले सुरक्षिततालाई पनि बेवास्ता गर्छ:

sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes

strip चरण महत्त्वपूर्ण छ। यसले केवल wg-quick का कुञ्जीहरू हटाएर फाइल छाप्छ, ताकि ठेगाना, DNS र रुटिङ निर्देशनहरू तिनीहरूलाई नबुझ्ने उपकरणमा नजाऊन्। त्यसपछि सिङ्कले इन्टरफेस पुनः नबनाई पीयर र कुञ्जीहरू जीवित उपकरणमा लागू गर्छ, त्यसैले विद्यमान सत्र र रुटहरू टिकिरहन्छन्।

सीमाहरूबारे सटीक हुनुहोस्। पीयर सिङ्क गर्दा इन्टरफेसको ठेगाना, wg-quick ले थपेका रुट वा रिजोल्भर कन्फिगरेसन बदलिँदैन, किनकि यीमध्ये कुनै पनि WireGuard उपकरणको होइन। AllowedIPs मा सबनेट थपेर कर्नेलले यसलाई रुट गर्छ भन्ने अपेक्षा गर्नु सामान्य गलत पठन हो; रुट wg-quick ले माथि उठाउँदा वा तपाईंले थप्नुपर्छ।

केही सम्पादन गर्नुअघि इन्टरफेस कसको हो जाँच्नुहोस्

कन्फिगरेसन प्रणालीद्वारा व्यवस्थापित डेस्कटप वा सर्भरमा फाइल इनपुटको सट्टा आउटपुट हुन सक्छ। NetworkManager जडान, राउटरले बनाएको प्रोफाइल वा कन्टेनर स्टार्टअप स्क्रिप्ट सबै एउटै इन्टरफेस नामका मालिक हुन सक्छन्, र त्यस अवस्थामा त्रुटिरहित wg-quick क्रमले पनि गलत वस्तु नै सम्पादन गर्छ।

systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5

तेस्रो आदेशले जीवित कन्फिगरेसन फाइलकै जस्तो ढाँचामा छाप्छ, निजी कुञ्जीसहित, जुन तुलनाका लागि उपयोगी र टिकटमा खतरनाक छ। टाँस्नुअघि यसलाई अस्पष्ट पार्नुहोस्; समर्थन थ्रेडमा निजी कुञ्जी स्थायी सम्झौता हो, टाइपो होइन।

यदि सेवा इकाइ निष्क्रिय छ तर इन्टरफेस अवस्थित छ भने, अरू कुनै कुराले यो बनाएको छ र फाइल आधिकारिक छैन। त्यो एउटा अवलोकनले केही नपढ्ने फाइल सम्पादन गर्ने एक घण्टा बचाउँछ।

अर्को पुनः सुरु जाँच्नुहोस्, त्यसपछि रोलब्याक राख्नुहोस्

सुधार साँच्चै प्रमाणित गर्ने परीक्षण दोस्रो पुनः सुरु हो, किनकि पहिलो पटक असफल भएको त्यही क्रम थियो। पीयर यसबाट बाँचिरहेको र जीवित कन्फिगरेसन अझै डिस्कमा भएकोसँग मिल्ने पुष्टि गर्नुहोस्:

sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf

पुनः सुरु दुई पटक चलाउनुहोस्। एक पटक सफा पार हुनु भाग्य हुन सक्छ: पहिलो पुनः सुरुले अझै सुरक्षित नगरिएको रनटाइम परिवर्तन खपत गर्न सक्छ, त्यसैले दोस्रोले नै पहिलोको अन्त्यमा फाइल र रनटाइम सहमत भएको कुरा बताउँछ।

प्रक्रियाको सुरुवातदेखि दोहोरो पुनः सुरु सकिएसम्म ब्याकअप राख्नुहोस्, त्यसपछि यसलाई मेटाउनुहोस् वा कन्फिगरेसन डाइरेक्टरीबाट बाहिर सार्नुहोस्। साँचो फाइलको छेउमा रहेको wg0.conf.bak wg-quick का लागि हानिकारक छैन र अर्को व्यक्तिका लागि भ्रमित गर्ने छ, जसले अन्ततः गलत फाइल सम्पादन गर्नेछ।

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