WireGuard numatytosios trąsos kilpa: raskite galinio taško kelią
Numatytoji trasa siunčia paties tunelio šifruotus paketus atgal į jį patį. Perskaitykite galinio taško kelią, pridėkite vieną mazgo maršrutą, tada patikrinkite ir atšaukite.
Sąsaja pakyla, bendraamžio konfigūracija atrodo teisinga, ir joks rankos paspaudimas niekada nebaigiamas. Numatytoji trasa per tunelį yra žingsnis, kuris tai dažnai sukelia: ta pati maršrutų lentelė dabar sprendžia, kur turi eiti paties tunelio šifruoti paketai, o jos pateikiamas atsakymas veda atgal į tunelį. Niekas negali pernešti išorinio paketo, kuris perneštų vidinį, todėl ryšys sustoja prieš prasidedant. Taisymas mažas, bet turi tvarką, ir patikrinimas svarbesnis už redagavimą.
Patvirtinkite kilpą prieš keisdami trasą
Perskaitykite dabartinį bendraamžio galinio taško adresą ir tada paklauskite maršrutizavimo kamino, kur eitų paketas į tą adresą. Jei atsakymas nurodo tunelio sąsają, kilpa patvirtinta ir daugiau diagnostikos nereikia. Išsaugokite abu rezultatus pakeitimų žurnale prieš ką nors liesdami, nes palyginimas po taisymo yra tos pačios dvi komandos. Kilpa nėra subtili, kai ją pamatai; sunkumas tas, kad sąsaja atrodo sveika, kol tai vyksta.
sudo wg show wg1 endpoints
ip route get 198.51.100.20
ip rule show
Įtraukite politikos taisykles į tą įrašą. Numatytoji trasa, kuri pagrindinėje lentelėje atrodo teisinga, vis tiek gali pralaimėti taisyklei, kuri pažymėtam ar nepažymėtam srautui parenka kitą lentelę, ir kilpa vėl pasirodys su tvarkingai atrodančia maršrutų lentele.
Skaitykite galinio taško kelią, o ne tunelio kelią
Galinio taško kelias yra trasa, kuria šifruoti datagramai eina į bendraamžio viešąjį adresą, ir ji turi likti už tunelio, kol tunelis egzistuoja. Tunelio kelias yra viskas, ką bendraamžiui leidžiama pernešti. Šie du keliai dalijasi viena maršrutų lentele, ir būtent todėl vienas viską pagaunantis įrašas gali juos sutraiškyti vieną į kitą. Tunelio srauto atskyrimas nuo paties tunelio transporto yra visa projektavimo problema, ir kiekvienas palaikomas įrankis ją sprendžia kažkur šiek tiek kitaip.
Patikrinkite abi adresų šeimas atskirai, jei sąsaja perneša abi. Veikianti IPv4 išimtis nieko nesako apie tai, ar IPv6 galinis taškas dar pasiekiamas, o mišri konfigūracija gali atrodyti veikianti, kol neparenkamas bendraamžio IPv6 adresas.
Atkurkite galinio taško kelią vienu nuosekliu pakeitimu
Yra du palaikomi būdai, ir jų maišymas yra tai, kas veikiančią sąranką padaro nenuspėjamą. Pirmasis – leisti įrankiui, kuriam priklauso sąsaja, tvarkyti visą tunelį: wg-quick turi specialų numatytojo bendraamžio diapazono apdorojimą, kuris įdiegia atskirą lentelę, politikos taisykles ir lizdo žymę, o tai laiko išorinius paketus už tunelio. Palikite tą mechanizmą nepažeistą, o ne atkurkite pusę jo rankomis. Sąranka, kuri maišo rankiniu būdu pridėtą numatytąją trasą su valdytoju, kuris jau įdiegia žymes ir taisykles, po pakartotinio prisijungimo dažnai nepavyksta, kai valdytojas perrašo būseną, kurią rankinis žingsnis numatė.
Antrasis – rankinis projektas, kuriame galinis taškas gauna aiškų mazgo maršrutą per fizinį šliuzą. Pridėkite tą maršrutą prieš numatytąją trasą, pakeiskite, o ne prijunkite, kad pasenęs įrašas negalėtų laimėti, ir tada patvirtinkite paiešką.
sudo ip route replace 198.51.100.20/32 via 192.0.2.1 dev eth0
ip route get 198.51.100.20
sudo ip route add default dev wg1
Patikrinkite ir tada palikite kelią atgal
Didėjantis rankos paspaudimo laiko žymuo yra pirmasis įrodymas, ir jis stipresnis už sąsają, kuri tiesiog egzistuoja. Tęskite programos testu per tunelį, tada sąmoningai išjunkite sąsają ir patvirtinkite, kad mazgas grįžta į naudojamą būseną, o ne laiko numatytąją trasą, rodančią į nieką. Tą paskutinį žingsnį žmonės praleidžia, ir jis nusprendžia, ar perkrovimas paliks mašiną be ryšio.
sudo wg show wg1 latest-handshakes
sudo wg-quick down wg1
ip route show default
ip route get 198.51.100.20
Prieš visa tai išsaugokite dabartinę maršrutizavimo būseną ir įsitikinkite, kad yra patekimo kelias, nepriklausantis nuo tunelio: konsolė, išorinio valdymo adresas arba kolega vietoje. Nuotolinė mašina, kuri praranda numatytąją trasą, negali būti atkurta per ryšį, kurį ką tik prarado, o saugiausias vadovo žingsnis yra tas, kuris atliekamas prieš pirmąją komandą.