Ръкостискането е прясно в wg show, крайната точка е вярна, ключовете никога не са се променяли — а ping все още казва, че няма маршрут до партньора. Сменихте подмрежата на тунела преди час. Този симптом е подписът на несъответствие в префикса, а не на проблем с ключовете: WireGuard завърши ръкостискането и след това изхвърли данните, защото адресът на източника вече не съвпада с това, което приемащият партньор ще приеме. Има два разумни начина да се осъществи смяна на подмрежата и те се провалят на различни места.

Два начина да осъществите промяната и какво струва всеки

Вариант A е преномериране на място: редактирайте адреса на интерфейса, диапазоните на партньорите, маршрутите и всяко копие на конфигурацията, след което презаредете. Вариант B е изграждане на втори интерфейс върху новия префикс до стария, преместване на партньорите и премахване на стария интерфейс, след като трафикът действително се премести.

A: renumber in placeB: parallel interface
DowntimeThe reload window, per hostNone if peers are added to both
RollbackRe-apply the previous filesPoint peers back at the old interface
RiskHalf-applied change: new address, old rangesTwo live interfaces with overlapping intent
EffortSmall, if the deployment has one ownerHigher, and needs a cleanup step
FitsTwo or three peers you controlMany peers, remote sites, or no maintenance window

Наполовина приложеното състояние прави вариант A опасен, защото не изглежда счупен. Интерфейсът се вдига, ръкостискането успява и само пътят на данните се проваля. Вариант B струва повече работа, но поддържа работещ път, докато намерите всяка препратка.

Какво трябва да се движи заедно от вашата страна

Четири неща на локалния хост описват една и съща подмрежа и промяната на едно е промяна на всички: адресът на интерфейса, 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 на сървъра на стария префикс, сървърът приема ръкостискането, получава криптираните пакети и ги изхвърля, защото вътрешният източник не съвпада с нито един диапазон, който той свързва с този партньор. Не се записва грешка и клиентът вижда изчакване.

Затова обновявайте приемащата страна съзнателно: записът на партньора на сървъра трябва да изброява новия префикс на клиента, собственият обратен маршрут на сървъра трябва да сочи към тунела за този префикс, а всяка подчинена мрежа зад сървъра трябва да научи новия път. Правилата на защитната стена, които са именували стария диапазон, се нуждаят от същото, както и всичко, което прави избор по източник.

Диагностиката, която разделя двата отказа, е евтина. Скорошно ръкостискане без данни означава, че тунелът е вдигнат и вътрешното адресиране не е съгласно. Пълната липса на ръкостискане означава, че гледате достъпност или ключове. Не сменяйте ключове заради проблем с префикса; това нулира единственото, което е работело.

Остарели копия, които надживяват редакцията ви

Редактирането на файл не е същото като промяна на работещата система и копията са повече, отколкото хората очакват: юнитът или мениджърът, който притежава интерфейса, втори профил със същото име в друга директория, контейнер с конфигурация, вградена в образ, интерфейс на рутер със своя редактирана версия и клиентско приложение, което при стартиране импортира отново запазен тунел. Всяко от тях може да възстанови стария префикс, след като промяната ви изглежда завършена.

Имената също пътуват. Ако числовият маршрут работи, а името на хоста се проваля, вътрешен DNS запис или конфигурация на услуга все още сочи към стария адрес на тунела. Поправете препратката, вместо да разширявате всеки диапазон на партньор, което би замазало истинския проблем и едновременно би увеличило ACL на източниците.

Дръжте един път за възстановяване отворен, докато работите: втори начин за достъп до хоста, серийна конзола или планирано връщане на конфигурационните файлове. Промяна на тунела, която ви заключва извън машината, която променяте, е най-честият начин тази задача да се превърне във вечер.

Избор между двете и проверка на превключването

Изберете A, когато притежавате всеки партньор, броят е малък и кратко прекъсване е приемливо. Изберете B, когато партньорите са отдалечени ръце, които не контролирате, когато връзката между сайтове трябва да остане, или когато не можете да гарантирате, че всяко копие ще бъде обновено с едно преминаване. В този случай добавете новия префикс към двата интерфейса, премествайте партньорите един по един, наблюдавайте трафика на новия и едва след това премахнете стария интерфейс и неговите маршрути.

При всеки от двата варианта промяната е готова, когато минат четири проверки: ръкостискането е скорошно, търсенето на маршрут за дестинация с новия префикс назовава тунела, полезен товар от няколкостотин байта се прехвърля в двете посоки и същото е вярно след рестарт на хоста или мениджъра. А ръководството wg(8) е справочникът за това какво означава AllowedIPs във всяка посока и си струва да го препрочетете, преди да разширите диапазон, за да изчезне симптом.

  • Скорошно ръкостискане и няма данни: погледнете AllowedIPs на получателя, преди да пипате ключове.
  • Търсенето на маршрут сочи грешен интерфейс: маршрутът се притежава от мениджър или контейнер, не от вашия файл.
  • Числовият адрес е наред, а името на хоста е счупено: стара препратка, а не маршрутна примка.
  • Промяната е завършена само когато след рестарт все още се използва новият префикс.

Подобни статии