თქვენ ამატებთ peer-ს /etc/wireguard/wg0.conf-ს, უშვებთ systemctl restart wg-quick@wg0-ს და შემდეგ ჯერზე ყურებისას peer ფაილიდან გაქრა. არაფერს არაფერი გაუფუჭებია. გადატვირთვა გაჩერებაა, რომელსაც გაშვება მოსდევს, და გაჩერების საფეხურმა შეიძლება მიმდინარე გაშვების მდგომარეობა გადაწეროს იმ ფაილზე, რომელიც ახლახან შეცვალეთ. პასუხისმგებელი პარამეტრი ცხოვრობს იმავე ფაილში, რომელსაც არედაქტირებდით, და სწორედ ეს ხდის ციკლს ასეთ დამაბნეველს პირველად შეხვედრისას.

ორი მდგომარეობა, ერთი ფაილი და შენახვა გამორთვის დროს

WireGuard-ის გაშვების მდგომარეობა და wg-quick-ის კონფიგურაციის ფაილი დაკავშირებულია, მაგრამ განსხვავებული. ფაილი შესავალია: wg-quick კითხულობს მას, ქმნის ინტერფეისს, აყენებს მისამართებსა და მარშრუტებს და აკონფიგურირებს peer-ებს. ბირთვის მოწყობილობა ცოცხალი ობიექტია, და 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-ის პროფილს, მარშრუტიზატორის ექსპორტს ან კონტეინერის შესვლის წერტილს გადატვირთოს თქვენი რედაქტირებები, რადგან ეს მმართველები საერთოდ არ კითხულობენ ამ ფაილს.

გამოიყენეთ peer-ების ცვლილებები ინტერფეისის დაშლის გარეშე

ყოველ რედაქტირებას შეწყვეტა არ სჭირდება. peer-ის დონის ცვლილებები შეიძლება გამოყენებულ იქნას მომუშავე ინტერფეისზე ფაილის კონფიგურაციად გადაქცევით და მისი სინქრონიზაციით, რაც მთლიანად გვერდს უვლის ჩამოშვების საფეხურს და ამიტომაც გვერდს უვლის შენახვას:

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

strip საფეხური მნიშვნელოვანია. ის ბეჭდავს ფაილს მხოლოდ wg-quick-ის კუთვნილი გასაღებების მოცილებით, რათა მისამართები, DNS და მარშრუტიზაციის მითითებები არ მოხვდეს იმ ხელსაწყოში, რომელსაც ისინი არ ესმის. შემდეგ სინქრონიზაცია ცოცხალ მოწყობილობაზე აყენებს peer-ებსა და გასაღებებს ინტერფეისის ხელახლა შექმნის გარეშე, ამიტომ არსებული სესიები და მარშრუტები რჩება.

იყავით ზუსტი შეზღუდვებთან დაკავშირებით. peer-ების სინქრონიზაცია არ ცვლის ინტერფეისის მისამართს, 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

მესამე ბრძანება ბეჭდავს ცოცხალ კონფიგურაციას ფაილის იმავე ფორმატში, კერძო გასაღების ჩათვლით, რაც სასარგებლოა შედარებისთვის და საშიშია ტიკეტში. დაფარეთ ის ჩასმამდე; კერძო გასაღები მხარდაჭერის თემაში მუდმივი კომპრომისია და არა ბეჭდვითი შეცდომა.

თუ სერვისის ერთეული არააქტიურია, მაგრამ ინტერფეისი არსებობს, სხვა რაღაცამ შექმნა ის და ფაილი არ არის ავტორიტეტული. ეს ერთი დაკვირვება ზოგავს საათს იმ ფაილის რედაქტირებაზე, რომელსაც არაფერი კითხულობს.

შეამოწმეთ შემდეგი გადატვირთვა, შემდეგ შეინარჩუნეთ დაბრუნება

ტესტი, რომელიც ნამდვილად ამტკიცებს გამოსწორებას, მეორე გადატვირთვაა, რადგან სწორედ ეს თანმიმდევრობა ჩავარდა პირველად. დარწმუნდით, რომ peer გადაურჩა მას და რომ ცოცხალი კონფიგურაცია ჯერ კიდევ ემთხვევა დისკზე არსებულს:

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-ისთვის და დამაბნეველია შემდეგი ადამიანისთვის, რომელიც საბოლოოდ არასწორს შეცვლის.

დაკავშირებული სტატიები