Du /1 prefiksai apima lygiai tuos pačius IPv4 adresus kaip vienas /0, ir ši lygybė galioja tik partnerio leidžiamų prefiksų sąrašo viduje. Ji nustoja galioti tą akimirką, kai sąrankos įrankis nusprendžia, kaip maršrutizuoti, nes Linux wg-quick numatytąjį prefiksą traktuoja kaip specialų atvejį, o ne kaip aritmetiką. Specialioji šaka įdiegia atskirą lentelę, dvi politikos taisykles, lizdo žymę ir atvirkštinio kelio nuostatas, kurių pusinių maršrutų pora niekada negauna. Taigi, kai po pakeitimo tarpinis serveris ar naršyklė nustoja veikti, prefiksai yra mažiausiai įdomi pakeitimo dalis.

Prefiksų sąrašas nėra visa konfigūracija

AllowedIPs atlieka du darbus vienu metu, ir tik vienas jų susijęs su aprėptimi. Pačiam WireGuard sąrašas yra šifravimo raktų maršrutizavimas: jis nusprendžia, kurie tikslai šifruojami partnerio kryptimi ir kokius šaltinio adresus tas partneris gali naudoti. wg-quick atžvilgiu tas pats sąrašas tarnauja ir kaip maršrutų specifikacija, o sukuriamas maršrutas priklauso nuo to, kurią šaką sąrašas atsitiktinai atitinka. Identiška aprėptis dviejose skirtingose sąrašo formose todėl nieko nesako apie identišką pagrindinio kompiuterio būseną.

Numatytoji konfigūracija atima šį sprendimą iš jūsų rankų, nes Table pagal numatymą yra automatinis, o įrankis pats pasirenka, kur nusileis maršrutai. Kita tinklo tvarkyklė, platinimo apvalkalas ar pasirinktinė Table reikšmė vėl keičia rezultatą, todėl vienam kompiuteriui parašytas patarimas kitame gali atrodyti klaidingas.

Ką numatytoji šaka prideda be maršruto

/0 įrašas nusiunčia wg-quick į numatytojo maršruto kelią: atskira maršrutizavimo lentelė gauna numatytąjį maršrutą, viena politikos taisyklė siunčia nepažymėtą srautą ten, antra taisyklė išlaiko konkretesnius pagrindinės lentelės maršrutus kaip viršesnius, o sąsaja gauna ugniasienės žymę savo lizde. Ta žymė yra ciklo sargas. Šifruotos datagramos, vežančios tunelio srautą, išvyksta su nustatyta žyme, kad taisyklė, nukreipianti visa kita į tunelį, neprarytų paties tunelio transporto paketų.

Vietoj to /1 įrašų pora pasirenka įprastą maršruto kelią. Į sukonfigūruotą lentelę patenka du maršrutai, ir niekas iš aplinkinės mechanikos nepasirodo, ne todėl, kad ji nereikalinga, o todėl, kad į tą kodo kelią niekada nebuvo įžengta.

Kur abi tvarkos išsiskiria

Skirtumas pirmiausia pasirodo kaip rekursija. Kai pusiniai maršrutai yra pagrindinėje lentelėje, paties partnerio transporto adresas patenka į tunelio prefiksą, todėl paketas, kuris turėtų nešti tunelį, atitinka maršrutą, rodantį į tunelio vidų. Kažkas turi jį išskirti: kompiuterio maršrutas dabartiniam galiniam taškui, ranka uždėta žymė ar sąsajai būdinga taisyklė. Kompiuterio maršrutas veikia tol, kol nesikeičia galinio taško adresas, kas nutinka su DNS pagrindu veikiančiais galiniais taškais, keliaujančiais klientais ir kelių partnerių konfigūracijomis.

Antra, viskas, kas samprotauja apie žymes, keičia savo elgesį. Skaidrus tarpinis serveris, kuris vietoje peradresuoja ryšius, sukuria naujus lizdus, kurių žymės ir šaltiniai skiriasi nuo pradinio kliento srauto, o numatytosios šakos generuojamos politikos taisyklės buvo dalis to, kas tuos srautus išskyrė. Skaityti paties tarpinio serverio išeinantį ryšį yra kitas pratimas nei tikrinti, ar pradinis tikslas pasiekiamas.

Prieš redaguodami perskaitykite taisykles ir žymes

Užfiksuokite dabartinę būseną, kol tunelis sveikas, paskui dar kartą po pakeitimo, ir palyginkite du išrašus, o ne samprotaudami iš konfigūracijos failo. Įtraukite politikos taisykles, kiekvieną lentelę, sąsajos žymę ir užregistruotus galinius taškus.

ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints

Jei pirmoje išvesties eilutėje dingo nepažymėto srauto taisyklė, o atskira lentelė tuščia, numatytoji šaka neveikia, ir jokia prefiksų aritmetika neatkurs jos efektų. Nulinė žymė sąsajoje, kuri anksčiau ją turėjo, yra tas pats signalas, matomas vienoje reikšmėje.

Prieš išleisdami pasitreniruokite tunelio praradimą

Jei pusinių maršrutų išdėstymas yra sąmoningas pasirinkimas, jis turi aiškiai pateikti trūkstamas dalis: galinio taško kelią, atlaikantį adresų pokyčius, numatytą elgesį tuneliui nukritus ir lygiavertį IPv6 apdorojimą. Užrašykite tai kaip reikalavimus, o ne atraskite per sutrikimą. Tada pasitreniruokite gedimą, nes pilnas tunelis, tyliai grįžtantis prie fizinės jungties, yra blogesnis už tą, kuris nustoja veikti.

sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1

Maršruto paieška turėtų išspręsti galinį tašką iš fizinės sąsajos neperžengiant tunelio, o sąsajos išjungimas turėtų palikti kompiuterį toje būsenoje, kurią pažadėjo dizainas. Tarpinis serveris, veikiantis po pakeitimo, įrodo, kad sugeneruota kompiuterio būsena buvo svarbi; jis neįrodo, kad ciklo prevencija ir elgesys išjungtoje būsenoje išgyveno pakeitimą.

Susiję straipsniai