OpenVPN sa pripojí, ale nič netečie: nájdite vrstvu, kde paket padá
Pripojený tunel bez prevádzky má najmenej päť príčin. Dokážte naslúchajúci socket, zachyťte vonkajší paket a potom nechajte počítadlá alebo stopu pomenovať pravidlo.
OpenVPN hlási pripojené a prevádzka sa nehýbe, veta, ktorá pokrýva najmenej päť nesúvisiacich porúch. Úprava pravidiel firewallu skôr, než viete, ktorá vrstva zlyháva, znásobuje neznáme a necháva ďalšiemu inžinierovi chaos. Pracujte namiesto toho od procesu von, pretože každý krok nižšie buď vyčistí jednu fázu, alebo zúži miesto, kde paket umiera. Poradie je tu dôležité: odchyt urobený skôr, než viete, ktorá adresa je viazaná, niečo dokáže, len nie to, čo potrebujete.
Socket je buď viazaný, alebo nie
Služba hlásiaca aktivitu môže byť stále viazaná na adresu alebo transport, ktorý ste nezamýšľali. Opýtajte sa samotného socketu: ss -lunp vypisuje UDP poslucháče a ss -ltnp TCP, a stĺpec, ktorý stojí za prečítanie, je miestna adresa, nie stav.
Prázdna odpoveď zvyčajne znamená jedno z troch: proces po štarte skončil, načítal iný konfiguračný súbor, alebo počúva na inej adrese, než na ktorú sa vytáča.
ss -lunp | grep 1194
ss -ltnp | grep 1194
Direktíva local pripína poslucháč k jednej adrese, takže klient mieriaci inam na tom istom hostiteľovi je odmietnutý, zatiaľ čo služba zvonku stále vyzerá zdravo. Názov inštancie tiež môže ukazovať na súbor, ktorý ste nikdy needitovali, čo sa stáva na hostiteľoch s dvoma profilmi vedľa seba.
Zachyťte vonkajší paket, nie tunel
Filtrujte na fyzickom rozhraní a skutočnom porte, s dosadeným vlastným rozhraním: tcpdump -ni eth0 udp port 1194. Odchádzajúce pakety, na ktoré sa nič nevracia, ukazujú na to, čo je vyššie: filtrovanie poskytovateľa, zariadenie NAT alebo vzdialenú adresu, ktorá nie je tá, ktorú si myslíte. Ticho v oboch smeroch ukazuje na smerovanie klienta alebo miestny firewall. Odpovede, ktoré dorazia bez pokroku tunela, ukazujú na riadiaci kanál, teda nezhodu kľúča alebo šifry, nie na filtrovanie.
Zachyťte oba smery a držte súbor krátky. Dlhý odchyt pochová zaujímavé tri sekundy a odpoveď takmer vždy leží v prvej výmene.
Najprv počítadlá, stopa len keď klamú
Začnite počítadlami, pretože nič nestoja. Buď nft list ruleset, alebo iptables -L -n -v odpovedá na jedinú otázku, ktorá tu má význam: zhodovalo sa pravidlo? Poradie rozhoduje výsledok, pretože prvá zhoda vyhráva, preto široký DROP pred neskorším ACCEPT necháva ten ACCEPT mŕtvy a preto pridanie pravidla tak zriedka niečo opraví.
Vlastníctvo tiež mätie ľudí. Jadro priraďuje lokálne vytvorené pakety procesu, ktorý otvoril socket, a OpenVPN zvyčajne beží ako root, takže pravidlo naviazané na bežné používateľské ID nikdy nevidí prevádzku samotného tunela. Skontrolujte UID vlastníka, než rozhodnete, že pravidlo je nesprávne.
Len keď počítadlá zostávajú nejednoznačné, stojí log za hluk, a to iba pre úzky rez: pravidlo iptables, ktoré obmedzuje rýchlosť a pridáva prefix svojim riadkom, alebo pravidlo nftables s meta nftrace set 1 pri bežiacom nft monitor trace. Stopa pomenuje reťaz a pravidlo, ktoré paket prijalo alebo zahodilo. Potom obe odstráňte a protokolovanie obsahu držte mimo.
Skontrolujte aj transport. Služba firewallu obmedzená na TCP nehovorí nič o UDP poslucháčovi na tom čísle, takže pravidlo, ktoré vyzerá správne, môže stále zahodiť každý paket.
Smerovanie a cesta späť
Prijatý paket, ktorý napriek tomu mizne, vyžaduje preskúmanie cesty k cieľu. ip route get hlási trasu zvolenú pre jednu adresu a filtrovanie spätnej cesty môže zahodiť odpoveď, ktorá dorazí cez rozhranie, ktoré by hlavná tabuľka nikdy nezvolila. Príznak vyzerá presne ako zahodenie firewallom, preto táto kontrola prichádza pred ďalším pravidlom NAT.
Na bráne skontrolujte preposielanie a reťaz forward, nie reťaz input. Potom potvrďte, že vzdialená strana vie, ako dosiahnuť zdrojovú adresu, pretože funkčná odchádzajúca cesta bez ničoho vracajúceho sa je v oboch prípadoch ticho.
Čo musí záznam povedať
Pre každú zmenu poznamenajte fázu, ktorú ste testovali, dôkaz, ktorý ste prečítali, a hodnotu počítadla na oboch stranách. Práve táto poznámka robí "teraz to funguje" prežiteľným pri ďalšej revízii.
Dve skratky držia poznámku čestnou. Paket, ktorý nikdy neopustil hostiteľa, nemohol byť zahodený pravidlom inde, nech už konfigurácia vzdialenej strany vyzerá akokoľvek presvedčivo. Paket, ktorý odišiel a vrátil sa, posúva otázku nad sieťovú vrstvu, kde už počítadlá firewallu nemajú čo povedať.