wg-quick arayüzü durdurduğunuzda wg0.conf'u neden yeniden yazar
SaveConfig kapanma anında yapılan bir kayıttır, arka plan eşitlemesi değildir. Tünel açıkken dosyayı düzenleyin; yeniden başlatma eski durumu üzerine yazabilir.
/etc/wireguard/wg0.conf dosyasına bir peer eklersiniz, systemctl restart wg-quick@wg0 komutunu çalıştırırsınız ve tekrar baktığınızda peer dosyadan gitmiştir. Hiçbir şey hiçbir şeyi bozmadı. Yeniden başlatma, durdurmayı takip eden bir başlatmadır ve durdurma adımı geçerli çalışma zamanı durumunu az önce düzenlediğiniz dosyanın üzerine yazabilir. Sorumlu ayar, düzenlediğiniz aynı dosyada yaşar ve döngüyü ilk kez yaşadığınızda bu kadar kafa karıştırıcı yapan da budur.
İki durum, tek dosya ve kapanma anında bir kayıt
WireGuard'ın çalışma zamanı durumu ile bir wg-quick yapılandırma dosyası ilişkilidir ancak farklıdır. Dosya girdidir: wg-quick onu okur, arayüzü oluşturur, adresleri ve rotaları ayarlar ve peer'ları yapılandırır. Çekirdek aygıtı canlı nesnedir ve wg ile yapılan düşük düzeyli değişiklikler asla kendilerini geri yazmaz.
Tek bir yön hariç. Arayüz bölümünde SaveConfig = true göründüğünde, wg-quick arayüzü indirmenin bir parçası olarak canlı yapılandırmayı dosyaya kaydeder. wg-quick kılavuzu tam olarak bunu uyarır: arayüz açıkken dosyada yapılan değişiklikler, arayüz kaldırıldığında üzerine yazılabilir. Bu, kapanma anında yapılan bir kayıttır, arka plan zamanlayıcısı değildir, bu nedenle yalnızca bir şey arayüzü durdurduğunda çalışı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 |
Tabloyu sıralama konusunda bir uyarı olarak okuyun. Bu alandaki her kazara kayıp, bir kayıttan sonra değil önce gerçekleşen bir düzenlemeden gelir.
Önce durdurun, ikinci olarak düzenleyin, son olarak başlatın
Dosya sizin doğruluk kaynağınızsa, dosyayı umutla değil yapıyla yetkili kılın. Arayüzü indirin, gittiğini doğrulayın, sonra düzenleyin, sonra yeniden yukarı kaldırın. Kural basittir: bir kayıt hâlâ çalışabildiği sürece hiçbir düzenleme yoktur.
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
Yedekleme satırı tören değildir. Tünel bu makineye ulaşma yolunuzsa, indirme adımı oturumunuzu sonlandırabilir ve diskteki bir kopya ile bir konsol veya bant dışı bir yol, çalışan tek geri alma yoludur. İkinci satırı ona güvenmeden önce kontrol edin: sessizce başarısız olan bir betikteki eski arayüz adı, insanların hâlâ canlı olan bir dosyayı düzenleme biçimidir.
Normal bir indirmeden önce SaveConfig = false ayarlamak diğer kabul edilen yoldur ve wg-quick'in gerçekten okuduğu dosyada yapılmalıdır. Bu, o tek otomatik kaydı engeller. Ayrı bir NetworkManager profili, bir yönlendirici dışa aktarımı veya bir konteyner giriş noktasının düzenlemelerinizi yeniden yüklemesini sağlamaz, çünkü o yöneticiler bu dosyayı hiç okumaz.
Arayüzü yırtmadan peer değişikliklerini uygulayın
Her düzenleme kesinti gerektirmez. Peer düzeyindeki değişiklikler, dosyayı bir yapılandırmaya dönüştürüp eşitleyerek çalışan bir arayüze uygulanabilir; bu, indirme adımını tamamen atlar ve dolayısıyla kaydı da atlar:
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
sudo wg show wg0 peers
sudo wg show wg0 latest-handshakes
strip adımı önemlidir. Dosyayı yalnızca wg-quick'e ait anahtarlar çıkarılmış olarak yazdırır, böylece adresler, DNS ve yönlendirme yönergeleri onları anlamayan bir araca gitmez. Ardından eşitleme, arayüzü yeniden oluşturmadan peer'ları ve anahtarları canlı aygıta uygular, böylece mevcut oturumlar ve rotalar hayatta kalır.
Sınırlar konusunda kesin olun. Peer'ları eşitlemek arayüz adresini, wg-quick'in eklediği rotaları veya çözümleyici yapılandırmasını değiştirmez, çünkü bunların hiçbiri WireGuard aygıtına ait değildir. AllowedIPs içine bir alt ağ ekleyip çekirdeğin onu yönlendirmesini beklemek klasik yanlış okumadır; rota, yukarı kaldırma sırasında wg-quick tarafından veya sizin tarafınızdan eklenmelidir.
Herhangi bir şeyi düzenlemeden önce arayüzün kime ait olduğunu kontrol edin
Bir yapılandırma sistemi tarafından yönetilen bir masaüstünde veya sunucuda dosya, girdi yerine çıktı olabilir. Bir NetworkManager bağlantısı, yönlendirici tarafından oluşturulan bir profil veya bir konteyner başlangıç betiği aynı arayüz adına sahip olabilir ve bu durumda kusursuz bir wg-quick dizisi yine de yanlış artefaktı düzenler.
systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5
Üçüncü komut, canlı yapılandırmayı dosyayla aynı biçimde, özel anahtar dahil yazdırır; bu karşılaştırma için yararlı ve bir bilette tehlikelidir. Yapıştırmadan önce onu gizleyin; bir destek dizisindeki özel anahtar kalıcı bir ihlaldir, yazım hatası değildir.
Hizmet birimi etkin değilse ancak arayüz varsa, onu başka bir şey oluşturmuştur ve dosya yetkili değildir. Bu tek gözlem, hiçbir şeyin okumadığı bir dosyayı düzenlemekten bir saat kazandırır.
Bir sonraki yeniden başlatmayı doğrulayın, sonra bir geri alma saklayın
Düzeltmeyi gerçekten kanıtlayan test ikinci bir yeniden başlatmadır, çünkü ilk seferde başarısız olan dizi odur. Peer'ın bundan sağ çıktığını ve canlı yapılandırmanın hâlâ disktekiyle eşleştiğini doğrulayın:
sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf
Yeniden başlatmayı iki kez çalıştırın. Tek bir temiz geçiş şans olabilir: ilk yeniden başlatma henüz kaydedilmemiş bir çalışma zamanı değişikliğini tüketebilir, bu nedenle ikincisi, dosya ile çalışma zamanının birincinin sonunda anlaştığını size söyleyen olandır.
Yedeklemeyi sürecin başından çift yeniden başlatmayı yapana kadar saklayın, sonra silin veya yapılandırma dizininin dışına taşıyın. Gerçek dosyanın yanında kalan wg0.conf.bak wg-quick için zararsız ve bir sonraki kişi için kafa karıştırıcıdır; o kişi sonunda yanlış olanı düzenler.