WireGuard petlja zadane rute: pronađite putanju do odredišta
Zadana ruta šalje vlastite šifrirane pakete tunela natrag u njega samog. Pročitajte putanju do odredišta, dodajte jednu rutu do hosta, zatim provjerite i poništite.
Interfejs se podiže, konfiguracija partnera izgleda ispravno i nijedan handshake nikada se ne završava. Dodavanje zadane rute kroz tunel je korak koji to često uzrokuje: ista tabela ruta sada odlučuje kuda trebaju ići vlastiti šifrirani paketi tunela, a odgovor koji daje vodi natrag u tunel. Ništa ne može nositi vanjski paket koji bi nosio unutrašnji, pa se veza zaustavlja prije nego što počne. Popravka je mala, ali ima redoslijed, a provjera je važnija od izmjene.
Potvrdite petlju prije nego što promijenite rutu
Pročitajte trenutnu adresu odredišta partnera i zatim pitajte stog za usmjeravanje kuda bi išao paket na tu adresu. Ako odgovor navede interfejs tunela, petlja je potvrđena i dalja dijagnostika nije potrebna. Sačuvajte oba izlaza u zapis o izmjeni prije nego što bilo šta dodirnete, jer je poređenje nakon popravke iste dvije komande. Petlja nije suptilna kada se jednom vidi; teškoća je u tome što interfejs izgleda zdravo dok se to događa.
sudo wg show wg1 endpoints
ip route get 198.51.100.20
ip rule show
Uključite pravila politike u to snimanje. Zadana ruta koja izgleda ispravno u glavnoj tabeli ipak može izgubiti od pravila koje odabire drugu tabelu za označeni ili neoznačeni saobraćaj, a petlja će se ponovno pojaviti s tabelom ruta koja izgleda ispravno.
Čitajte putanju do odredišta, a ne putanju tunela
Putanja do odredišta je ruta koju šifrirani datagrami prolaze do javne adrese partnera i mora ostati izvan tunela sve dok tunel postoji. Putanja tunela je sve što je partneru dozvoljeno nositi. Te dvije putanje dijele jednu tabelu ruta, i upravo zato jedan unos koji sve hvata može ih srušiti jednu u drugu. Razdvajanje saobraćaja tunela od vlastitog transporta tunela cijeli je problem dizajna, a svaki podržani alat ga rješava negdje malo drugačije.
Provjerite obje porodice adresa odvojeno ako interfejs nosi obje. Ispravno isključivanje IPv4 ne govori ništa o tome je li odredište IPv6 još dostupno, a miješana konfiguracija može izgledati ispravno dok se ne odabere adresa IPv6 partnera.
Vratite putanju do odredišta jednom usklađenom izmjenom
Postoje dva podržana pristupa, a njihovo miješanje je način na koji ispravna postavka postaje nepredvidiva. Prvi je prepustiti alatu koji posjeduje interfejs da upravlja cijelim tunelom: wg-quick ima namjensko rukovanje za zadani raspon partnera koje instalira odvojenu tabelu, pravila politike i oznaku soketa, što drži vanjske pakete izvan tunela. Ostavite tu mehaniku netaknutom umjesto da je napola reproducirate ručno. Postavka koja miješa ručno dodanu zadanu rutu s menadžerom koji već instalira oznake i pravila obično pada nakon ponovnog povezivanja, kada menadžer prepiše stanje koje je ručni korak pretpostavljao.
Drugi je ručni dizajn u kojem odredište dobija eksplicitnu rutu do hosta kroz fizički gateway. Dodajte tu rutu prije zadane, zamijenite umjesto dodavanja kako zastarjeli unos ne bi mogao pobijediti, i potvrdite pretragu nakon toga.
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
Provjerite, zatim zadržite put natrag
Vremenska oznaka handshakea koja napreduje prvi je dokaz i jača je od interfejsa koji samo postoji. Slijedite je testom aplikacije kroz tunel, zatim namjerno spustite interfejs i potvrdite da se host vraća u upotrebljivo stanje umjesto da drži zadanu rutu koja pokazuje u ništa. Taj zadnji korak ljudi preskaču, i on odlučuje hoće li ponovno pokretanje ostaviti mašinu bez veze.
sudo wg show wg1 latest-handshakes
sudo wg-quick down wg1
ip route show default
ip route get 198.51.100.20
Prije svega toga sačuvajte trenutno stanje usmjeravanja i uvjerite se da postoji put za pristup koji ne zavisi od tunela: konzola, adresa za vanpojasno upravljanje ili kolega na licu mjesta. Udaljena mašina koja izgubi zadanu rutu ne može se oporaviti preko veze koju je upravo izgubila, a najsigurniji korak u runbooku je onaj poduzet prije prve komande.