Skenuoklės UDP prievadui išveda atidaryta arba filtruota, o išvada paprastai ateina per kelias sekundes: tunelis sugedęs. Galbūt taip ir yra, bet skenavimas to neįrodė. UDP neperduoda jokio ryšio rankos paspaudimo, o WireGuard neatsako į nieką, ko negali autentifikuoti, todėl tyla yra laukiamas atsakymas į daugumą zondų.

Dirbkite atvirkščiai – nuo kliento į išorę, o skenavimą laikykite vienu silpnu duomenų tašku tarp kelių.

Ką skenuoklė gali matyti, o ko ne

UDP skenuoklė siunčia naudingąją apkrovą ir laukia. Jei grįžta ICMP port-unreachable, ji gali pranešti, kad prievadas uždarytas. Jei nieko negrįžta, rezultatas pagal konstrukciją yra dviprasmis: filtruotas kelias, nesančioji šeimininkė ir veikianti paslauga, kuri nepaisė apkrovos, sukuria tą pačią tylą. Trys skirtingos būsenos, viena išvesties eilutė.

WireGuard sąmoningai dar labiau apsunkina tą dviprasmiškumą. Protokolas priima paketą tik tada, kai jis autentifikuojamas, todėl zondas su netinkamais raktais atmetamas be atsakymo. Nėra jokio reklaminio skydelio, versijos eilutės ar klaidos pranešimo, kuriuos būtų galima atpažinti.

TCP testas tuo pačiu prievado numeriu netikrina nieko susijusio. Jis apkrauna kitą klausytoją, kurio gali ir nebūti, o jo atsisakymas nieko nesako apie UDP.

Taigi atviros filtruotos būsenos tiksliau apibūdina skenuoklės neapibrėžtumą nei jūsų serverį.

Pereikite tikrąjį klientą nuo profilio į vidų

Pradėkite nuo paties kliento požiūrio. Ar sąsaja turi adresą, ar konfigūracija nurodo teisingą galinį tašką ir ar rankos paspaudimo skaitiklis juda, kai bandoma prisijungti? Klientas, kuris niekada nesiuntė paketo, ir klientas, kurio paketai buvo atmesti, būsenos lange atrodo vienodai. Juos skiria tik skaitikliai, todėl pirmiausia skaitykite skaitiklius.

Tada stebėkite serverio pusę vieno leisto bandymo metu, o ne vykdykite atskirą skenavimą iš trečios vietos:

wg show wg0 latest-handshakes
tcpdump -n -i eth0 udp port 51820 -c 10

Pirmoji komanda praneša paskutinį rankos paspaudimą kiekvienam partneriui, ir tai yra tiesioginis įrodymas, kad autentifikuotas apsikeitimas baigtas. Antroji rodo, ar paketai klausytojui apskritai atvyksta, o tai vienu žingsniu atskiria kelio problemą nuo konfigūracijos problemos.

Jei įrašas nieko nerodo, paketas niekada nepasiekė šeimininkės ir tunelio konfigūracija nėra įtariamoji. Jei jis rodo atvykstančius paketus iš laukiamo adreso, o rankos paspaudimas lieka nulyje, kitur reikia žiūrėti į raktus arba partnerio leidžiamus adresus.

Koreliuokite serveryje, kai jį administruojate

Patvirtinkite, kad klausytojas egzistuoja ir kad tiekėjo užkarda leidžia UDP prievadą. Šeimininkės užkardos taisyklė ir debesijos saugumo grupė yra du nepriklausomi vartai, ir kiekvieni jų gali atmesti paketą, kurį kiti praleido. Tikrinkite abu pagal tikrąjį prievadą konfigūracijoje, o ne pagal prievadą, kurį prisimenate.

Adresas toks pat svarbus kaip prievadas. Serveris, klausantis konkretaus adreso, neatsakys į paketą, atvykusį kitu adresu, o šeimininkė su keliomis sąsajomis gali gauti zondą sąsaja, kurios nenorėjote.

Laikykite kiekvieną testą sistemose, kurias turite teisę testuoti. Naudingas palyginimas yra tarp vieno tikro kliento bandymo ir laukiamo serverio kelio, o ne platesnis adresų, kurie atsitiktinai priklauso tam pačiam tiekėjui, peržiūrėjimas.

Sąžiningas skenavimo rezultato skaitymas

Skenavimas yra pigus būdas patikrinti, ar šeimininkė egzistuoja ir ar prievado akivaizdžiai neblokuoja tarpinis įrenginys. Tai nėra autentifikuoto protokolo pasiekiamumo įrodymas ir tikrai ne konfigūracijos testas.

Stipresnis įrodymas yra užbaigtas rankos paspaudimas su klientu, kuris jums tikrai rūpi, o po jo – užklausa, kuri naudoja tunelį ir gauna atsakymą. Ši seka vienu metu apkrauna raktus, leidžiamus adresus, abi užkardas ir grįžimo kelią.

Kai tikrasis bandymas nepavyksta, gedimą vis tiek reikia diagnozuoti pagal kliento skaitiklius ir serverio įrašą, o ne pagal dar vieną zondą. Protokolo aprašymas paaiškina, kodėl neautentifikuotas paketas negauna atsakymo, ir tai yra visa priežastis, kodėl skenavimo rezultatas dviprasmis.

Susiję straipsniai