Vaš tunel se podigne, privatna podmreža odgovara, a obično pregledanje i dalje nestaje u VPN-u iako je neko izbrisao liniju gatewaya iz profila. Ta kombinacija je otisak pogrešne direktive koja je uređivana. Uklonjeno je klijentu davalo sljedeći hop za rute koje instalira; ono što je nastavilo hvatati promet došlo je iz drugog mjesta i poslao ga je server. Pokrivenost i sljedeći hop su odvojeni poslovi, a samo jedan od njih odlučuje hoće li javna odredišta koristiti tunel.

Linija koju ste uklonili bila je sljedeći hop, a ne prekidač politike

Svaka ruta koju klijent instalira treba adresu gatewaya na koju će pokazivati, a direktiva gatewaya je izvor te adrese kada ruta sama ne navede nijednu. Izbrišite je i te rute nemaju gdje da se prikače, pa se ili ne instaliraju ili slete na put koji nikamo ne vodi. Privatna podmreža je upravo ono što je takva ruta nosila.

U međuvremenu ponašanje koje je preživjelo ima drugog autora: opcija preusmjeravanja u gurnutom bloku, koja premješta običan izlazni promet u tunel prema svojim zastavicama. Uklanjanje gatewaya je ni ne isključuje ni ne slabi. Rezultat je najgore od oba stanja: javni promet se i dalje hvata, a privatno odredište koje je opravdavalo tunel sada je nedostupno. Zato i druga izmjena, napravljena u istom duhu, također ništa ne mijenja.

Četiri poluge, četiri različita posla

Četiri direktive se u ovoj raspravi citiraju naizmjenično, a samo jedna od njih upravlja pokrivenošću, odnosno time koja se odredišta uopće usmjeravaju kroz tunel. Druga postavlja sljedeći hop koji rute koriste, treća instalira jedan prefiks, a četvrta odbacuje sve što je server gurnuo, uključujući privatne rute koje implementacija treba. Tabela ih slaže po tome šta administrator pokušava promijeniti, a ne po imenu, jer imena i stvaraju zbrku. Tretirajte ih kao četiri odvojene odluke i odaberite onu koju zaista želite poništiti.

U praksi sve četiri često stižu u jednom gurnutom bloku, red po red, zbog čega izgledaju kao dijelovi jedne postavke. Nisu, i OpenVPN referenca ih upravo zato dokumentira kao različite mehanizme. Shvatiti koju odluku poništavate jeste zadatak; izmjena je jedan red.

What you are trying to changeDirective that decides itWhat it leaves alone
Which destinations use the tunnelredirect-gatewayPer-prefix routes and resolver choice
The next hop a pushed route points atroute-gatewayCoverage of public destinations
One reachable prefixrouteEvery other destination, default path included
All pushed routing and DNS at onceroute-nopullNothing, which is the problem

Filtrirajte gurnutu liniju, zadržite sljedeći hop

Ako pokrivenost na koju prigovarate stiže kao gurnuta opcija, uska reakcija je ignorisati tu opciju po imenu i ostaviti ostatak gurnutog bloka netaknutim. Napisano kao filter, izgleda kao red ispod, i pripada profilu pogođenog klijenta, a ne konfiguraciji servera.

pull-filter ignore "redirect-gateway"

Uskost je poenta. Pošto filter poredi tekstualni prefiks, kraći uzorak odgovara i direktivi sljedećeg hopa, što ogoli upravo informaciju o kojoj privatne rute zavise i ponovi izvornu grešku u novom ruhu. Filter također djeluje samo na gurnute opcije, pa nikada ne dira ekvivalentan red napisan lokalno ili nametnut od mrežnog menadžera. Ponovo se povežite nakon toga, jer živa sesija ne preispituje ono što je server gurnuo.

Čitajte pretragu, ne tabelu

Nakon ponovnog učitavanja profila pitajte kernel kuda bi dvije destinacije zaista otišle: jedna unutar privatnog prefiksa i jedna na javnom internetu. Pun ispis glavne tabele teže je čitati i lakše pogrešno pročitati, jer ruta može postojati i ipak izgubiti od specifičnijeg podudaranja. Kod rutiranja po politici pravilo, tabela i izvorna adresa također ulaze u provjeru.

ip route get 10.40.7.25
ip route get 203.0.113.77
ip rule show

def1 varijanta zaslužuje poznavanje, jer ostavlja stari zadani unos vidljivim dok par polu-zadanih unosa pobjeđuje u pretrazi. Zato linija 0.0.0.0/0 u izlazu sama po sebi ništa ne dokazuje. Pretraga odgovara na pitanje na koje se čini da popis odgovara.

DNS, IPv6 i privatna ruta i dalje moraju raditi

Odbijanje jednog IPv4 preusmjeravanja ne govori ništa o resolveru, pa gurnuta DNS opcija može nastaviti slati upite u tunel dok rute izgledaju ispravno. IPv6 zadani može učiniti isto za porodicu adresa koju IPv4 provjera nikada nije dotakla. Obje traže izričitu odluku, a ne pretpostavku. Zatim potvrdite da privatna usluga još odgovara, jer split tunel koji je izgubio privatnu rutu nije split tunel, nego pokvaren tunel.

Jedan širi alat zaslužuje upozorenje: route-nopull odbacuje svaku gurnutu rutu i svaku gurnutu DNS opciju, što sigurno zaustavlja puni tunel i jednako sigurno lomi privatne rute o kojima implementacija zavisi, pa je mnogo veći čekić od filtera po imenu usmjerenog na jednu opciju. Provjerite privatno odredište, javno odredište i resolver nakon svake promjene, i tretirajte završeni handshake kao dokaz ničega osim handshakea.

Povezani članci