Zašto vaše pravilo split tunela prestaje odgovarati usluzi
Pravilo fiksira prefiks, a usluga se preselila. Pročitajte odredište koje aplikacija zaista koristi, pa popravite mehanizam umjesto da širite izuzetak.
Split tuneliranje obično ne uspijeva na jedan od dva načina. Ili saobraćaj koji bi trebao biti unutar tunela prolazi pored njega, ili saobraćaj koji bi trebao ostati van biva uvučen unutra. Neuspjeh zastarjelog pravila je prva vrsta i zbunjujući je, jer se pravilo izvršava tačno kako je napisano. Promijenilo se odredište: usluga sada odgovara na adresi koju pravilo nikada nije imenovalo, i ništa u tunelu nije pogrešno.
Šta pravilo fiksira, a šta DNS vraća
Pravilo split tunela je statična izjava o odredištima, obično izražena kao prefiks, ruta ili lista adresa. Procjenjuje se prema odredištu paketa u trenutku slanja. Ime hosta je pretraga koja vraća skup adresa s trajanjem i kešom, a odgovor se može razlikovati po rezolveru, po tipu upita i po minuti.
Ta dva objekta nikada ne pregovaraju jedan s drugim. Pravilo nastavlja da se poklapa s prefiksom koji je dobilo, usluga nastavlja da mijenja adresu koju izdaje, a jaz između njih tiho raste. Zato se simptom pojavljuje nakon migracije provajdera ili obnove certifikata, a ne nakon promjene konfiguracije. Niko nije uređivao tunel, pa niko ne gleda u tunel, i dijagnoza skreće prema aplikaciji umjesto prema politici.
Tri načina na koja se poklapanje kvari
Očigledan slučaj je preseljena usluga: operater joj je promijenio adresu, DNS je slijedio, a izuzetak nije. Drugi je porodica adresa koju pravilo nikada nije pokrivalo, a to se dešava kada ime počne vraćati AAAA zapise koje izuzetak samo za v4 ignoriše. Treći je razlika u rezolveru: interni i javni pogled mogu vratiti različite adrese za isto ime, pa adresa koju vaša aplikacija koristi nije ona s kojom ste testirali.
Keširana veza je četvrta varijanta i lako se propušta. Aplikacija možda još razgovara s adresom koju je razriješila prije sat vremena, što znači da se vaša nova pretraga i njen otvoreni soket ne slažu oko toga gdje usluga živi.
Pročitajte odredište koje aplikacija zaista koristi
Pitajte operativni sistem i tabelu soketa, a ne karticu u pregledniku. Pretraga odgovara gdje se ime trenutno razrješava, a tabela soketa pokazuje adresu s kojom je proces povezan, a ona može biti starija. Pokrenite oboje prije nego što stvorite teoriju, jer je razlika između njih sama odgovor u otprilike pola slučajeva.
getent ahosts api.example.com
dig +short api.example.com A
dig +short api.example.com AAAA
ss -tnp | grep -F api
ip route get 203.0.113.40Zatim uporedite s onim što pravilo pokriva. Ako trenutna adresa pada izvan izuzetka i zahtjev i dalje ne uspijeva, pronašli ste uzrok ne dirajući konfiguraciju tunela. Ako je aplikacija povezana na adresu koja se poklapa s pravilom i zahtjev i dalje ne uspijeva, problem je negdje iza tunela i ovo je pogrešna istraga.
Popravite mehanizam, a ne simptom
Ako proizvod podržava održavano usmjeravanje zasnovano na domenima, koristite ga i slijedite dokumentovano ponašanje osvježavanja i obuhvata. To zamjenjuje statičnu pretpostavku održavanim odgovorom, ali po cijeni zavisnosti od toga da funkcija radi kako je dokumentovano.
Ako se dizajn oslanja na statičnu listu, dajte joj vlasnika i plan ažuriranja. Plan treba da kaže kako se adresa otkriva, ko odobrava promjenu i koliko brzo se očekuje da lista prati migraciju provajdera. Lista bez vlasnika je budući prekid s poznatim uzrokom.
Ne širite izuzetak na veliku susjednu mrežu samo da biste uhvatili svaku adresu koju ste vidjeli tokom kratkog testa. To nije popravka; to je trajna promjena sigurnosne granice i tiho će pustiti nepovezane usluge da zaobilaze tunel dok god pravilo postoji.
Provjerite obje polovine namjere
Dizajn split tunela ima dvije namjere, a popravka treba sačuvati obje. Zaštićena usluga mora ići kroz tunel, a isključene kategorije moraju nastaviti ići oko njega. Testirajte novu vezu prema popravljenom odredištu, zatim testirajte jednu stvar koja bi trebala ostati van.
curl -sv --max-time 5 https://api.example.com/ -o /dev/null 2>&1 | grep -E 'Trying|Connected to'
curl -sS --max-time 5 https://public.example/ -o /dev/null -w '%{http_code}\n'Zapišite novu adresu, mehanizam koji ste odabrali i datum. Ta bilješka je ono što sprječava sljedeću osobu da zaključi da je VPN slučajno ignorisao vlastitu konfiguraciju.