WireGuard PersistentKeepalive: hâld de NAT-mapping libben
As de omkearde ferbining allinnich fuortendaliks nei it stjoeren fan ferkear troch de peer wurket, ferfalt de mapping. Set keepalive efter de router en lês dan de echte tiidling.
De thúsbak iepenet de tunnel en berikt de wolkstsjinner sûnder swierrichheden. De wolkstsjinner kin de thúsapplikaasje in minút as twa berikke neidat de thúsbak foar it lêst wat stjoerd hat, en hâldt dan op. Der ferskynt neat yn it WireGuard-logboek, der wurdt gjin handshake-flater rapporteare, en it opnij starten fan de tunnel ferhelpt it even. Dat patroan is in mapping dy’t ferfalt, gjin stikken tunnel, en de hantlieding hjirûnder befêstiget dat foardat der wat feroaret.
Befêstigje dat it patroan ferfalle by stilte is
It ûnderskiedende detail is de timing. As de omkearde ferbining fuortendaliks wurket neidat de thúspeer ferkear stjoerd hat en nei in stil skof mislearret, is it paad goed en de steat yn ’e midden net. As it nea wurke hat, sels fuortendaliks nei ferkear, is dat de ferkearde diagnoaze.
sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer
Fier de earste twa fuortendaliks út neidat de thúspeer wat stjoerd hat, wachtsje fiif minuten en fier se opnij út. In handshake-tiidstimpel dy’t neffens it skema fernijt sûnder nij einpunt fertelt dy dat de tunnel libbet. Wat feroare is, is it fermogen fan net-frege pakketten om fan bûten te kommen, wat in eigenskip fan it paad is, net fan ’e tunnel.
Dwaan dan in omkearde poging en sjoch nei de oerdrachtstellers. As de wolkkant bytes stjoert en de thúskant gjinien ûntfangt, hat it pakket de wolk ferlitten en is it ûnderweis stoarn yn in apparaat dat steat hâldt. Dat is de sinjatoer dêr’tsto nei siket. As beide tellers bewege, hat de tunnel it pakket levere en is de applikaasje de fertochte.
Set de keepalive op ’e peer efter de router
Oanhâldende keepalives hâlde in NAT-mapping en eltse firewall-steat libben troch neffens in skema in lyts autentisearre pakket te stjoeren. De ynstelling heart op ’e masine efter de router, yn har ynfier foar de fiere peer, want dat is de kant waans útgeande pakket de steat makket.
[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25
Foegje it gear mei de besteande peerseksje. In twadde blok tafoegje mei deselde publike kaai is gjin jildige manier om opsjes ta te foegjen, en wg-quick sil se net foar dy gearfoegje. De dokumintearre 25 sekonden binne in foarbyld dat keazen is om ûnder gewoane UDP-tiidlingen te bliuwen, gjin wearde mei in bysûndere betsjutting.
Deselde rjochtline op ’e wolkkant sette helpt dit probleem net. De pakketten fan dy peer komme al fan in iepenbier adres, dus der is gjin mapping om te bewarjen yn ’e rjochting dy’t ta docht. It foeget ferkear ta en feroaret neat.
Lês de timers ynstee fan in skof te rieden
Keepalives wurkje om’t se faker komme as de steat ferfalt. Dat makket de tiidling it getal datsto echt nedich hast, en op Linux is it lêsber op it apparaat dat de oersetting docht:
sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820
De earste wearde is de tiidling foar in UDP-stream dy’t mar yn ien rjochting sjoen is, en de twadde jildt as antwurden waarnommen binne. Beide binne meastal koart, en in mapping dy’t stil wurdt sil folgje wat op dyn stream fan tapassing is.
Fergelykje dat getal mei dyn skof. In keepalive fan 25 sekonden ûnder in tiidling fan 30 sekonden wurket; deselde keepalive ûnder in tiidling fan 15 sekonden wurket net. Gjin hoemannichte opnij besykjen feroaret dy rekkenjen. Guon konsuminterouters en mobyloperators brûke folle koartere wearden as de Linux-standert, dêrom mislearret in konfiguraasje dy’t op it iene netwurk wurket op it oare.
| 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 |
Kontrolearje de harker en de firewall apart
In libbene mapping is nedich en net genôch. De applikaasje op ’e thúsbak moat op it goede adres harksje, en de host-firewall moat it pakket talitte neidat it ûntsifere is.
sudo ss -lntup | grep 8080
sudo wg show wg0 allowed-ips
curl -sS -m 5 http://10.71.0.2:8080/health
As de socket allinnich oan it adres fan ’e fysike ynterface bûn is en net oan it tunneladres, wurde pakketten dy’t op ’e tunnel oankomme weilitten foardat de firewall sels frege wurdt. Dy flater liket fan ’e wolkkant identyk op in mappingprobleem, en it oerlibbet eltse keepalive-oanpassing.
De kontrôle fan ’e tastiene list is like wichtich yn ’e oare rjochting. De wolkpeer moat it thústunneladres as boarne talitte as er antwurdzje sil, en de thúspeer moat it wolkadres as bestimming talitte. Keepalive-pakketten binne autentisearre ferkear en se brûke deselde regels, dêrom kin in keepalive dy’t wurket gearlibje mei in applikaasje dy’t dat net docht.
Rol de feroaring út en kenne har grinzen
Pas de ynstelling ta, start de ynterface opnij as dat dyn fernijingsmetoade is, en werhelje dan de stiltetest ynstee fan ’e fuortendaliks test. Wachtsje langer as de tiidling dy’tsto earder lêzen hast, doch in omkeard fersyk en befêstigje dat de tellers oan beide kanten beweegd hawwe.
Skriuw de skof en de metten tiidling derneist op. In takomstige feroaring oan ’e firmware fan ’e router, of in oerstap nei in mobyle ferbining, kin de tiidling feroarje. De notysje is wat immen helpt de wearde opnij ôf te lieden ynstee fan te kopiearjen. Twa getallen op ien rigel besparje letter in hiel ûndersyk.
Oanhâldende keepalives beskermje steat. Se iepenje gjin poarte, se foegje gjin ynfier ta oan ’e tastiene list, en se litte gjin harker ferskine. As de omkearde ferbining hielendal net wurket, is de skuld ien fan dy trije, en de WireGuard-fluchstart beskriuwt de keepalive-ynstelling yn deselde nauwe termen.