Rankos paspaudimas baigiamas, klientas rodo naują perdavimo skaitiklį, o užklausa paslaugai tame pačiame serveryje vis tiek nepavyksta. Šis derinys klaidina žmones, nes tunelis akivaizdžiai veikia. Neįrodyta yra vietinis pristatymas: paketas pasiekė mazgą, ir mazgas vis dar turi jį priimti tinkamame lizde ir perduoti procesui, turinčiam teisę atsakyti. Peržiūrėkite šiuos tris kontrolės punktus iš eilės.

Sustokite ties pirmuoju, kuris netenkinamas, ir nepridėkite taisyklių kitiems.

Rankos paspaudimas įrodo tik tunelį

WireGuard rankos paspaudimas nustato raktus tarp partnerių ir leidžia srautą tų diapazonų, kuriuos kiekvienas partneris išvardijo. Jis nieko nesako apie tai, kokie procesai klausosi serveryje, ir nieko apie tai, ar mazgo ugniasienė priima paketus, adresuotus vienam iš jo paties adresų.

Būtent pastarasis skirtumas dažniausiai praleidžiamas: srautas į patį mazgą yra vietinė įvestis, o srautas, einantis per mazgą kitur, yra persiuntimas. Juos tvarko skirtingos ugniasienės grandinės ir skirtingi nustatymai. Tikrinti netinkamą grandinę kainuoja popietę ir grąžina skaitiklius, kurie atrodo nekaltais.

Skaitykite klausytoją ir maršrutą

Kliente patvirtinkite, kad serverio tunelio adresas maršrutizuojamas į tunelį. Serveryje patvirtinkite, kad lizdas egzistuoja adresu, kurį naudoja klientas, ir kad procesas už jo yra numatytasis.

wg show
ip route get 10.66.0.1
ss -lntup | grep -E ':80|:443'
nft list ruleset | grep -A6 'chain input'
curl -vk --max-time 5 https://10.66.0.1/

Klausytojas adresu 127.0.0.1 niekada neatsakys į užklausą, adresuotą 10.66.0.1, kad ir ką leistų ugniasienė. Klausytojas bendruoju adresu atsakys, nebent taisyklė jį blokuotų. Taigi lizdų sąrašas išsprendžia pusę atvejų prieš tikrinant bet kurią taisyklę. Prievadas ir adresas kartu nulemia, ar užklausa gali pasiekti tikslą.

Palyginkite adresą, kurį naudoja klientas, su adresu, kurį serveris iš tikrųjų turi tunelio sąsajoje. Pasenusi konfigūracija bet kurioje pusėje sukuria užklausą, teisingai maršrutizuotą į partnerį, kuris tokio adreso neturi.

Taikykite taisykles vietinei įvesčiai, o ne persiuntimui

Jei paketas atėjo ir lizdas egzistuoja, likusi riba yra įvesties politika. Taisyklė, leidžianti persiuntimą, neleidžia vietinio pristatymo, o taisyklė, apribota vienai sąsajai, gali neatitikti laukiamo tunelio sąsajos pavadinimo.

Išbandykite vienu leidžiamu prievadu į numatytą paslaugą, o ne atidarydami mazgą. Tada patikrinkite pačios programos autorizaciją: leidžiamų sąrašas, paskyros reikalavimas ar prisiejimas prie konkretaus mazgo vardo gali atmesti užklausą, kurią tinklas sėkmingai pristatė.

Palikite sertifikatų patikras vietoje. Netikėta sertifikato tapatybė yra informacija apie tai, kuris mazgas atsakė, o ne kliūtis, kurią reikia apeiti. Paspaudus pro ją paslepiamas vienintelis požymis, nurodantis netinkamą paslaugą.

Atskirkite vardo, dydžio ir tapatybės gedimus

Paslauga, kuri veikia pagal adresą, bet nepavyksta pagal vardą, yra DNS problema, o pataisymas priklauso klientui siunčiamai resolverio konfigūracijai, ne ugniasienei. Paslauga, kuri atsako į mažas užklausas, bet užstringa ties didesniais atsakymais, rodo paketo dydį ir MTU, o tai visai kitas tyrimas.

HTTPS klaida, nurodanti netinkamą mazgą, paprastai reiškia, kad užklausa pasiekė kitą paslaugą, dažnai todėl, kad tą prievadą valdo tarpinis serveris ar kitas klausytojas. Perskaitykite sertifikato subjektą ir palyginkite su mazgu, į kurį norėjote patekti. Šis palyginimas nieko nekainuoja ir dažnai užbaigia tyrimą.

Užsirašykite, kuris kontrolės punktas nepavyko: lizdas, įvesties taisyklė ar programos politika. Ta viena eilutė atskiria tinklo gedimą nuo autorizacijos sprendimo. Ji taip pat neleidžia kitam žmogui atidaryti prievadų, kurie niekada nebuvo problema.

Susiję straipsniai