Domača škatla odpre tunel in brez težav doseže oblačni strežnik. Oblačni strežnik lahko doseže domačo aplikacijo minuto ali dve po tem, ko je domača škatla nazadnje kaj poslala, nato pa se ustavi. V dnevniku WireGuarda se ne pojavi nič, ne poroča se o nobeni napaki rokovanja, in ponovni zagon tunela to za kratek čas popravi. Ta vzorec je preslikava, ki poteče, ne pokvarjen tunel, in spodnji vodnik to potrdi, preden se karkoli spremeni.

Potrdite, da je vzorec potek zaradi nedejavnosti

Razlikovalna podrobnost je čas. Če povratna povezava deluje takoj po tem, ko domači partner pošlje promet, in odpove po tihem intervalu, je pot v redu, stanje v sredini pa ne. Če ni nikoli delovala, tudi takoj po prometu ne, je to napačna diagnoza.

sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer

Zaženite prva dva takoj po tem, ko domači partner kaj pošlje, počakajte pet minut in ju zaženite znova. Časovni žig rokovanja, ki se obnavlja po urniku brez nove končne točke, vam pove, da tunel živi. Spremenila se je zmožnost nepovabljenih paketov, da prihajajo od zunaj, kar je lastnost poti in ne tunela.

Nato poskusite povratno in opazujte prenosne števce. Če oblaka stran pošilja bajte, domača stran pa ne prejme nobenega, je paket zapustil oblak in na poti umrl v napravi, ki hrani stanje. To je podpis, ki ga iščete. Če se premikata oba števca, je tunel paket dostavil in sumljiva je aplikacija.

Postavite keepalive na partnerja za usmerjevalnikom

Trajni keepalive ohranjajo preslikavo NAT in kakršno koli stanje požarnega zidu živo tako, da po urniku pošiljajo majhen overjen paket. Nastavitev sodi na stroj za usmerjevalnikom, v njegov vnos za oddaljenega partnerja, ker je to stran, katere odhodni paket ustvari stanje.

[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25

Združite jo z obstoječim razdelkom partnerja. Dodajanje drugega bloka z istim javnim ključem ni veljaven način dodajanja možnosti in wg-quick jih ne bo združil namesto vas. Dokumentiranih 25 sekund je primer, izbran zato, da leži pod običajnimi časovnimi omejitvami UDP, ne vrednost s posebnim pomenom.

Postavitev iste direktive na oblačno stran ne pomaga pri tej težavi. Paketi tega partnerja že prihajajo z javnega naslova, zato v pomembni smeri ni česa ohraniti. Dodaja promet in ne spremeni ničesar.

Berite časovnike, namesto da ugibate interval

Keepalive delujejo, ker prihajajo pogosteje, kot stanje poteče. Zato je časovna omejitev število, ki ga resnično potrebujete, in v Linuxu jo je mogoče prebrati na napravi, ki izvaja prevajanje:

sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820

Prva vrednost je časovna omejitev za tok UDP, ki je bil viden samo v eni smeri, druga pa velja, ko so opaženi odgovori. Obe sta običajno kratki in preslikava, ki utihne, bo sledila temu, kar velja za vaš tok.

Primerjajte to število s svojim intervalom. Keepalive 25 sekund pri omejitvi 30 sekund deluje; isti keepalive pri omejitvi 15 sekund ne deluje. Nobeno število ponovitev te aritmetike ne spremeni. Nekateri domači usmerjevalniki in mobilni operaterji uporabljajo veliko krajše vrednosti od privzete v Linuxu, zato konfiguracija, ki deluje v enem omrežju, odpove v drugem.

ObservationWhat it meansReasonable response
Works after traffic, dies when idleMapping or firewall state expiringLower the keepalive interval
Never works, even immediatelyNo return route, listener or firewallStop tuning keepalive
Works for hours, then dies onceCarrier-side translation or address changeCheck the endpoint and logs together

Preverite poslušalca in požarni zid ločeno

Živa preslikava je nujna in ne zadostuje. Aplikacija na domači škatli mora poslušati na pravem naslovu, gostiteljski požarni zid pa mora paket po dešifriranju dovoliti.

sudo ss -lntup | grep 8080
sudo wg show wg0 allowed-ips
curl -sS -m 5 http://10.71.0.2:8080/health

Če je vtičnica vezana le na naslov fizičnega vmesnika in ne na naslov tunela, se paketi, ki prispejo po tunelu, zavržejo, še preden se požarni zid sploh vpraša. Ta napaka je z oblačne strani videti enako kot težava s preslikavo in preživi vsako prilagoditev keepalive.

Preverjanje dovoljenega seznama je enako pomembno v drugi smeri. Oblačni partner mora dovoliti naslov domačega tunela kot vir, če bo odgovarjal, domači partner pa mora dovoliti oblačni naslov kot cilj. Paketi keepalive so overjen promet in uporabljajo ista pravila, zato lahko keepalive, ki se zdi delujoč, sobiva z aplikacijo, ki ne deluje.

Uvedite spremembo in poznajte njene meje

Uporabite nastavitev, znova zaženite vmesnik, če je to vaš način posodabljanja, nato pa ponovite preskus nedejavnosti namesto takojšnjega preskusa. Počakajte dlje od časovne omejitve, ki ste jo prebrali prej, naredite povratno zahtevo in potrdite, da so se števci premaknili na obeh koncih.

Zapišite interval in izmerjeno časovno omejitev ob njem. Prihodnja sprememba vdelane programske opreme usmerjevalnika ali prehod na mobilno povezavo lahko spremeni omejitev. Zapis je tisto, kar nekomu omogoči, da vrednost znova izpelje, namesto da jo kopira. Dve števili v vrstici pozneje prihranita celo preiskavo.

Trajni keepalive ščitijo stanje. Ne odpirajo vrat, ne dodajajo vnosa na dovoljeni seznam in ne povzročijo, da bi se pojavil poslušalec. Ko povratna povezava sploh ne deluje, je krivda v eni od teh treh stvari, in hitri začetek WireGuarda opisuje nastavitev keepalive v enako ozkih izrazih.

Sorodni članki