რატომ ბრუნდება წაშლილი WireGuard peer გადატვირთვის შემდეგ
peer-ების სიას ორი მდგომარეობა ინახავს: გაშვებული ინტერფეისი და ის, რაც მას ჩატვირთვისას წერს. ამოიღეთ იგი ორივედან და სანამ რამეს შეცვლით, შეამოწმეთ SaveConfig.
იდენტობა ქრება გაშვებული ინტერფეისიდან და ცვლილება დასრულებულად გამოიყურება. სერვისის გადატვირთვის შემდეგ ის ბრუნდება, რაც ისე იკითხება, თითქოს WireGuard ბრძანებას უგულებელყოფს. სინამდვილეში მომხდარი უფრო მარტივია: გაშვების კონფიგურაცია ჯერ კიდევ შეიცავს ამ peer-ს.
ამ სიას ორი მდგომარეობა ინახავს. გაუქმება ნამდვილია მხოლოდ მაშინ, როცა ორივე კარგავს მას.
რას ცვლის სინამდვილეში wg set
ბრძანება wg set wg0 peer <public-key> remove არედაქტირებს გაშვებულ ინტერფეისს ბირთვში. ის დისკზე არაფერს წერს. კონფიგურაციის ფაილი, NetworkManager-ის პროფილი ან მარშრუტიზატორის შენახული მდგომარეობა უცვლელი რჩება. ეს დიზაინია და არა ხარვეზი.
ეს გამიჯვნა განზრახ არის, რადგან ხელსაწყომ არ იცის, ვინ არის ინტერფეისის მფლობელი. გაშვების დროის ბრძანება უსაფრთხო უნდა იყოს სხვა რამით მართული ინტერფეისის მიმართ. მას არ შეუძლია გამოიცნოს, სად ცხოვრობს გამძლე ასლი. შედეგი ადვილად ჩამოყალიბდება: გაშვების დროს წაშლა კონსტრუქციით დროებითია.
ამიტომ peer ბრუნდება შემდეგ გადატვირთვაზე და ბრუნდება თავისი პირვანდელი დაშვებული პრეფიქსებით. ყველაფერი, რაც მის გავლით მარშრუტირდება, ასევე ხელახლა იქმნება. ამრიგად, სავარაუდოდ გაუქმებულ იდენტობას ხელახალი ჩატვირთვის შემდეგ შეუძლია მიაღწიოს თავის ყოფილ დანიშნულებებს. გაშვების დროის გამოსავალში ვერავინ გააფრთხილა.
იპოვეთ მწერალი, სანამ ფაილს შეცვლით
ინტერფეისს ჰყავს მფლობელი. ეს შეიძლება იყოს ფაილის მკითხველი wg-quick, პროფილის გამომყენებელი NetworkManager, მარშრუტიზატორის საკუთარი ინტერფეისის კონფიგურაცია ან კონტეინერის შესვლის წერტილი, რომელიც გაშვებისას ხელახლა ქმნის ინტერფეისს. ფაილის რედაქტირება, რომელსაც მფლობელი არასდროს კითხულობს, საერთოდ არ იძლევა რაიმე გამძლე ცვლილებას.
დაიწყეთ გაშვებული ინტერფეისიდან და გამოავლინეთ საჯარო გასაღებები, რადგან სახელები და მისამართები უფრო სუსტი იდენტიფიკატორები არიან, ვიდრე თავად გასაღები. შემდეგ შეადარეთ ეს სია იმ შენახულ კონფიგურაციას, რომელსაც მფლობელი ნამდვილად კითხულობს.
wg show wg0 peers
wg show wg0 allowed-ips
systemctl status wg-quick@wg0 --no-pager
ls -l /etc/wireguard
ცოცხალი ინტერფეისი, რომლის peer-ების სია და ფაილის შიგთავსი ერთმანეთს არ ემთხვევა, სწორედ მთელი დიაგნოზია. გაშვებისას შენახული კონფიგურაცია იმარჯვებს, ხოლო გაშვების დროის მდგომარეობა აგებს. შეადარეთ ისინი, სანამ რომელიმეს შეცვლით.
SaveConfig-ის ხაფანგი
wg-quick ამატებს ნაოჭს, რომელიც იჭერს ხელით ფაილების რედაქტორებს. როცა SaveConfig ჩართულია, მისი დოკუმენტირებული გამორთვის ქცევა მიმდინარე გაშვების მდგომარეობას წერს კონფიგურაციის ფაილზე.
ეს აბრუნებს გამძლეობის ჩვეულ მიმართულებას. თქვენ აცილებთ peer-ს ფაილს, შემდეგ სერვისი ჩერდება. გაშვებული მდგომარეობა იწერება თქვენს რედაქტირებაზე და აღადგენს ახლახან წაშლილ peer-ს.
ამიტომ თანმიმდევრობა მნიშვნელოვანია: დაარედაქტირეთ ფაილი, სანამ ინტერფეისი გამორთულია, ან გამორთეთ SaveConfig რედაქტირებამდე, შემდეგ ისევ ასწიეთ ინტერფეისი და დაადასტურეთ, რა ჩაიტვირთა. ხელით რედაქტირება ჩართული ინტერფეისის დროს შეჯიბრია გამორთვის ჩაწერასთან.
შეცვალეთ ორივე მდგომარეობა, შემდეგ გადატვირთეთ
გაშვების დროს ამოიღეთ peer გასაღების მიხედვით. შენახულ კონფიგურაციაში ამოიღეთ იგივე ბლოკი მფლობელის მხარდაჭერილი ოპერაციით და არა მის გარშემო რედაქტირებით.
შემდეგ გადახედეთ, რას ატარებდა peer. მარშრუტიზებული ქსელი, რომელიც გაუქმებულ იდენტობას ეკუთვნოდა, განზრახ უნდა გადანაწილდეს ან წაიშალოს და არა ჩუმად მემკვიდრეობით მიიღოს შემდეგ რედაქტირებადმა peer-მა.
შეინახეთ აღდგენის გზა ღიად, თუ კარიბჭე თქვენს ადმინისტრაციულ წვდომასაც ატარებს. გადატვირთვა, რომელიც არასწორ peer-ს შლის, თქვენ მიერ შექმნილი შეფერხებაა. იგივე ეხება გადატვირთვას, რომელიც არასწორ მარშრუტს შლის.
როგორ გამოიყურება წარმატებული ტესტი
გადატვირთეთ ან ხელახლა ჩატვირთეთ სერვისი, შემდეგ კიდევ ერთხელ წაიკითხეთ peer-ების სია. ძველი გასაღები უნდა აკლდეს, ხოლო peer-ები, რომელთა შენარჩუნებაც გსურდათ, ჯერ კიდევ უნდა იყოს და მუშაობდეს.
wg show wg0 peers
wg show wg0 allowed-ips
sudo wg-quick down wg0 && sudo wg-quick up wg0
wg show wg0 peers
სადაც სიტუაცია იძლევა საშუალებას, დაადასტურეთ, რომ ძველი იდენტობა აღარ აღწევს თავის ყოფილ რესურსებს. გადატვირთვამდე მოწესრიგებული ინტერფეისის სია ტესტის ნახევარია. მეორე ნახევარია ის, თუ რა შეუძლია იდენტობას ამის შემდეგ.
თუ რომელიმე მმართველი განაგრძობს peer-ის აღდგენას, შეწყვიტეთ დაბალი დონის წაშლის გამეორება. შეასწორეთ ის რეესტრი, რომელსაც ეს მწერალი კითხულობს, რადგან მანამდე ყოველი გადატვირთვა იდენტობის ხელახლა გამოჩენის კიდევ ერთი მოწვევაა.