Usmjeravanje jednog Linux računa kroz OpenVPN pravilom UID
Pravilo uidrange stavlja IPv4 sockete jednog računa u postojeći tunel bez namespace. Odlučite o DNS-u, IPv6 i rezervi odvojeno, pa provjerite.
Usmjeravanje prema računu odgovara kada svaki IPv4 socket koji posjeduje jedan Linux korisnik treba izlaziti kroz postojeći tunel, a ne odgovara kada vam treba izolacija na razini programa. Bira prema UID-u, pa sve što radi pod tim računom ulazi u opseg, uključujući i batch posao koji ste zaboravili. Riješite to pitanje prije nego dotaknete ijedno ip rule.
Primjer ispod pretpostavlja namjenski račun preglednika na UID 1500, tunelski uređaj tun-office s lokalnom adresom 10.80.0.11 i VPN koji dopušta dotična odredišta. Sam daemon radi izvan tog UID-a.
Tri uvjeta koja biraju mehanizam
Odaberite UID pravilo kada je identitet koji obavlja posao račun, kada je prihvatljivo premjestiti sav njegov promet i kada bi namespace bio teži nego što zadatak zaslužuje. Odaberite mrežni namespace kada radno opterećenje treba vlastita sučelja, resolver i tablicu usmjeravanja. Odaberite proxy ili vezanje po procesu kada se točno jedna aplikacija treba premjestiti dok ostatak sesije ostaje na lokalnoj putanji. Zapisivanje tih tri stvari sprječava pravilo koje tiho pokriva više od namjere.
Greška koju treba izbjeći je pretpostavka da pokretač određuje vlasnika. Preglednik kojemu je URL predala sesija drugog korisnika nije stvorio sockete pod UID-om 1500 i nijedno pravilo neće premjestiti promet koji generira.
Tablica, pravilo i čuvar
Nakon provjere postojećih pravila i odabira nekorištenih brojeva tablice i prioriteta, raspored je kratak: zadana ruta u namjenskoj tablici koja nosi izvornu adresu tunela, pravilo koje šalje lookup-e računa u tu tablicu i završno pravilo koje blokira rezervu. Zapisano, to je idempotentna zamjena rute, ip -4 route replace default dev tun-office src 10.80.0.11 table 51820, nakon koje slijedi ip -4 rule add priority 12100 uidrange 1500-1500 lookup 51820.
Čuvar je ip -4 rule add priority 12101 uidrange 1500-1500 unreachable i važniji je nego što njegova duljina sugerira. Bez njega ruta koja nedostaje u tablici 51820 propada na uobičajeni uplink i račun tiho ispušta promet koji je politika trebala uhvatiti. S njim ista greška postaje timeout, odnosno blokiranje, a ne rezerva.
Držite uobičajeno pravilo lokalne adrese ispred ovih i svjesno odlučite pripadaju li izuzetci za LAN ili upravljanje prije odabrane tablice. Zadana ruta pronađena ondje kasnije ne pita main za konkretniju LAN rutu, što iznenađuje ljude koji očekuju da se podudaranje najduljeg prefiksa primjenjuje među tablicama. Zapišite namjeravani popis izuzetaka u bilješku o promjeni dok je obrazloženje još svježe.
Što usmjeravanje po UID-u izostavlja: DNS
Daemon resolvera otvara svoje upstream sockete pod vlastitim UID-om, pa odabir 1500 ne premješta te upite u tablicu 51820. Integracija DNS-a je zasebna odluka: usmjerite račun na resolver dostupan kroz tunel ili prihvatite da razrješavanje imena slijedi putanju hosta dok promet ne.
Upit preko loopbacka na lokalni stub nije dokaz da je upstream upit koristio rutu preglednika, a ni uspješno učitavanje stranice iz cachea.
IPv6 treba vlastitu rečenicu u dizajnu
Pravila gore pokrivaju samo IPv4. Ako je zahtjev IPv4 tunel bez izravnog IPv6 s ovog računa, dodajte pregledano završno pravilo poput ip -6 rule add priority 12101 uidrange 1500-1500 unreachable, pa provjerite ranija IPv6 pravila i loopback izuzetke koje želite zadržati.
Blokiranje izravnog IPv6 nije dual-stack tuneliranje; to je granica. Nazvati to tuneliranjem zbunit će sljedeću osobu koja pročita politiku, a zabuna će isplivati kao zahtjev podršci o pokvarenom IPv6 siteu.
Provjerite sa stvarnim računom, pa preuzmite životni ciklus
Usporedite lookup-e: ip -4 route get 198.51.100.25 uid 1500 prema istom odredištu s običnim UID-om. Zatim napravite dopušteni zahtjev pod namjenskim računom i provjerite izvornu adresu koju vidi udaljena strana. Preferirana izvorna adresa nije source NAT i neće nadjačati aplikaciju koja veže nešto drugo. Ako oba lookupa vraćaju istu putanju, pravilo ne radi ono što mislite.
Držite tablicu, pravila i životni vijek tunelske rute pod jednim vlasnikom, testirajte ponovno povezivanje i gubitak tunela, a pri umirovljenju politike uklonite samo njezine točne unose. Namespace je još dostupan ako su odvojena sučelja i odvojeno stanje ono što stvarno trebate.