Gater hostuje sopstvenu administratorsku stranicu: unutrašnja ili javna adresa
Usluga na samom VPN gateru treba unutrašnji ulaz do kojeg tunel može stići. Objavite je privatno, pa potvrdite da javni slušalac nije još otvoren.
Administratorska stranica odgovara sa telefona na mobilnim podacima, a istekne s laptopa pridruženog VPN-u. Ništa na tunelu nije pokvareno, jer zahtjev nikada ne ulazi u njega. Ime hosta se razrješava na javnu adresu gatera, a ta adresa je dostupna samo izvan tunela koji on završava. Popravka znači dati usluzi privatni ulaz, umjesto premještati vanjsku krajnju tačku.
Stranica se učitava spolja, a ne kroz tunel
Upoređuju se dva različita zahtjeva. Sa mobilnih podataka preglednik direktno stiže do javne adrese. Iz unutrašnjosti tunela isto ime se razrješava na istu javnu adresu, a paket sada mora izaći kroz tunel da bi stigao do adrese na vlastitoj dalekoj strani tunela. Isto ime, ista adresa, dvije sasvim različite pozicije.
Ruta odredišta bira adresu, a ne port. Ništa u tablici rutiranja ne zna da je port 443 za administraciju, a port 1194 transport, pa se oba tretiraju kao isto odredište.
Zato stranica ponekad radi, a ponekad ne, zavisno od toga koje je ime i koju mrežu klijent koristio. To je problem putanje, a ne problem autentifikacije. Oba klijenta se sasvim dobro autentifikuju.
Neka vanjska krajnja tačka ostane dostupna
Profili punog tunela trebaju izuzetnu rutu za VPN krajnju tačku, a OpenVPN opcija redirect-gateway dokumentuje upravo to: udaljena krajnja tačka zadržava rutu kroz postojeći gater da se tunel ne bi rutirao u sebe. Uklonite taj izuzetak i šifrovani transport slijedi tunel, što završava sesiju u petlji. Upravo zbog tog izuzetka adresa krajnje tačke ostaje dostupna iz unutrašnjosti tunela.
Posljedica je da javna adresa ostaje dostupna sa klijenta, zbog čega i zahtjev preglednika na tu adresu može slijediti isti izuzetak i izaći bez ulaska u tunel. Izuzetak radi svoj posao, a ime pravi štetu.
Pročitajte odluku rute, a ne listu interfejsa, prije nego što bilo šta promijenite. Naredbe ispod ispisuju odluku, a ne inventar. Pokrenite ih sa klijenta koji nije uspio.
ip -4 route get 203.0.113.77
ip -4 rule show
ip -4 route show table allAko pretraga pokaže rutu krajnje tačke kroz fizički gater, ponašanje je ispravno i administratorska stranica se jednostavno šalje pogrešnim putem. To je tačka u kojoj razrješavanje imena postaje popravka.
Dajte usluzi privatno ime
Usluzi treba ime koje se razrješava na adresu gatera unutar tunela, uz zadržavanje semantike certifikata i imena hosta koju aplikacija očekuje. Privatni zapis zone za administratorsko ime uobičajen je odgovor, i on ostavlja transportno ime netaknutim.
Ne preusmjeravajte transportno ime na unutrašnju adresu, jer bi sljedeće uspostavljanje tunela pokušalo stići do adrese koja postoji samo unutar tunela. Ta greška daje VPN koji radi tačno jednom.
Provjerite i obje familije adresa, jer zaostali AAAA zapis može poslati preglednik negdje što privatni plan nikada nije pokrio.
dig +short admin.hq.internal
dig +short -t AAAA admin.hq.internal
curl -sS -o /dev/null -w '%{http_code} %{remote_ip}\n' https://admin.hq.internal/Uskladite politiku s mjestom na kojem proces radi
Do nativnog procesa koji sluša na gateru stiže se putanjom lokalnog ulaza, pa ulazni lanac i vezivanje soketa odlučuju da li se zahtjev prihvata. Pravila prosljeđivanja i IP prosljeđivanje ne tjeraju lokalnog slušaoca da odgovori. Dozvolite izvore tunela u ulaznoj politici i potvrdite da je proces vezan za adresu do koje tunel može stići.
Kontejner objavljen na portu hosta slijedi drugačiju putanju, jer se paket prevodi po odredištu i prosljeđuje. Taj zahtjev susreće politiku prosljeđivanja hosta i Dockerova vlastita pravila, zato radni nativni slušalac može postojati uz kontejner koji odbija isti port.
Redoslijed pokretanja je važan u oba slučaja, jer vezivanje za adresu koja se pojavi tek nakon što tunel digne tiho pada pri podizanju.
Provjerite privatni pristup i odbijenu javnu putanju
Uputite novi imenovani zahtjev sa ovlaštenog klijenta uz netaknute vlastite provjere identiteta aplikacije. Zatim pokušajte istu uslugu izvan tunela i potvrdite da ne odgovara. Privatno ime je pogodnost, a ne ograničenje, a slušalac koji je još vezan za javnu adresu još je izložen. Tu posljednju provjeru većina pregleda preskoči.
Čitajte vezivanja i stanje filtera, a ne ime hosta koje su korisnici dobili. Izloženost je svojstvo soketa, a ne imena. Ta razlika preživi svaku DNS promjenu.
ss -lntp | grep ':443'
nft list ruleset | grep -n 443
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' https://203.0.113.77/Kada unutrašnji zahtjev vrati stranicu, a vanjski istekne, usluga ima jednu namjernu privatnu putanju i transport ostaje dostupan. Kada vanjski zahtjev još odgovara, slušalac ili objavljeni unos kontejnera mora se suziti prije nego bilo ko opiše uslugu kao samo unutrašnju.