WireGuard PersistentKeepalive: mantendu NAT mapatzea bizirik
Alderantzizko konexioa parekideak trafikoa bidali ondoren soilik funtzionatzen badu, mapatzea iraungitzen ari da. Jarri keepalive-a routerraren atzean, eta gero irakurri benetako itxaronaldia.
Etxeko kutxak tunela ireki eta hodeiko zerbitzarira arazorik gabe iristen da. Hodeiko zerbitzariak etxeko aplikaziora irits daiteke etxeko kutxak azken aldiz zerbait bidali eta minutuz edo bi minutuz, eta gero gelditu egiten da. Ez da ezer agertzen WireGuard-en erregistroan, ez da eskuko ukimenaren errorearik jakinarazten, eta tunela berrabiarazteak une batez konpontzen du. Eredu hori iraungitzen ari den mapatze bat da, ez tunel hautsia, eta beheko gidak hori baieztatzen du ezer aldatu aurretik.
Baieztatu eredua inaktibitatean iraungitzea dela
Xehetasun bereizgarria denbora da. Alderantzizko konexioak etxeko parekideak trafikoa bidali eta berehala funtzionatzen badu eta tarte lasai baten ondoren huts egiten badu, bidea ondo dago eta erdiko egoera ez. Inoiz funtzionatu ez badu, trafikoaren ondoren berehala ere, diagnosi okerra da.
sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer
Exekutatu lehen biak etxeko parekideak zerbait bidali eta berehala, itxaron bost minutu eta exekutatu berriro. Programaren arabera berritzen den eskuko ukimenaren denbora-markak, amaiera-puntu berririk gabe, tunela bizirik dagoela esaten dizu. Aldatu dena kanpotik eskatu gabeko paketeak iristeko gaitasuna da, eta hori bidearen ezaugarria da, ez tunelarena.
Gero egin alderantzizko saiakera bat eta begiratu transferentzia-kontagailuei. Hodeiko aldeak byteak bidaltzen baditu eta etxeko aldeak bat ere jasotzen ez badu, paketeak hodeia utzi zuen eta bidean egoera gordetzen duen gailu batean hil zen. Hori da bilatzen ari zaren sinadura. Bi kontagailuak mugitzen badira, tunelak paketea eman zuen eta aplikazioa da susmagarria.
Jarri keepalive-a routerraren atzeko parekidean
Keepalive iraunkorrek NAT mapatze bat eta suebakiko edozein egoera bizirik mantentzen dituzte pakete txiki autentifikatu bat programaren arabera bidaliz. Ezarpena routerraren atzeko makinari dagokio, urruneko parekidearentzako bere sarreran, alde horren irteerako paketeak sortzen baitu egoera.
[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25
Batu ezazu lehendik dagoen parekidearen atalera. Gako publiko berarekin bigarren bloke bat gehitzea ez da aukerak gehitzeko modu balioduna, eta wg-quick-ek ez ditu zuretzat batu egingo. Dokumentatutako 25 segundoak UDP-ren ohiko itxaronaldien azpitik egoteko aukeratutako adibidea dira, ez esanahi berezirik duen balioa.
Direktiba bera hodeiko aldean jartzeak ez dio arazo honi laguntzen. Parekide horren paketeak jada helbide publikotik iristen dira, beraz ez dago mapatzetik gordetzeko garrantzizko norabidean. Trafikoa gehitzen du eta ez du ezer aldatzen.
Irakurri tenporizadoreak tarte bat asmatu beharrean
Keepalive-ek funtzionatzen dute egoera iraungitzen den baino maizago iristen direlako. Horrek itxaronaldia behar duzun zenbakia bihurtzen du, eta Linux-en itzulpena egiten duen gailuan irakur daiteke:
sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820
Lehen balioa norabide bakarrean bakarrik ikusi den UDP fluxu batentzako itxaronaldia da, eta bigarrena erantzunak ikusi ondoren aplikatzen da. Biak normalean laburrak dira, eta isiltzen den mapatze batek zure fluxuari dagokiona jarraituko du.
Konparatu zenbaki hori zure tartearekin. 25 segundoko keepalive batek 30 segundoko itxaronaldian funtzionatzen du; keepalive berak 15 segundoko itxaronaldian ez du funtzionatzen. Errepikatze-kantitateak ez du aritmetika hori aldatzen. Kontsumo-router batzuek eta operadore mugikorrek Linux-en lehenetsia baino askoz balio laburragoak erabiltzen dituzte, eta horregatik sare batean funtzionatzen duen konfigurazioak beste batean huts egiten du.
| Observation | What it means | Reasonable response |
|---|---|---|
| Works after traffic, dies when idle | Mapping or firewall state expiring | Lower the keepalive interval |
| Never works, even immediately | No return route, listener or firewall | Stop tuning keepalive |
| Works for hours, then dies once | Carrier-side translation or address change | Check the endpoint and logs together |
Egiaztatu entzulea eta suebakia bereizita
Mapatze bizia beharrezkoa da eta ez da nahikoa. Etxeko kutxako aplikazioak helbide egokian entzun behar du, eta ostalariaren suebakiak paketea deszifratu ondoren onartu behar du.
sudo ss -lntup | grep 8080
sudo wg show wg0 allowed-ips
curl -sS -m 5 http://10.71.0.2:8080/health
Socket-a interfaze fisikoaren helbidera soilik lotuta badago, tunelaren helbidera lotuta egon beharrean, tunelera iristen diren paketeak baztertu egiten dira suebakiari galdetu aurretik. Hutsegite horrek hodeiko aldetik mapatze-arazo baten itxura bera du, eta keepalive-aren doikuntza bakoitzari irauteko gai da.
Baimendutako zerrendaren egiaztapena beste norabidean ere berdintsu garrantzitsua da. Hodeiko parekideak etxeko tunelaren helbidea iturri gisa baimendu behar du erantzun nahi badu, eta etxeko parekideak hodeiko helbidea helmuga gisa baimendu behar du. Keepalive paketeak autentifikatutako trafikoa dira eta arau berberak aplikatzen dituzte, horregatik funtzionatzen duela dirudien keepalive batek funtzionatzen ez duen aplikazio batekin batera egon daiteke.
Atera aldaketa eta ezagutu bere mugak
Aplikatu ezarpena, berrabiarazi interfazea zure eguneratzeko modua bada, eta gero errepikatu inaktibitatearen proba, berehalako proba beharrean. Itxaron lehenago irakurri duzun itxaronaldia baino gehiago, egin alderantzizko eskaera bat eta baieztatu kontagailuak bi muturretan mugitu direla.
Idatzi tartea eta neurtu duzun itxaronaldia haren ondoan. Routerraren firmwarearen etorkizuneko aldaketak, edo konexio mugikor batera aldatzeak, itxaronaldia alda dezake. Oharra da norbaitek balioa berriro eratortzeko aukera ematen duena, kopiatu beharrean. Lerro bateko bi zenbakik ikerketa oso bat aurreztatzen dute geroago.
Keepalive iraunkorrek egoera babesten dute. Ez dute ataka bat irekitzen, ez dute baimendutako zerrendan sarrerarik gehitzen, eta ez dute entzulerik agerrarazten. Alderantzizko konexioak batere funtzionatzen ez duenean, hiru horietako bat da errua, eta WireGuard-en abio azkarrak keepalive ezarpena baldintza estu berberetan deskribatzen du.