wg-quick interfeysi dayandırdıqda wg0.conf faylını niyə yenidən yazır
SaveConfig söndürmə zamanı yadda saxlamaqdır, arxa planda sinxronizasiya deyil. Faylı tunel işləyərkən redaktə edin, yenidən başlatma köhnə vəziyyəti onun üzərinə yaza bilər.
/etc/wireguard/wg0.conf faylına peer əlavə edirsiniz, systemctl restart wg-quick@wg0 əmrini işlədirsiniz və yenidən baxanda peer fayldan yoxa çıxır. Heç nə heç nəyi korlamadı. Yenidən başlatma dayanmadan sonra başlamadır və dayanma addımı cari işləmə vəziyyətini təzəcə redaktə etdiyiniz faylın üzərinə yaza bilər. Məsuliyyət daşıyan parametr redaktə etdiyiniz eyni faylda yerləşir və bu, dövrəni ilk dəfə qarşılaşanda bu qədər çaşdırıcı edən şeydir.
İki vəziyyət, bir fayl və söndürmə zamanı yadda saxlama
WireGuard-ın işləmə vəziyyəti ilə wg-quick konfiqurasiya faylı əlaqəlidir, lakin fərqlidir. Fayl girişdir: wg-quick onu oxuyur, interfeysi yaradır, ünvanları və marşrutları təyin edir və peer-ləri konfiqurasiya edir. Kernel cihazı canlı obyektdir və wg ilə edilən aşağı səviyyəli dəyişikliklər heç vaxt özlərini geri yazmır.
Bir istiqamət istisna olmaqla. İnterfeys bölməsində SaveConfig = true görünəndə wg-quick interfeysi aşağı salmağın bir hissəsi kimi canlı konfiqurasiyanı fayla yazır. wg-quick təlimatı məhz bundan xəbərdarlıq edir: interfeys işləyərkən faylda edilən dəyişikliklər o silinəndə üzərinə yazıla bilər. Bu, arxa plan taymeri deyil, söndürmə zamanı yadda saxlamaqdır, ona görə də yalnız nəsə interfeysi dayandıranda işə düşür.
| Action | What it writes | When it surprises you |
|---|---|---|
wg set on a live interface | Kernel state only | After reboot, when the file was never updated |
wg-quick down with SaveConfig | Live state into the file | Right after you edited the file |
wg syncconf | Kernel state only | Never; it does not touch the file |
wg-quick up | Kernel state from the file | If the file is stale, you get the old tunnel |
Cədvəli sıralama ilə bağlı xəbərdarlıq kimi oxuyun. Bu sahədə hər təsadüfi itki yadda saxlamaqdan sonra deyil, əvvəl baş verən redaktədən qaynaqlanır.
Əvvəlcə dayandırın, sonra redaktə edin, ən sonda başladın
Fayl sizin həqiqət mənbəyinizdirsə, faylı ümidlə deyil, quruluşca səlahiyyətli edin. İnterfeysi aşağı salın, onun getdiyini təsdiqləyin, sonra redaktə edin, sonra yenidən qaldırın. Qayda sadədir: yadda saxlama hələ işləyə bilərkən heç bir redaktə mövcud olmasın.
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
Ehtiyat nüsxə sətri sadəcə mərasim deyil. Tunel bu maşına çatmağınızın yoludursa, aşağı salma addımı sessiyanızı bitirə bilər və diskdəki nüsxə üstəgəl konsol və ya kənar yol işləyən yeganə geri qaytarmadır. İkinci sətrə güvənməzdən əvvəl onu yoxlayın: səssizcə uğursuz olan skriptdə köhnə interfeys adı insanların hələ canlı olan faylı redaktə etmə üsuludur.
Normal aşağı salmadan əvvəl SaveConfig = false təyin etmək digər qəbul edilən yoldur və bu, wg-quick-in həqiqətən oxuduğu faylda edilməlidir. O, həmin bir avtomatik yadda saxlamağın qarşısını alır. Ayrı bir NetworkManager profili, router ixracı və ya konteyner giriş nöqtəsi redaktələrinizi yenidən yükləmir, çünki o idarəedicilər bu faylı ümumiyyətlə oxumur.
İnterfeysi sökmədən peer dəyişikliklərini tətbiq edin
Hər redaktə kəsinti tələb etmir. Peer səviyyəli dəyişikliklər faylı konfiqurasiyaya çevirib sinxronlaşdırmaqla işləyən interfeysə tətbiq oluna bilər, bu da aşağı salma addımını tamamilə və buna görə də yadda saxlamağı yan keçir:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes
strip addımı vacibdir. O, faylı yalnız wg-quick üçün olan açarlar çıxarılmış şəkildə çap edir, beləliklə ünvanlar, DNS və marşrutlaşdırma direktivləri onları başa düşməyən alətə verilmir. Sonra sinxronlaşdırma interfeysi yenidən yaratmadan peer-ləri və açarları canlı cihaza tətbiq edir, beləliklə mövcud sessiyalar və marşrutlar qalır.
Məhdudiyyətlər barədə dəqiq olun. Peer-lərin sinxronlaşdırılması interfeys ünvanını, wg-quick-in əlavə etdiyi marşrutları və ya həlledici konfiqurasiyasını dəyişmir, çünki bunların heç biri WireGuard cihazına aid deyil. AllowedIPs-ə subnet əlavə edib kernelin onu marşrutlaşdırmasını gözləmək klassik səhv oxunuşdur; marşrutu yuxarı qalxma zamanı wg-quick və ya siz əlavə etməlisiniz.
Nəyisə redaktə etməzdən əvvəl interfeysin kimə aid olduğunu yoxlayın
Konfiqurasiya sistemi ilə idarə olunan masaüstü və ya serverdə fayl giriş deyil, çıxış ola bilər. NetworkManager bağlantısı, routerin yaratdığı profil və ya konteyner başlatma skripti eyni interfeys adına sahib ola bilər və bu halda qüsursuz wg-quick ardıcıllığı yenə də səhv artefaktı redaktə edir.
systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5
Üçüncü əmr canlı konfiqurasiyanı faylla eyni formatda, şəxsi açar daxil olmaqla çap edir, bu müqayisə üçün faydalı, biletdə isə təhlükəlidir. Yapışdırmazdan əvvəl onu gizlədin; dəstək mövzusunda şəxsi açar daimi bir kompromisdir, yazı səhvi deyil.
Xidmət vahidi qeyri-aktivdirsə, lakin interfeys mövcuddursa, onu başqa bir şey yaradıb və fayl səlahiyyətli deyil. Bu tək müşahidə heç nənin oxumadığı faylı redaktə etməkdən bir saat qənaət edir.
Növbəti yenidən başlatmanı yoxlayın, sonra geri qaytarma saxlayın
Düzəlişi həqiqətən sübut edən test ikinci yenidən başlatmadır, çünki ilk dəfə uğursuz olan ardıcıllıq elə budur. Peer-in ondan sağ çıxdığını və canlı konfiqurasiyanın hələ də diskdə olanla uyğun olduğunu təsdiqləyin:
sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf
Yenidən başlatmanı iki dəfə işlədin. Tək təmiz keçid bəxt ola bilər: ilk yenidən başlatma hələ yadda saxlanmamış işləmə dəyişikliyini istehlak edə bilər, ona görə də ikincisi fayl ilə işləmə vəziyyətinin birincinin sonunda razılaşdığını sizə deyən olur.
Ehtiyat nüsxəni prosesin əvvəlindən ikiqat yenidən başlatmanı bitirənə qədər saxlayın, sonra onu silin və ya konfiqurasiya qovluğundan çıxarın. Həqiqi faylın yanında qalan wg0.conf.bak wg-quick üçün zərərsiz, növbəti şəxs üçün isə çaşdırıcıdır və o, sonda səhv olanı redaktə edəcək.