Stara vam default ruta namjerno ostaje nakon OpenVPN-a
Dvije /1 rute nadjačavaju default rutu, a da je ne zamjenjuju. Provjerite koju rutu odredište zaista koristi, pa ostavite stari gateway na mjestu.
Povežete tunel, pokrenete ip route, a izvorni default gateway i dalje stoji tu. Prva pomisao je da klijent nije preuzeo rutu, pa ručno obrišete default i potpuno izgubite vezu. Taj unos treba da ostane. Uz redirect-gateway def1 OpenVPN instalira dvije specifičnije rute koje nadjačavaju običnu default rutu umjesto da je zamijene. Stari gateway ostaje i prestaje nositi promet koji ste testirali.
Šta def1 zapravo radi
Zastavica dodaje 0.0.0.0/1 i 128.0.0.0/1, obje prema tunelu. 0.0.0.0/1 pokriva svaku adresu čiji je prvi oktet od 0 do 127, a 128.0.0.0/1 od 128 do 255, pa svako IPv4 odredište ima podudaranje specifičnije od stare default rute. Dužina prefiksa, a ne metrika, odlučuje koja ruta pobjeđuje.
Ostavljanje izvorne default rute na mjestu je namjerno. Klijent ne mora pamtiti šta je zamijenio i ne prepisuje rutu koja nosi njegovu vlastitu vezu prema VPN serveru. Pri prekidu veze uklanja dvije polovine ruta i tablica se vraća u prijašnje stanje.
Zašto /1, a ne /0
Usmjeravanje bira najduži odgovarajući prefiks, a ne najnižu metriku, pa /1 pobjeđuje /0 bez obzira šta kaže metrika default rute. Obje polovine postoje jer jedan /1 pokriva samo pola prostora; kad postoji samo 0.0.0.0/1, sve od 128.0.0.0 naviše i dalje prati staru default rutu, što daje zbunjujući simptom: neki sajtovi rade, drugi ne.
Podizanje ili spuštanje metrike stare default rute ništa ne mijenja, a ni default ruta s nižom metrikom na drugom interfejsu ne krade promet. Prvo odlučuje dužina prefiksa, a metrici se pribjegava samo kod jednakih prefiksa.
Pročitajte stvarnu routing tablicu
Povezan host može pokazati sva tri unosa odjednom, s tunelom koji nosi polovine i izvornim gatewayem koji je još na listi. Adrese su primjeri, a ne konfiguracija za kopiranje, jer imena interfejsa, topologija tunela i dodatne rute zavise od platforme i klijenta.
default via 192.168.50.1 dev wlan0
0.0.0.0/1 via 10.8.0.1 dev tun0
128.0.0.0/1 via 10.8.0.1 dev tun0Važan je odnos: dvije određene polovine iznad jedne opće default rute. Linija starog gatewaya ostaje jer je ništa nije zamijenilo.
Provjerite koju rutu paket zaista uzima
Specifičnije rute ipak mogu pobijediti: ruta za privatni raspon, lokalnu podmrežu ili vlastita adresa VPN servera duža je od /1. Tunelu treba vanjski put do njegovog servera, a vraćanje te veze natrag u tunel odmah bi ga slomilo. Na Linuxu pitajte kernel umjesto da čitate tablicu na oko: ip route get s odredištem koje vas zanima ispisuje odabranu rutu, interfejs i izvor. Ako je podešeno usmjeravanje po pravilima, pregledajte i pravila, jer pravilo može odabrati drugu tablicu prije nego što se pogleda glavna.
Ako se samo dio IPv4 ponaša pogrešno, potvrdite da su obje polovine instalirane i zatim tražite izuzetak koji odgovara problematicnom odredištu. Brisanje stare default rute nije rješenje i uklanja rutu koja klijentu treba da čisto razdvoji tunel.
Šta def1 ne pokriva
Dva IPv4 unosa ne govore ništa o IPv6: host s IPv6 vezom nastavlja koristiti svoju default rutu dok nešto tu familiju ne preusmjeri odvojeno, zbog čega na dual-stack mreži dio prometa izgleda kao da zaobilazi tunel. Drugi klijenti i mrežni menadžeri implementiraju routing punog tunela drugačije i njihove tablice se neće podudarati. Ovdje opisano ponašanje def1 pripada dokumentiranoj zastavici OpenVPN-a, a ne svakom VPN-u na mašini.
Kill switch odgovara na drugo pitanje: šta mašina radi kada tunel padne. Prioritet ruta odlučuje kuda promet ide dok je tunel aktivan; ne odlučuje šta će firewall učiniti poslije. Redoslijed rada: pročitajte tablicu, potvrdite da obje polovine postoje, pokrenite ip route get za problematično odredište, provjerite pravila politike, pa odvojeno pogledajte IPv6. Ostavite staru default rutu tamo gdje jeste.