route-gateway nije redirect-gateway: šta se zapravo mijenja
Ova opcija samo daje sljedeći hop rutama koje OpenVPN instalira. Njeno uklanjanje ne isključuje gurnuti puni tunel, a ispravka pripada preusmjeravanju.
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 change | Directive that decides it | What it leaves alone |
|---|---|---|
| Which destinations use the tunnel | redirect-gateway | Per-prefix routes and resolver choice |
| The next hop a pushed route points at | route-gateway | Coverage of public destinations |
| One reachable prefix | route | Every other destination, default path included |
| All pushed routing and DNS at once | route-nopull | Nothing, 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.