WireGuard siunčia duomenis, bet nieko negauna atgal: kuri pusė?
Augantis siuntimo skaitiklis yra kryptis, ne diagnozė. Nuspręskite, ar užklausa niekada nepaliko tunelio, ar atsakymas niekada negrįžo, prieš ką nors keisdami.
Siuntimo skaitikliai, kurie auga, kol priėmimo skaitiklis lieka ties nuliu, apibūdina kryptį, o ne diagnozę. Tas pats rodmuo atsiranda, kai partneris niekada nebaigė rankos paspaudimo, kai paskirties vieta pasirinko netinkamą partnerį, kai tolimoji pusė neturi grįžimo maršruto ir kai filtras numeta atsakymą kelyje namo. Kiekvienas iš jų taisomas kitoje vietoje.
Palyginimas, kuris sutrumpina darbą, yra tarp užklausos, kuri niekada nepaliko tunelio, ir atsakymo, kuris niekada negrįžo. Vienas įrašas tinkamoje sąsajoje nusprendžia tarp jų.
Skaitikliai apibūdina apimtį, o ne gedimo kryptį
„WireGuard“ skaitikliai fiksuoja, ką sąsaja perdavė partneriui ir ką iš jo gavo. Jie nesako, kuri paskirties vieta, kuris partneris ar kuri mainų pusė nepavyko. Foninis srautas bendras sumas daro mažiau informatyvias, nes kai kurie baitai gali būti ryšio palaikymo pranešimai arba nesusiję srautai. Skaitykite juos kaip ženklą, kad sąsaja aktyvi, o tada nustokite juos laikyti įrodymu.
Pirmas naudingas faktas yra tai, ar rankos paspaudimas yra naujas. Be jo šiam partneriui nieko nebuvo užšifruota ir priėmimo skaitiklis neturi priežasties judėti.
Partnerio pasirinkimas ar atsakymo kelias: du paaiškinimai
Pirmas paaiškinimas – paketas niekada nepasiekė numatyto partnerio, nes maršrutas rodė kitur arba partnerio leidžiami priešdėliai neapėmė paskirties vietos. Antras – paketas atvyko, bet atsakymas negalėjo grįžti, o tai yra maršrutizavimo problema tolimajame gale. Lentelė juos atskiria pagal tai, ką pastebėtumėte kiekviename taške.
| Observation | Points to |
|---|---|
| No handshake while transmit climbs | Peer selection or endpoint |
| Handshake current, request visible on the server | Reply path or far-side route |
| Request never visible on the server | Allowed prefixes or local route |
| Both packets visible, nothing reaches the client | Return filter or translation |
Skaitykite lentelę iš viršaus. Trūkstamas rankos paspaudimas nukreipia jus į raktus, galinius taškus ir išorinį kelią, nes kol kas nėra ko daugiau tirti. Naujas rankos paspaudimas, kai užklausa matoma serveryje, perkelia problemą į grįžimo kryptį, kur sprendžia pačios paskirties vietos maršrutų lentelė. Užklausa, kuri niekada nepasireiškia serveryje, yra pasirinkimo problema, o abiejų partnerių leidžiami priešdėliai yra pirmas dalykas, kurį reikia palyginti.
Dvi iš šių keturių eilučių taisomos kliente, o dvi – serveryje. Žinojimas, kurioje poroje esate, yra didžioji darbo dalis.
Kur dingsta atsakymai
Atsakymas palieka paskirties vietą, pasiekia serverio tunelio sąsają ir užšifruojamas tam partneriui, kurio leidžiami adresai atitinka vidinį kliento adresą. Jei šis atitikimas nepavyksta, atsakymas tyliai atmetamas, o tai iš kliento pusės atrodo lygiai kaip tinklo gedimas. Jei atsakymas užšifruotas, o paties kliento filtras jį atmeta, simptomas vėl toks pat. Abiem atvejais reikia įrašo, o ne skaitiklio.
Stipriausia šios klaidos forma yra serveris, kuris persiunčia paketus klientui, bet neturi grįžimo maršruto į kliento vidinį diapazoną. Jis priima užklausą, siunčia atsakymą savo numatytajam šliuzui, o tunelis jo niekada nemato. Serveryje pridėta plati vertimo taisyklė paslepia šį gedimą, o ne sutaiso maršrutą.
Išbandykite vieną paskirties vietą nuo pradžios iki galo
Pasirinkite vieną paskirties vietą partnerio diapazone ir išbandykite ją, kol rankos paspaudimas akivaizdžiai naujas. Toliau pateiktos komandos nuskaito partnerio būseną, pasirinktą maršrutą ir abi mainų puses. Vykdykite įrašą sąsajoje, kurią užšifruoti paketai iš tikrųjų naudoja.
wg show wg0 latest-handshakes
wg show wg0 transfer
ip route get 10.60.9.5
sudo tcpdump -ni wg0 host 10.60.9.5
Įrašas, kuriame užklausa matoma tunelio sąsajoje, o nieko negrįžta, yra atsakymas iš serverio pusės, ir paskirties vietos maršrutų lentelė yra kita vieta, į kurią reikia pažiūrėti. Jei visai nieko nepasireiškia, paketas nuėjo kitu keliu, todėl įtartinas yra vietinis maršrutas. Mainai, matomi abiejuose įrašuose, bet be pažangos programoje, perkelia klausimą į paketo dydį arba į filtrą, kurio sąsajos statistika niekada nerodo. Laikykite vieną paskirties vietą ir vieną klientą, nes antrasis kintamasis įrodymą vėl paverčia įspūdžiu.
Jei vardai nepavyksta, o leidžiamas adresas veikia, atsakymas yra DNS, o ne tunelyje. Jei stringa tik dideli perdavimai, paketo dydį tirkite atskirai.