WireGuard: нема руте до партнера после промене подмреже — два излаза
Промена подмреже квари WireGuard на два места: AllowedIPs и повратни пут. Упоредите пренумерацију на лицу места са поновном изградњом интерфејса.
Руковање је свеже у wg show, крајња тачка је исправна, кључеви се никада нису променили — а ping и даље каже да нема руте до партнера. Променили сте подмрежу тунела пре сат времена. Тај симптом је потпис неусклађености префикса, а не проблема са кључевима: WireGuard је завршио руковање, а затим одбацио податке јер изворишна адреса више не одговара ономе што ће прихватити партнерски чвор. Постоје два разумна начина да се промена подмреже спроведе и они падају на различитим местима.
Два начина да спроведете промену и колико сваки кошта
Опција А је пренумерација на лицу места: уредите адресу интерфејса, опсеге партнера, руте и сваку копију конфигурације, па учитајте изнова. Опција Б је изградња другог интерфејса на новом префиксу поред старог, пребацивање партнера и уклањање старог интерфејса тек кад саобраћај заиста пређе.
| 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 |
Половично примењено стање чини опцију А опасном јер не изгледа покварено. Интерфејс се подиже, руковање успева, а пада само пут података. Опција Б тражи више рада, али одржава радни пут живим док тражите сваку референцу.
Шта мора да се креће заједно на вашој страни
Четири ствари на локалном хосту описују исту подмрежу, а промена једне је промена свих: адреса интерфејса, AllowedIPs сваког партнера, рута коју систем користи за те дестинације и све што управљач инсталира у ваше име. Уз wg-quick последње две се генеришу из конфигурације сваки пут кад се интерфејс подигне, па застарела копија тихо враћа стари префикс.
Упоредите оно што је конфигурисано са оним што је живо, уместо да верујете једном од тога:
wg show
wg showconf wg0
ip addr show wg0
ip route get 10.90.0.5Претрага руте је корак који људи прескачу. Она одговара шта би кернел заиста урадио за дестинацију, укључујући специфичнију руту коју је оставио управљач или окружење контејнера. Ако покаже други интерфејс од тунела, конфигурација није проблем.
За интерфејс који ради, примените уређену датотеку без разбијања тунела:
wg syncconf wg0 <(wg-quick strip wg0)То ажурира партнере и опсеге на лицу места. Не ажурира адресу интерфејса ни руте, јер то нису WireGuard поставке — зато пренумерација и даље тражи поновно стварање интерфејса или промену адресе помоћу ip, а затим поновну проверу рутирања.
Шта мора да се креће заједно на удаљеној страни
Овде промена подмреже обично умире. AllowedIPs није само назнака за рутирање; то је и списак изворишних адреса које партнер сме да представи. Кад пренумеришете клијенте и оставите AllowedIPs на серверу на старом префиксу, сервер прихвати руковање, прими шифроване пакете и одбаци их јер се унутрашње извориште не поклапа ни са једним опсегом који везује за тог партнера. Никаква грешка се не бележи, а клијент види истек времена.
Зато ажурирајте пријемну страну свесно: унос партнера на серверу мора да наведе нови префикс клијента, сопствена повратна рута сервера мора за тај префикс да показује на тунел, а свака низводна мрежа иза сервера мора да научи нови пут. Ватрозидна правила која су именовала стари опсег требају исти третман, као и све што ради избор према изворишту.
Дијагностика која раздваја два квара је јефтина. Свеже руковање без података значи да је тунел подигнут и да се унутрашње адресирање не слаже. Потпуно одсуство руковања значи да гледате доступност или кључеве. Не мењајте кључеве због проблема са префиксом; тиме ресетујете једино што је радило.
Застареле копије које надживе вашу измену
Уређивање датотеке није исто што и промена система који ради, а копија је више него што људи очекују: unit или управљач који поседује интерфејс, други профил истог имена у другом директоријуму, контејнер са конфигурацијом упеченом у слику, интерфејс рутера са својом уређеном верзијом и клијентска апликација која при покретању поново увози сачувани тунел. Свака од њих може да врати стари префикс након што ваша промена изгледа завршена.
И имена путују. Ако нумеричка рута ради, а име хоста не, интерни DNS запис или конфигурација услуге још увек показује на стару адресу тунела. Исправите референцу уместо да ширирте сваки опсег партнера, јер би то прекрило стварни проблем и истовремено повећало ACL изворишта.
Држите један пут опоравка отвореним док радите: други начин уласка на хост, серијску конзолу или заказано враћање конфигурационих датотека. Промена тунела која вас закључава изван машине коју мењате најчешћи је начин да се овај задатак претвори у вече.
Избор између два приступа и провера пребацивања
Одаберите А кад поседујете сваког партнера, број је мали и кратак прекид је прихватљив. Одаберите Б кад су партнери удаљене руке које не контролишете, кад веза између локација мора да остане, или кад не можете да гарантујете да ће свака копија бити ажурирана у једном пролазу. У том случају додајте нови префикс на оба интерфејса, пребацујте партнере један по један, гледајте саобраћај на новом и тек онда уклоните стари интерфејс и његове руте.
У обе опције промена је готова кад прођу четири провере: руковање је свеже, претрага руте за дестинацију са новим префиксом именује тунел, терет од неколико стотина бајтова преноси се у оба смера, и исто важи након рестарта хоста или управљача. Службени wg(8) приручник је референца за то шта AllowedIPs значи у сваком смеру, и вреди га поново прочитати пре него што проширите опсег да симптом нестане.
- Руковање свеже и нема података: погледајте AllowedIPs на пријемнику пре него што дирате кључеве.
- Претрага руте показује погрешан интерфејс: рутом управља управљач или контејнер, не ваша датотека.
- Нумеричка адреса је у реду, име хоста покварено: стара референца, не петља рутирања.
- Промена је завршена тек кад након рестарта још увек користи нови префикс.