Bucla rutei implicite WireGuard: găsiți calea punctului final
O rută implicită trimite pachetele criptate ale tunelului înapoi în el. Citiți calea punctului final, adăugați o rută de gazdă, apoi verificați și reveniți.
Interfața pornește, configurația perechii pare corectă și niciun handshake nu se finalizează vreodată. Adăugarea unei rute implicite prin tunel este pasul care provoacă adesea acest lucru: aceeași tabelă de rutare decide acum unde trebuie să meargă pachetele criptate ale tunelului, iar răspunsul pe care îl produce duce înapoi în tunel. Nimic nu poate transporta pachetul exterior care ar transporta pachetul interior, așa că conexiunea se oprește înainte de a începe. Reparația este mică, dar are o ordine, iar verificarea contează mai mult decât modificarea.
Confirmați bucla înainte de a schimba o rută
Citiți adresa actuală a punctului final al perechii și apoi întrebați stiva de rutare unde ar merge un pachet către acea adresă. Dacă răspunsul numește interfața tunelului, bucla este confirmată și nu mai este nevoie de diagnosticare suplimentară. Salvați ambele ieșiri în registrul de modificări înainte de a atinge ceva, deoarece comparația de după reparație sunt aceleași două comenzi. O buclă nu este subtilă odată văzută; dificultatea este că interfața pare sănătoasă în timp ce se întâmplă.
sudo wg show wg1 endpoints
ip route get 198.51.100.20
ip rule show
Includeți regulile de politică în acea captură. O rută implicită care pare corectă în tabela principală poate pierde totuși în fața unei reguli care selectează o altă tabelă pentru traficul marcat sau nemarcat, iar bucla va reapărea cu o tabelă de rutare care pare în regulă.
Citiți calea punctului final, nu calea tunelului
Calea punctului final este ruta pe care datagramele criptate o parcurg până la adresa publică a perechii și trebuie să rămână în afara tunelului cât timp tunelul există. Calea tunelului este tot ceea ce perechii îi este permis să transporte. Aceste două căi împart o singură tabelă de rutare și exact de aceea o singură intrare care prinde tot le poate prăbuși una în alta. Separarea traficului tunelului de transportul propriu al tunelului este întreaga problemă de proiectare, iar fiecare instrument acceptat o rezolvă undeva puțin diferit.
Verificați separat ambele familii de adrese dacă interfața le transportă pe amândouă. O excludere IPv4 funcțională nu spune nimic despre dacă punctul final IPv6 mai este accesibil, iar o configurație mixtă poate părea funcțională până când este selectată adresa IPv6 a perechii.
Restabiliți calea punctului final cu o singură modificare coerentă
Există două abordări acceptate, iar amestecarea lor este modul în care o configurație funcțională devine imprevizibilă. Prima este să lăsați instrumentul care deține interfața să gestioneze întregul tunel: wg-quick are o gestionare dedicată pentru un interval implicit de perechi care instalează o tabelă separată, reguli de politică și un marcaj de socket, ceea ce ține pachetele exterioare în afara tunelului. Lăsați acea mecanică intactă în loc să reproduceți jumătate din ea manual. O configurație care amestecă o rută implicită adăugată manual cu un manager care instalează deja marcaje și reguli tinde să eșueze după reconectare, când managerul rescrie starea pe care pasul manual o presupunea.
A doua este un design manual în care punctul final primește o rută de gazdă explicită prin gateway-ul fizic. Adăugați acea rută înainte de cea implicită, înlocuiți în loc să adăugați ca o intrare învechită să nu poată câștiga, și confirmați căutarea după aceea.
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
Verificați, apoi păstrați o cale de întoarcere
Un marcaj temporal de handshake care avansează este prima dovadă și este mai puternic decât o interfață care doar există. Urmați-l cu un test de aplicație prin tunel, apoi coborâți interfața intenționat și confirmați că gazda revine la o stare utilizabilă în loc să țină o rută implicită care nu duce nicăieri. Acel ultim pas este cel pe care oamenii îl sar și el decide dacă o repornire va lăsa mașina fără conexiune.
sudo wg show wg1 latest-handshakes
sudo wg-quick down wg1
ip route show default
ip route get 198.51.100.20
Înainte de toate acestea, salvați starea actuală de rutare și asigurați-vă că există o cale de intrare care nu depinde de tunel: o consolă, o adresă de gestionare în afara benzii sau un coleg la fața locului. O mașină la distanță care își pierde ruta implicită nu poate fi recuperată prin conexiunea pe care tocmai a pierdut-o, iar cel mai sigur pas din runbook este cel făcut înainte de prima comandă.