Binubuksan ng kahon sa bahay ang lagusan at naaabot ang cloud server nang walang problema. Maaaring maabot ng cloud server ang aplikasyon sa bahay nang isa o dalawang minuto pagkatapos huling magpadala ng isang bagay ang kahon sa bahay, at pagkatapos ay tumitigil. Walang lumilitaw sa log ng WireGuard, walang iniuulat na error sa handshake, at pansamantalang inaayos ito ng pag-restart ng lagusan. Ang pattern na iyon ay isang mapping na nag-expire, hindi sirang lagusan, at kinukumpirma ito ng gabay sa ibaba bago baguhin ang anuman.

Kumpirmahin na ang pattern ay pag-expire kapag walang aktibidad

Ang natatanging detalye ay ang tiyempo. Kung gumagana ang pabaliktad na koneksyon kaagad pagkatapos magpadala ng trapiko ang kapares sa bahay at nabigo pagkatapos ng tahimik na pagitan, maayos ang landas at hindi ang estado sa gitna. Kung hindi ito kailanman gumana, kahit kaagad pagkatapos ng trapiko, maling diagnosis ito.

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

Patakbuhin ang unang dalawa kaagad pagkatapos magpadala ng isang bagay ang kapares sa bahay, maghintay ng limang minuto at patakbuhin muli. Ang timestamp ng handshake na nagre-refresh ayon sa iskedyul nang walang bagong endpoint ay nagsasabi sa iyo na buhay ang lagusan. Ang nagbago ay ang kakayahan ng mga paketeng hindi hinihingi na dumating mula sa labas, na katangian ng landas at hindi ng lagusan.

Pagkatapos ay gumawa ng pabaliktad na pagtatangka at panoorin ang mga counter ng paglilipat. Kung nagpapadala ng byte ang panig ng cloud at walang natatanggap ang panig ng bahay, umalis ang pakete sa cloud at namatay sa isang aparatong nag-iimbak ng estado sa daan. Iyon ang pirma na hinahanap mo. Kung gumagalaw ang dalawang counter, naihatid ng lagusan ang pakete at ang aplikasyon ang pinaghihinalaan.

Ilagay ang keepalive sa kapares sa likod ng router

Pinapanatiling buhay ng mga permanenteng keepalive ang mapping ng NAT at anumang estado ng firewall sa pamamagitan ng pagpapadala ng maliit na authenticated na pakete ayon sa iskedyul. Ang setting ay nabibilang sa makina sa likod ng router, sa entry nito para sa malayong kapares, dahil ang panig na iyon ang gumagawa ng estado sa pamamagitan ng palabas na pakete.

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

Isama ito sa umiiral na seksyon ng kapares. Ang pagdaragdag ng pangalawang bloke na may parehong pampublikong key ay hindi wastong paraan ng pagdaragdag ng mga opsyon, at hindi ito pagsasamahin ng wg-quick para sa iyo. Ang nakadokumentong 25 segundo ay isang halimbawang pinili upang manatili sa ilalim ng karaniwang mga timeout ng UDP, hindi isang value na may espesyal na kahulugan.

Ang paglalagay ng parehong direktiba sa panig ng cloud ay hindi nakakatulong sa problemang ito. Ang mga pakete ng kapares na iyon ay dumarating na mula sa pampublikong address, kaya walang mapping na dapat panatilihin sa direksyong mahalaga. Nagdaragdag ito ng trapiko at walang binabago.

Basahin ang mga timer sa halip na hulaan ang pagitan

Gumagana ang keepalive dahil dumarating sila nang mas madalas kaysa mag-expire ang estado. Ginagawa nitong numero na kailangan mo talaga ang timeout, at sa Linux mababasa ito sa device na gumagawa ng pagsasalin:

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

Ang unang value ay ang timeout para sa isang daloy ng UDP na nakita lamang sa isang direksyon, at ang pangalawa ay nalalapat kapag naobserbahan ang mga tugon. Karaniwang maikli ang dalawa, at ang mapping na tumahimik ay susunod sa nalalapat sa iyong daloy.

Ihambing ang numerong iyon sa iyong pagitan. Ang keepalive na 25 segundo sa ilalim ng timeout na 30 segundo ay gumagana; ang parehong keepalive sa ilalim ng timeout na 15 segundo ay hindi gumagana. Walang dami ng muling pagsubok ang nagbabago sa arithmetic na iyon. Ang ilang consumer router at mobile operator ay gumagamit ng mas maiikling value kaysa sa default ng Linux, kaya nabigo sa ibang network ang isang configuration na gumagana sa isa.

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

Suriin ang tagapakinig at ang firewall nang hiwalay

Ang buhay na mapping ay kailangan at hindi sapat. Ang aplikasyon sa kahon sa bahay ay dapat makinig sa tamang address, at ang firewall ng host ay dapat pumayag sa pakete pagkatapos ma-decrypt.

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

Kung ang socket ay nakatali lamang sa address ng pisikal na interface at hindi sa address ng lagusan, ang mga paketeng dumarating sa lagusan ay itinatapon bago pa tanungin ang firewall. Ang pagkabigong iyon mula sa panig ng cloud ay mukhang katulad ng problema sa mapping, at nakakaligtas ito sa bawat pagsasaayos ng keepalive.

Ang pagsusuri ng pinapayagang listahan ay kasinghalaga sa kabilang direksyon. Dapat payagan ng kapares sa cloud ang address ng lagusan ng bahay bilang pinagmulan kung sasagot ito, at dapat payagan ng kapares sa bahay ang address ng cloud bilang destinasyon. Ang mga pakete ng keepalive ay authenticated na trapiko at inilalapat ang parehong mga patakaran, kaya ang isang keepalive na mukhang gumagana ay maaaring mabuhay kasama ng aplikasyong hindi gumagana.

I-deploy ang pagbabago at alamin ang mga hangganan nito

Ilapat ang setting, i-restart ang interface kung iyon ang paraan ng pag-update mo, at pagkatapos ay ulitin ang pagsubok kapag walang aktibidad sa halip na ang agarang pagsubok. Maghintay nang mas mahaba kaysa sa timeout na nabasa mo kanina, gumawa ng pabaliktad na kahilingan at kumpirmahin na gumalaw ang mga counter sa magkabilang dulo.

Itala ang pagitan at ang sinukat na timeout sa tabi nito. Ang pagbabago sa firmware ng router sa hinaharap, o paglipat sa koneksyong mobile, ay maaaring magbago ng timeout. Ang tala ang nagbibigay-daan sa iba na muling makuha ang value sa halip na kopyahin ito. Dalawang numero sa isang linya ay nakakatipid ng buong imbestigasyon mamaya.

Pinoprotektahan ng mga permanenteng keepalive ang estado. Hindi sila nagbubukas ng port, hindi nagdaragdag ng entry sa pinapayagang listahan, at hindi nagpapakita ng tagapakinig. Kapag ang pabaliktad na koneksyon ay hindi gumagana nang buo, ang kasalanan ay isa sa tatlong iyon, at inilalarawan ng mabilis na pagsisimula ng WireGuard ang setting ng keepalive sa parehong makitid na mga termino.

Kaugnay na mga artikulo