Ar ISP blokuoja UDP, ar tai programa tunelio viduje?
ISP gali išmesti išorinį UDP transportą neperskaitęs užšifruotos vidinės antraštės. Atskirkite išorinį pristatymą, vidinį persiuntimą ir programos elgseną.
Kažkas praneša, kad VPN „blokuoja UDP“, ir ši frazė slepia du visiškai skirtingus teiginius. Vienas yra apie transportą, kurį mato prieigos tinklas, kitas – apie programos paketus po to, kai jie buvo iššifruoti tunelio viduje. Užšifruotą tunelį galima filtruoti iš išorės be jokio rakto, o vidinė UDP programa gali nepavykti dėl priežasčių, neturinčių nieko bendra su filtravimu. Nuspręskite, kurį teiginį tikrinate, prieš rinkdami įrodymus.
Dvi antraštės, vienas žodis
IPsec diegime su NAT-traversal išorinis paketas yra UDP, adresuotas tarp dviejų VPN galinių taškų, paprastai prievadu 4500. Jo viduje užšifruotas turinys neša viską, ką tunelis persiunčia, o tai pats gali būti TCP arba UDP. Taigi žodis UDP pasirodo du kartus, su skirtinga prasme ir skirtingu matomumu.
Tarpinis tinklas mato išorinę antraštę ir nieko iš vidinės. Jis gali leisti, formuoti arba išmesti išorinį srautą, ir tam nereikia nieko iššifruoti. Būtent ši asimetrija yra visa priežastis, kodėl du teiginiai painiojami: tas pats žodis aprašo ir tai, ką filtruoja tinklas, ir tai, ką siunčia programa. Užrašydami radinį visada šalia žodžio parašykite sluoksnį, ir painiava beveik išnyksta.
Vidinė antraštė tampa matoma tik priimančiame galiniame taške, po iššifravimo. Nuo to momento paketas persiunčiamas kaip bet kuris kitas, atsižvelgiant į maršrutus, politiką ir paties galinio taško filtravimą. Tai atskiri sprendimai, kuriuos priima skirtingi įrenginiai.
Ką tinklas vis dar gali matyti
Šifravimas slepia turinį ir vidinę transporto antraštę, o ne faktą, kad srautas egzistuoja. Galinių taškų adresai, prievadai, paketų dydžiai ir laikas lieka matomi, ir to pakanka srautui heuristiškai klasifikuoti arba blokuoti konkrečią paskirties vietą.
sudo tcpdump -ni eth0 'udp port 4500' sudo tcpdump -ni tun0 'udp port 5201'
Pirmasis įrašas rodo išorinį srautą fizinėje sąsajoje, o antrasis – vidinį srautą tunelio sąsajoje. Abiejų paleidimas vienu metu tiesiogiai atsako į klausimą: jei išorinis srautas egzistuoja, o vidinis ne, programa nieko nepasiuntė į tunelį. Jei egzistuoja abu ir niekas negrįžta, problema yra už tunelio, paskirties vietoje arba grįžimo kelyje.
RFC 3948 apibrėžia išorinį UDP įkapsuliavimą, o ESP specifikacija apibrėžia apsaugotą išdėstymą jo viduje. Nė vienas dokumentas nežada, kad prieigos tinklas praleis išorinį srautą, todėl prieš bet kokią vidinio srauto teoriją verta atlikti pasiekiamumo testą išorinei kortelei. Užblokuota išorinė kortelė sukuria tunelį, kuris niekada nesusidaro, o ne tunelį, kuris susidaro ir paskui praranda vieną programą.
Kodėl viena UDP programa nepavyksta veikiančiame tunelyje
Tunelis, kuris perduoda žiniatinklio programą, bet ne UDP programą, turi keletą tikėtinų paaiškinimų, ir ISP atliekamas vidinio protokolo filtravimas nėra pirmasis. Dažniausiai tai yra aprėptis: abi programos nepatenka į tą patį tunelį, nes trūksta maršruto į UDP paskirties vietą arba kliento padalinto tunelio taisyklės ją išskiria.
Antrasis yra galinis taškas. VPN serveris, leidžiantis protokolų sąrašą, paskirties vietos ugniasienė ar paslauga, kuri niekada neklauso laukiamame prievade, visi sukels laukimo laiką, kuris atrodo identiškai kaip tinklo blokavimas.
Trečiasis yra paketo dydis. UDP programos dažnai siunčia didesnius datagramus nei žiniatinklio užklausa, o įkapsuliavimas sumažina naudojamą MTU, todėl po sėkmingo rankos paspaudimo gali ateiti tyla pirmajame viso dydžio turinyje. Šį modelį lengva neteisingai perskaityti kaip blokavimą, nes maži paketai praeina, o dideli dingsta. Greitas MTU tyrimas tai išsprendžia per mažiau nei minutę, ir atsakymas paprastai būna mažesnis turinys arba pataisytas MSS, o ne tinklo filtras.
ping -M do -s 1400 -c 2 10.60.0.20 iperf3 -u -c 10.60.0.20 -p 5201 -b 1M -t 5
Pirmoji komanda tikrina, ar didelis paketas įveikia kelią su išjungtu fragmentavimu, o tai greitai atskleidžia MTU problemą. Antroji siunčia mažą, ribotą UDP srautą ir praneša apie nuostolius bei drebėjimą. Srautas, kuris prasideda ir paskui sustoja, rodo į dydį, o ne į blokavimą.
Praneškite apie sluoksnį, o ne protokolą
Užrašykite radinį viena iš trijų formų: išorinis pristatymas nepavyko, vidinis persiuntimas nepavyko arba programa nepavyko. Kiekvienas turi skirtingą savininką, o jų sumaišymas nusiunčia bilietą netinkamai komandai.
Vietinio prievado pakeitimas negali sukurti atitinkančio klausytojo kitame gale, todėl kliento pusės apėjimas, kuris atrodo padedantis, paprastai yra įrodymas, kad pradinė paskirties vieta buvo neteisinga. Taip pat pateiktas alternatyvus profilis įrodo kažką apie pasiekiamumą ir nieko apie tai, ar programa sukonfigūruota teisingai.
Laikykite išvadą atskirai nuo stebėjimo. Srauto analizė gali parodyti, kas yra srautas, jo neiššifravus, ir tai yra naudingas radinys, bet tai ne tas pats teiginys kaip vidinės antraštės skaitymas. Nurodykite, kurį iš jų iš tikrųjų turite.