Jūs pievienojat peer failam /etc/wireguard/wg0.conf, palaižat systemctl restart wg-quick@wg0, un nākamreiz paskatoties peer failā vairs nav. Nekas neko nesabojāja. Restartēšana ir apturēšana, kam seko palaišana, un apturēšanas solis var pārrakstīt pašreizējo izpildes stāvokli virs faila, kuru tikko rediģējāt. Atbildīgais iestatījums atrodas tajā pašā failā, kuru rediģējāt, un tas ir iemesls, kāpēc cilpa šķiet tik mulsinoša pirmajā reizē.

Divi stāvokļi, viens fails un saglabāšana izslēgšanas laikā

WireGuard izpildes stāvoklis un wg-quick konfigurācijas fails ir saistīti, bet atšķirīgi. Fails ir ievade: wg-quick to lasa, izveido saskarni, iestata adreses un maršrutus un konfigurē peer. Kodola ierīce ir dzīvais objekts, un zemā līmeņa izmaiņas, kas veiktas ar wg, nekad netiek ierakstītas atpakaļ.

Izņemot vienā virzienā. Kad saskarnes sadaļā ir SaveConfig = true, wg-quick saglabā dzīvo konfigurāciju failā kā saskarnes noņemšanas daļu. wg-quick rokasgrāmata brīdina tieši par to: izmaiņas failā, kamēr saskarne ir aktīva, var tikt pārrakstītas, kad to noņem. Tā ir saglabāšana izslēgšanas laikā, nevis fona taimeris, tāpēc tā darbojas tikai tad, kad kaut kas aptur saskarni.

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

Lasiet tabulu kā brīdinājumu par secību. Katrs nejaušais zaudējums šajā jomā rodas no rediģēšanas, kas notika pirms saglabāšanas, nevis pēc tās.

Vispirms apturiet, otrais rediģējiet, pēdējais palaidiet

Ja fails ir jūsu patiesības avots, padariet failu autoritatīvu ar uzbūvi, nevis ar cerību. Noņemiet saskarni, pārliecinieties, ka tā ir pazudusi, pēc tam rediģējiet un pēc tam atkal paceliet. Noteikums ir vienkāršs: nav nevienas rediģēšanas, kamēr saglabāšana vēl var darboties.

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

Dublējuma rinda nav ceremonija. Ja tunelis ir jūsu ceļš uz šo mašīnu, noņemšanas solis var beigt jūsu sesiju, un kopija diskā plus konsole vai ārpusjoslas ceļš ir vienīgā atrite, kas darbojas. Pārbaudiet šo otro rindu, pirms tai uzticaties: novecojis saskarnes nosaukums skriptā, kas klusi neizdodas, ir veids, kā cilvēki rediģē failu, kas joprojām ir dzīvs.

Iestatīt SaveConfig = false pirms parastas noņemšanas ir otrs pieņemamais ceļš, un tas jādara failā, kuru wg-quick patiešām lasa. Tas novērš šo vienu automātisko saglabāšanu. Tas neliek atsevišķam NetworkManager profilam, maršrutētāja eksportam vai konteinera ieejas punktam pārlādēt jūsu rediģējumus, jo šie pārvaldnieki šo failu vispār nelasa.

Piemērojiet peer izmaiņas, nesaplēšot saskarni

Ne katrai rediģēšanai vajadzīga pārtraukšana. Peer līmeņa izmaiņas var piemērot darbojošai saskarnei, pārvēršot failu konfigurācijā un sinhronizējot to, kas pilnībā izvairās no noņemšanas soļa un tādējādi no saglabāšanas:

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

strip solis ir svarīgs. Tas izdrukā failu ar noņemtām atslēgām, kas pieder tikai wg-quick, lai adreses, DNS un maršrutēšanas direktīvas nenonāktu rīkā, kas tās nesaprot. Pēc tam sinhronizācija piemēro peer un atslēgas dzīvajai ierīcei, neizveidojot saskarni no jauna, tāpēc esošās sesijas un maršruti izdzīvo.

Esiet precīzi par ierobežojumiem. Peer sinhronizācija nemaina saskarnes adresi, wg-quick pievienotos maršrutus vai risinātāja konfigurāciju, jo neviens no tiem nepieder WireGuard ierīcei. Apakštīkla pievienošana AllowedIPs un gaidīšana, ka kodols to maršrutēs, ir klasiskā nepareizā lasīšana; maršruts jāpievieno wg-quick pacelšanas laikā vai jums.

Pirms kaut ko rediģējat, pārbaudiet, kam pieder saskarne

Darbvirsmas datorā vai serverī, ko pārvalda konfigurācijas sistēma, fails var būt izvade, nevis ievade. NetworkManager savienojums, maršrutētāja ģenerēts profils vai konteinera palaišanas skripts var visi piederēt pie tā paša saskarnes nosaukuma, un tādā gadījumā nevainojama wg-quick secība joprojām rediģē nepareizo artefaktu.

systemctl status wg-quick@wg0 --no-pager
nmcli connection show | grep -i wireguard
sudo wg showconf wg0 | head -n 5

Trešā komanda izdrukā dzīvo konfigurāciju tādā pašā formātā kā fails, ieskaitot privāto atslēgu, kas ir noderīgi salīdzināšanai un bīstami biļetenā. Aizsedziet to pirms ielīmēšanas; privātā atslēga atbalsta pavedienā ir pastāvīga kompromitācija, nevis drukas kļūda.

Ja pakalpojuma vienība ir neaktīva, bet saskarne pastāv, to izveidoja kaut kas cits, un fails nav autoritatīvs. Šis viens novērojums ietaupa stundu, rediģējot failu, kuru nekas nelasa.

Pārbaudiet nākamo restartēšanu un pēc tam saglabājiet atriti

Tests, kas patiešām pierāda labojumu, ir otra restartēšana, jo tieši šī secība pirmajā reizē neizdevās. Pārliecinieties, ka peer to pārdzīvo un ka dzīvā konfigurācija joprojām atbilst tam, kas ir diskā:

sudo systemctl restart wg-quick@wg0
sudo wg show wg0 latest-handshakes
sudo grep -c '^\[Peer\]' /etc/wireguard/wg0.conf

Palaidiet restartēšanu divas reizes. Viena tīra pāreja var būt veiksme: pirmā restartēšana var patērēt izpildes izmaiņas, kas vēl nebija saglabātas, tāpēc otrā ir tā, kas pasaka, ka fails un izpilde pirmās beigās vienojās.

Saglabājiet dublējumu no procesa sākuma, līdz esat veicis divkāršo restartēšanu, pēc tam izdzēsiet to vai pārvietojiet ārpus konfigurācijas direktorijas. Pazudis wg0.conf.bak blakus īstajam failam ir nekaitīgs wg-quick un mulsina nākamo cilvēku, kurš galu galā rediģēs nepareizo.

Saistītie raksti