OpenVPN prisijungia, bet niekas neplaukia: raskite sluoksnį, kuriame paketas krinta
Prisijungtas tunelis be srauto turi bent penkias priežastis. Įrodykite klausytoją, užfiksuokite išorinį paketą, o tada tegul skaitikliai arba pėdsakas įvardija taisyklę.
OpenVPN sako prisijungęs, o srautas nejuda, sakinys, apimantis bent penkias nesusijusias problemas. Ugniasienės taisyklių redagavimas prieš žinant, kuris sluoksnis žlunga, padaugina nežinomuosius ir palieka kitam inžinieriui netvarką. Dirbkite vietoj to nuo proceso į išorę, nes kiekvienas žingsnis žemiau arba išvalo vieną etapą, arba susiaurina vietą, kur paketas miršta. Tvarka čia svarbi: įrašas, padarytas prieš žinant, kuris adresas susietas, kai ką įrodys, tik ne tai, ko jums reikia.
Lizdas yra arba susietas, arba ne
Tarnyba, pranešanti apie aktyvumą, vis dar gali būti susieta su adresu ar transportu, kurio niekada neketinote. Klauskite paties lizdo: ss -lunp išvardija UDP klausytojus, o ss -ltnp TCP, ir skaityti vertas stulpelis yra vietinis adresas, o ne būsena.
Tuščias atsakymas paprastai reiškia vieną iš trijų: procesas baigė po paleidimo, įkėlė kitą konfigūracijos failą arba klausosi kito adreso nei tas, į kurį skambinama.
ss -lunp | grep 1194
ss -ltnp | grep 1194
local direktyva pritvirtina klausytoją prie vieno adreso, todėl klientas, nukreiptas kitur tame pačiame kompiuteryje, atmetamas, o tarnyba iš išorės vis dar atrodo sveika. Egzemplioriaus pavadinimas taip pat gali rodyti į failą, kurio niekada neredagavote, o tai nutinka kompiuteriuose, kuriuose veikia du profiliai greta.
Užfiksuokite išorinį paketą, o ne tunelį
Filtruokite fiziniame sąsajos lygmenyje ir tikrame prievade, pakeitę savo sąsają: tcpdump -ni eth0 udp port 1194. Išeinantys paketai, į kuriuos niekas negrįžta, rodo į tai, kas yra aukščiau: teikėjo filtravimas, NAT įrenginys arba tolimas adresas, kuris nėra tas, kurį manote. Tyla abiem kryptimis rodo kliento maršrutizavimą arba vietinę ugniasienę. Atsakymai, atvykstantys be tunelio pažangos, rodo valdymo kanalą, tai yra rakto ar šifro neatitikimą, o ne filtravimą.
Užfiksuokite abi kryptis ir laikykite failą trumpą. Ilgas įrašas užkasa įdomias tris sekundes, o atsakymas beveik visada yra pirmame apsikeitime.
Pirmiausia skaitikliai, pėdsakas tik kai jie meluoja
Pradėkite nuo skaitiklių, nes jie nieko nekainuoja. Arba nft list ruleset, arba iptables -L -n -v atsako į vienintelį čia svarbų klausimą: ar taisyklė sutapo? Tvarka nulemia rezultatą, nes pirmas sutapimas laimi, todėl platus DROP prieš vėlesnį ACCEPT palieka tą ACCEPT negyvą ir todėl taisyklės pridėjimas taip retai ką nors pataiso.
Nuosavybė taip pat suklupdo žmones. Branduolys vietoje sukurtus paketus priskiria procesui, kuris atidarė lizdą, o OpenVPN paprastai veikia kaip root, todėl taisyklė, susieta su įprastu vartotojo ID, niekada nemato paties tunelio srauto. Patikrinkite savininko UID prieš nuspręsdami, kad taisyklė neteisinga.
Tik kai skaitikliai lieka dviprasmiški, žurnalas vertas triukšmo, ir tada tik siauram ruožui: iptables taisyklė, kuri riboja greitį ir prideda priešdėlį savo žurnalo eilutėms, arba nftables taisyklė su meta nftrace set 1, kai veikia nft monitor trace. Pėdsakas įvardija grandinę ir taisyklę, kuri priėmė arba numetė paketą. Po to pašalinkite abi ir laikykite naudingosios apkrovos žurnalą atskirai.
Patikrinkite ir transportą. Ugniasienės tarnyba, apribota TCP, nieko nesako apie UDP klausytoją tuo numeriu, todėl teisingai perskaityta taisyklė vis tiek gali numesti kiekvieną paketą.
Maršrutizavimas ir kelias atgal
Priimtas paketas, kuris vis tiek dingsta, reikalauja ištirti jo tikslo kelią. ip route get praneša vienam adresui pasirinktą maršrutą, o atvirkštinio kelio filtravimas gali numesti atsakymą, atvykstantį per sąsają, kurios pagrindinė lentelė niekada nepasirinktų. Simptomas atrodo lygiai kaip ugniasienės numetimas, todėl šis patikrinimas ateina prieš dar vieną NAT taisyklę.
Šliuze patikrinkite persiuntimą ir forward grandinę, o ne input grandinę. Tada patvirtinkite, kad tolimoji pusė žino, kaip pasiekti šaltinio adresą, nes veikiantis išėjimo kelias be nieko, kas grįžta, yra tyla abiem atvejais.
Ką turi pasakyti įrašas
Kiekvienam pakeitimui užrašykite išbandytą etapą, perskaitytą įrodymą ir skaitiklio reikšmę abiejose jo pusėse. Būtent šis užrašas daro "dabar veikia" išgyvenamą kitos peržiūros metu.
Du trumpiniai išlaiko užrašą sąžiningą. Paketas, kuris niekada nepaliko kompiuterio, negalėjo būti numestas taisyklės kitur, kad ir kaip įtikinamai atrodytų tolimosios pusės konfigūracija. Paketas, kuris išėjo ir grįžo, perkelia klausimą virš tinklo sluoksnio, kur ugniasienės skaitikliai jau neturi ką pasakyti.