WireGuard: geen roete na eweknie ná ’n subnetverandering — twee uitweë
’n Subnetverandering breek WireGuard op twee plekke: AllowedIPs en die terugpad. Vergelyk hernommering op dieselfde plek met die herbou van die koppelvlak.
Die handskud is vars in wg show, die eindpunt is reg, die sleutels het nooit verander nie — en die ping sê steeds geen roete na eweknie. Jy het die tonnelsubnet ’n uur gelede verander. Dié simptoom is die kenmerk van ’n voorvoegselwanpassing eerder as ’n sleutelprobleem: WireGuard het die handskud voltooi en toe die data laat val omdat ’n bronadres nie meer ooreenstem met wat die ontvangende eweknie sal aanvaar nie. Daar is twee sinvolle maniere om ’n subnetverandering te land, en hulle faal op verskillende plekke.
Twee maniere om die verandering te land, en wat elkeen kos
Opsie A is hernommering op dieselfde plek: wysig die koppelvlakadres, die eweknie-reekse, die roetes en elke kopie van die konfigurasie, en herlaai dan. Opsie B is om ’n tweede koppelvlak op die nuwe voorvoegsel langs die ou een te bou, eweknieë oor te skuif, en die ou koppelvlak te verwyder sodra verkeer werklik geskuif het.
| A: renumber in place | B: parallel interface | |
|---|---|---|
| Downtime | The reload window, per host | None if peers are added to both |
| Rollback | Re-apply the previous files | Point peers back at the old interface |
| Risk | Half-applied change: new address, old ranges | Two live interfaces with overlapping intent |
| Effort | Small, if the deployment has one owner | Higher, and needs a cleanup step |
| Fits | Two or three peers you control | Many peers, remote sites, or no maintenance window |
Die half-toegepaste toestand is wat Opsie A gevaarlik maak, want dit lyk nie stukkend nie. Die koppelvlak kom op, die handskud slaag, en net die datapad faal. Opsie B kos meer werk maar hou ’n werkende pad lewendig terwyl jy elke verwysing vind.
Wat saam op jou kant moet beweeg
Vier dinge op die plaaslike gasheer beskryf dieselfde subnet, en ’n verandering aan een is ’n verandering aan almal: die koppelvlak se adres, elke eweknie se AllowedIPs, die roete wat die stelsel vir daardie bestemmings gebruik, en wat die bestuurder ook al namens jou installeer. Met wg-quick word die laaste twee elke keer wanneer die koppelvlak opkom uit die konfigurasie gegenereer, so ’n verouderde kopie herinstalleer die ou voorvoegsel stilweg.
Vergelyk wat gekonfigureer is met wat lewendig is eerder as om enige een te vertrou:
wg show
wg showconf wg0
ip addr show wg0
ip route get 10.90.0.5Die roete-opsoek is die een wat mense oorslaan. Dit antwoord wat die kern werklik vir ’n bestemming sou doen, insluitend ’n meer spesifieke roete wat ’n bestuurder of ’n houerruntime agtergelaat het. As dit ’n ander koppelvlak as die tonnel aandui, is die konfigurasie nie die probleem nie.
Vir ’n lopende koppelvlak, pas die gewysigde lêer toe sonder om die tonnel af te breek:
wg syncconf wg0 <(wg-quick strip wg0)Dit werk eweknieë en reekse op dieselfde plek by. Dit werk nie die koppelvlakadres of die roetes by nie, want dit is nie WireGuard-instellings nie — so ’n hernommering het steeds nodig dat die koppelvlak herskep word of die adres met ip verander word, en dan moet die roetering weer nagegaan word.
Wat saam aan die verre kant moet beweeg
Dit is waar ’n subnetverandering gewoonlik sterf. AllowedIPs is nie net ’n roete-wenk nie; dit is ook die lys bronadresse wat ’n eweknie mag voorhou. Wanneer jy kliënte hernommer en die bediener se AllowedIPs op die ou voorvoegsel laat, aanvaar die bediener die handskud, ontvang die versleutelde pakkette, en gooi dit weg omdat die binneste bron nie ooreenstem met enige reeks wat dit met daardie eweknie assosieer nie. Geen fout word gelog nie, en die kliënt sien ’n tydsverloop.
Werk dus die ontvangkant met opset by: die eweknie-inskrywing op die bediener moet die nuwe kliëntvoorvoegsel lys, die bediener se eie terugroete moet vir daardie voorvoegsel na die tonnel wys, en enige stroomaf netwerk agter die bediener moet die nuwe pad leer. Brandmuurbeleid wat die ou reeks genoem het, het dieselfde behandeling nodig, en so ook enigiets wat op bron gebaseerde keuring doen.
Die diagnostiek wat die twee mislukkings skei, is goedkoop. ’n Onlangse handskud plus geen data beteken die tonnel is op en die binneste adressering stem nie saam nie. Glad geen handskud nie beteken jy kyk na bereikbaarheid of sleutels. Moenie sleutels roteer vir ’n voorvoegselprobleem nie; dit stel die een ding terug wat gewerk het.
Verouderde kopieë wat jou wysiging oorleef
Om ’n lêer te wysig is nie dieselfde as om die lopende stelsel te verander nie, en die kopieë is meer as wat mense verwag: die eenheid of bestuurder wat die koppelvlak besit, ’n tweede profiel met dieselfde naam in ’n ander gids, ’n houer met sy konfigurasie in ’n beeld ingebak, ’n router-koppelvlak met sy eie gewysigde weergawe, en ’n kliëntprogram wat ’n gestoorde tonnel by bekendstelling weer invoer. Elkeen kan die ou voorvoegsel herstel nadat jou verandering voltooid lyk.
Name reis ook. As die numeriese roete werk maar die gasheernaam faal, wys ’n interne DNS-inskrywing of ’n dienskonfigurasie steeds na die ou tonneladres. Maak die verwysing reg in plaas daarvan om elke eweknie-reeks te verbreed, wat die werklike probleem sou toedek en terselfdertyd die bron-ACL sou vergroot.
Hou een herstelpad oop terwyl jy werk: ’n tweede manier in die gasheer, ’n serie-konsole, of ’n geskeduleerde terugrol van die konfigurasielêers. ’n Tonnelverandering wat jou uitsluit uit die masjien wat jy verander, is die algemeenste manier waarop hierdie taak ’n aand word.
Kies tussen die twee, en verifieer die oorskakeling
Kies A wanneer jy elke eweknie besit, die getal klein is, en ’n kort onderbreking aanvaarbaar is. Kies B wanneer eweknieë afgeleë hande is wat jy nie beheer nie, wanneer ’n werf-tot-werf skakel op moet bly, of wanneer jy nie kan waarborg dat elke kopie in een deurloop bygewerk word nie. Voeg in daardie geval die nuwe voorvoegsel by albei koppelvlakke, skuif eweknieë een op ’n slag, kyk na verkeer op die nuwe een, en verwyder eers dan die ou koppelvlak en sy roetes.
Onder enige opsie is die verandering klaar wanneer vier kontroles slaag: die handskud is onlangs, die roete-opsoek vir ’n bestemming met die nuwe voorvoegsel noem die tonnel, ’n loonvrag van ’n paar honderd grepe dra in albei rigtings oor, en dieselfde geld ná ’n herbegin van die gasheer of die bestuurder. Die wg(8)-handleiding is die verwysing vir wat AllowedIPs in elke rigting beteken, en dit is die moeite werd om dit weer te lees voordat jy ’n reeks verbreed om ’n simptoom te laat verdwyn.
- Handskud onlangs en geen data: kyk na AllowedIPs aan die ontvangerkant voordat jy aan sleutels raak.
- Roete-opsoek wys na die verkeerde koppelvlak: ’n bestuurder of houer besit die roete, nie jou lêer nie.
- Numeriese adres reg en gasheernaam stukkend: ’n ou verwysing, nie ’n roetelus nie.
- Verandering eers voltooi wanneer ’n herbegin steeds die nuwe voorvoegsel gebruik.