तुम्ही /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 साठी हानिकारक नाही आणि पुढच्या व्यक्तीसाठी गोंधळात टाकणारा आहे, जो शेवटी चुकीची फाइल संपादित करेल।

संबंधित लेख