OpenVPN se povezuje, ali ništa ne teče: pronađite sloj na kojem paket pada
Povezani tunel bez prometa ima najmanje pet uzroka. Dokažite slušač, uhvatite vanjski paket, pa neka brojači ili trag imenuju pravilo.
OpenVPN kaže povezano, a promet se ne kreće, rečenica koja pokriva najmanje pet nepovezanih kvarova. Uređivanje pravila vatrozida prije nego što znate koji sloj pada umnožava nepoznanice i ostavlja sljedećem inženjeru nered. Radite umjesto toga od procesa prema van, jer svaki korak ispod ili čisti jednu fazu ili sužava mjesto gdje paket umire. Redoslijed je ovdje važan: snimka uzeta prije nego što znate koja je adresa vezana dokazat će nešto, samo ne ono što vam treba.
Socket je ili vezan ili nije
Usluga koja javlja da je aktivna i dalje može biti vezana na adresu ili prijenos koji niste namjeravali. Ispitajte sam socket: ss -lunp navodi UDP slušače, a ss -ltnp navodi TCP, a stupac koji vrijedi čitati je lokalna adresa, ne stanje.
Prazan odgovor obično znači jedno od troje: proces je izašao nakon pokretanja, učitao je drugu konfiguracijsku datoteku ili sluša na adresi različitoj od one na koju se poziva.
ss -lunp | grep 1194
ss -ltnp | grep 1194
Direktiva local prikiva slušač na jednu adresu, pa klijent usmjeren drugdje na istom hostu biva odbijen dok usluga izvana i dalje izgleda zdravo. Ime instance također može pokazivati na datoteku koju nikada niste uredili, što se događa na hostovima koji pokreću dva profila usporedno.
Uhvatite vanjski paket, a ne tunel
Filtrirajte na fizičkom sučelju i stvarnom portu, uz svoje sučelje: tcpdump -ni eth0 udp port 1194. Odlazni paketi bez ičega što se vraća upućuju na ono što je uzvodno: filtriranje pružatelja, NAT uređaj ili udaljenu adresu koja nije ona koju mislite. Tišina u oba smjera upućuje na klijentsko usmjeravanje ili lokalni vatrozid. Odgovori koji stižu bez napretka tunela upućuju na kontrolni kanal, odnosno nesklad ključa ili šifre, a ne na filtriranje.
Uhvatite oba smjera i držite datoteku kratkom. Duga snimka zakopava zanimljive tri sekunde, a odgovor gotovo uvijek leži u prvoj razmjeni.
Prvo brojači, trag samo kad lažu
Počnite s brojačima, jer ne koštaju ništa. Ili nft list ruleset ili iptables -L -n -v odgovara na jedino pitanje koje je ovdje važno: je li se pravilo poklopilo? Redoslijed odlučuje ishod, jer prvo poklapanje pobjeđuje, zato široki DROP prije kasnijeg ACCEPT ostavlja taj ACCEPT mrtvim i zato dodavanje pravila tako rijetko išta popravlja.
Vlasništvo također zbunjuje ljude. Kernel pripisuje lokalno generirane pakete procesu koji je otvorio socket, a OpenVPN obično radi kao root, pa pravilo vezano uz običan korisnički ID nikada ne vidi promet samog tunela. Provjerite UID vlasnika prije nego zaključite da je pravilo pogrešno.
Samo kada brojači ostanu dvosmisleni, zapis je vrijedan buke, i to samo za uzak dio: iptables pravilo koje ograničava brzinu i dodaje prefiks svojim linijama zapisa, ili nftables pravilo s meta nftrace set 1 dok nft monitor trace radi. Trag imenuje lanac i pravilo koje je prihvatilo ili odbacilo paket. Uklonite oboje nakon toga i držite zapis korisnog tereta izvan toga.
Provjerite i prijenos. Vatrozidna usluga ograničena na TCP ne govori ništa o UDP slušaču na tom broju, pa pravilo koje izgleda ispravno i dalje može odbaciti svaki paket.
Usmjeravanje i put natrag
Prihvaćen paket koji ipak nestaje treba pregledati putanju do odredišta. ip route get prijavljuje rutu odabranu za jednu adresu, a filtriranje obrnutog puta može odbaciti odgovor koji stiže preko sučelja koje glavna tablica nikada ne bi odabrala. Simptom izgleda točno kao odbacivanje vatrozida, zato ova provjera dolazi prije još jednog NAT pravila.
Na pristupniku provjerite prosljeđivanje i forward lanac, a ne input lanac. Zatim potvrdite da udaljena strana zna kako doći do izvorne adrese, jer radni odlazni put bez ičega što se vraća je tišina u oba slučaja.
Što zapis mora reći
Za svaku promjenu zabilježite fazu koju ste testirali, dokaz koji ste pročitali i vrijednost brojača s obje strane. Taj zapis čini "sada radi" preživljivim na sljedećem pregledu.
Dva prečaca čuvaju zapis iskrenim. Paket koji nikada nije napustio host nije mogao biti odbačen pravilom negdje drugdje, koliko god uvjerljiva bila konfiguracija udaljene strane. Paket koji je otišao i vratio se pomiče pitanje iznad mrežnog sloja, gdje vatrozidni brojači više nemaju što reći.