WireGuard PersistentKeepalive: pidä NAT-kartoitus elossa
Jos käänteinen yhteys toimii vain heti sen jälkeen, kun vertainen lähettää liikennettä, kartoitus vanhenee. Aseta keepalive reitittimen taakse ja lue sitten todellinen aikakatkaisu.
Kotiboksi avaa tunnelin ja saavuttaa pilvipalvelimen ongelmitta. Pilvipalvelin voi tavoittaa kotisovelluksen minuutin tai kaksi sen jälkeen, kun kotiboksi viimeksi lähetti jotain, ja lopettaa sitten. WireGuardin lokiin ei ilmesty mitään, kättelyvirhettä ei raportoida, ja tunnelin uudelleenkäynnistys korjaa sen hetkeksi. Tämä kuvio on vanheneva kartoitus, ei rikkinäinen tunneli, ja alla oleva ohje vahvistaa sen ennen kuin mitään muutetaan.
Vahvista, että kuvio on joutoajan vanheneminen
Erottava yksityiskohta on ajoitus. Jos käänteinen yhteys toimii heti, kun kotivertainen lähettää liikennettä, ja epäonnistuu hiljaisen jakson jälkeen, polku on kunnossa eikä välissä oleva tila ole. Jos se ei koskaan toiminut, edes heti liikenteen jälkeen, diagnoosi on väärä.
sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer
Suorita kaksi ensimmäistä heti, kun kotivertainen lähettää jotain, odota viisi minuuttia ja suorita ne uudelleen. Kättelyn aikaleima, joka päivittyy aikataulun mukaan ilman uutta päätepistettä, kertoo, että tunneli on elossa. Mikä muuttui, on kyky vastaanottaa pyytämättömiä paketteja ulkopuolelta, mikä on polun eikä tunnelin ominaisuus.
Tee sitten käänteinen yritys ja seuraa siirtolaskureita. Jos pilvipuoli lähettää tavuja eikä kotipuoli vastaanota yhtään, paketti lähti pilvestä ja kuoli tilaa säilyttävässä laitteessa matkalla. Se on allekirjoitus, jota etsit. Jos molemmat laskurit liikkuvat, tunneli toimitti paketin ja epäilty on sovellus.
Aseta keepalive reitittimen takana olevalle vertaiselle
Pysyvät keepalivet pitävät NAT-kartoituksen ja mahdollisen palomuurin tilan elossa lähettämällä pienen todennetun paketin aikataulun mukaan. Asetus kuuluu reitittimen takana olevalle koneelle, sen merkintään etävertaiselle, koska se on se puoli, jonka lähtevä paketti luo tilan.
[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25
Yhdistä se olemassa olevaan vertaisosioon. Toisen lohkon lisääminen samalla julkisella avaimella ei ole kelvollinen tapa lisätä asetuksia, eikä wg-quick yhdistä niitä puolestasi. Dokumentoidut 25 sekuntia on esimerkki, joka on valittu olemaan tavallisten UDP-aikakatkaisujen alapuolella, ei erityismerkityksellinen arvo.
Saman direktiivin asettaminen pilvipuolelle ei auta tässä ongelmassa. Kyseisen vertaisen paketit saapuvat jo julkisesta osoitteesta, joten merkityksellisessä suunnassa ei ole säilytettävää kartoitusta. Se lisää liikennettä eikä muuta mitään.
Lue ajastimet sen sijaan, että arvaisit välin
Keepalivet toimivat, koska ne saapuvat useammin kuin tila vanhenee. Se tekee aikakatkaisusta luvun, jonka todella tarvitset, ja Linuxissa se on luettavissa laitteelta, joka tekee käännöksen:
sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820
Ensimmäinen arvo on aikakatkaisu UDP-virralle, joka on nähty vain yhteen suuntaan, ja toinen pätee, kun vastauksia on havaittu. Molemmat ovat yleensä lyhyitä, ja hiljenevä kartoitus seuraa sitä, mikä koskee virtaasi.
Vertaa tätä lukua väliisi. 25 sekunnin keepalive 30 sekunnin aikakatkaisulla toimii; sama keepalive 15 sekunnin aikakatkaisulla ei toimi. Mikään määrä uudelleenyrityksiä ei muuta tätä aritmetiikkaa. Jotkin kuluttajareitittimet ja mobiilioperaattorit käyttävät paljon lyhyempiä arvoja kuin Linuxin oletus, minkä vuoksi yhdessä verkossa toimiva kokoonpano epäonnistuu toisessa.
| 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 |
Tarkista kuuntelija ja palomuuri erikseen
Elävä kartoitus on välttämätön eikä riittävä. Kotiboksin sovelluksen on kuunneltava oikeassa osoitteessa, ja isäntäkoneen palomuurin on sallittava paketti salauksen purkamisen jälkeen.
sudo ss -lntup | grep 8080
sudo wg show wg0 allowed-ips
curl -sS -m 5 http://10.71.0.2:8080/health
Jos pistoke on sidottu vain fyysisen liitännän osoitteeseen eikä tunnelin osoitteeseen, tunnelilla saapuvat paketit hylätään ennen kuin palomuurilta edes kysytään. Tämä vika näyttää pilvipuolelta täsmälleen kartoitusongelmalta ja kestää jokaisen keepalive-säädön.
Sallittujen luettelon tarkistus on yhtä tärkeä toisessa suunnassa. Pilvivertaisen on sallittava kodin tunneliosoite lähteenä, jos se aikoo vastata, ja kotivertaisen on sallittava pilviosoite kohteena. Keepalive-paketit ovat todennettua liikennettä ja noudattavat samoja sääntöjä, minkä vuoksi toimivalta näyttävä keepalive voi esiintyä samaan aikaan sovelluksen kanssa, joka ei toimi.
Ota muutos käyttöön ja tunne sen rajat
Ota asetus käyttöön, käynnistä liitäntä uudelleen, jos se on päivitystapasi, ja toista sitten joutoaikatesti välittömän testin sijaan. Odota kauemmin kuin aiemmin lukemasi aikakatkaisu, tee käänteinen pyyntö ja vahvista, että laskurit liikkuivat molemmissa päissä.
Kirjaa väli ja mitattu aikakatkaisu sen viereen. Tuleva muutos reitittimen laiteohjelmistoon tai siirtyminen mobiiliyhteyteen voi muuttaa aikakatkaisua. Muistiinpano on se, mikä antaa jonkun johtaa arvon uudelleen sen kopioimisen sijaan. Kaksi numeroa rivillä säästää myöhemmin kokonaisen tutkimuksen.
Pysyvät keepalivet suojaavat tilaa. Ne eivät avaa porttia, ne eivät lisää merkintää sallittujen luetteloon eivätkä saa kuuntelijaa ilmestymään. Kun käänteinen yhteys ei toimi lainkaan, vika on yksi noista kolmesta, ja WireGuardin pikaopas kuvaa keepalive-asetuksen samoilla kapeilla ehdoilla.