Smerovanie jedného linuxového účtu cez OpenVPN pravidlom UID
Pravidlo uidrange vloží IPv4 sockety jedného účtu do existujúceho tunela bez namespace. DNS, IPv6 a záložnú cestu rozhodnite zvlášť, potom overte.
Smerovanie podľa účtu sa hodí, keď každý IPv4 socket vlastnený jedným používateľom Linuxu má odchádzať existujúcim tunelom, a nehodí sa, keď potrebujete izoláciu na úrovni programu. Vyberá podľa UID, takže do rozsahu patrí všetko, čo beží pod týmto účtom, vrátane dávkovej úlohy, na ktorú ste zabudli. Vyriešte túto otázku skôr, než sa dotknete čo i len jedného ip rule.
Príklad nižšie predpokladá vyhradený účet prehliadača na UID 1500, tunelové zariadenie tun-office s lokálnou adresou 10.80.0.11 a VPN, ktorá povoľuje dotknuté ciele. Samotný démon beží mimo tohto UID.
Tri podmienky, ktoré určujú mechanizmus
Pravidlo UID zvoľte, keď je identitou vykonávajúcou prácu účet, keď je presun všetkého jeho prenosu prijateľný a keď by namespace bol ťažší, než si úloha zaslúži. Sieťový namespace zvoľte, keď pracovná záťaž potrebuje vlastné rozhrania, resolver a smerovaciu tabuľku. Proxy alebo väzbu na proces zvoľte keď sa má presunúť presne jedna aplikácia, zatiaľ čo zvyšok relácie zostáva na lokálnej ceste. Zapísanie týchto troch zabráni pravidlu, ktoré potichu pokrýva viac, než bolo zamýšľané.
Chyba, ktorej sa treba vyhnúť, je predpoklad, že vlastníka určuje spúšťač. Prehliadač, ktorému relácia iného používateľa odovzdala URL, nevytvoril sockety pod UID 1500 a žiadne pravidlo nepresunie prenos, ktorý generuje.
Tabuľka, pravidlo a poistka
Po kontrole existujúcich pravidiel a výbere nepoužitých čísel tabuľky a priority je usporiadanie krátke: predvolená trasa vo vyhradenej tabuľke nesúca zdrojovú adresu tunela, pravidlo, ktoré posiela vyhľadávania účtu do tejto tabuľky, a ukončujúce pravidlo, ktoré blokuje záložnú cestu. Zapísané je to idempotentné nahradenie trasy, ip -4 route replace default dev tun-office src 10.80.0.11 table 51820, po ktorom nasleduje ip -4 rule add priority 12100 uidrange 1500-1500 lookup 51820.
Poistkou je ip -4 rule add priority 12101 uidrange 1500-1500 unreachable a je dôležitejšia, než naznačuje jej dĺžka. Bez nej chýbajúca trasa v tabuľke 51820 prepadne do bežného upstreamu a účet potichu uniká prenos, ktorý mala politika zachytiť. S ňou sa tá istá porucha zmení na časový limit, teda na blokovanie, nie na záložnú cestu.
Bežné pravidlo lokálnej adresy držte pred týmito a vedome rozhodnite, či výnimky pre LAN alebo správu patria pred zvolenú tabuľku. Predvolená trasa nájdená tam sa neskôr nepýta main na konkrétnejšiu trasu LAN, čo prekvapí tých, ktorí očakávajú, že zhoda najdlhšieho prefixu platí medzi tabuľkami. Zamýšľaný zoznam výnimiek zapíšte do poznámky k zmene, kým je odôvodnenie ešte čerstvé.
Čo smerovanie podľa UID vynecháva: DNS
Démon resolvera otvára svoje upstream sockety pod vlastným UID, takže voľba 1500 nepresunie tie dopyty do tabuľky 51820. Integrácia DNS je samostatné rozhodnutie: nasmerujte účet na resolver dostupný cez tunel, alebo prijmite, že preklad názvov sleduje cestu hostiteľa, zatiaľ čo prenos nie.
Dopyt cez loopback na lokálny stub nie je dôkazom, že upstream dopyt použil trasu prehliadača, a úspešné načítanie stránky z cache tiež nie.
IPv6 potrebuje v návrhu vlastnú vetu
Pravidlá vyššie pokrývajú len IPv4. Ak je požiadavkou tunel IPv4 bez priameho IPv6 z tohto účtu, pridajte zrevidované ukončujúce pravidlo ako ip -6 rule add priority 12101 uidrange 1500-1500 unreachable, potom skontrolujte skoršie pravidlá IPv6 a výnimky loopback, ktoré chcete zachovať.
Blokovanie priameho IPv6 nie je dual-stack tunelovanie; je to hranica. Nazvať to tunelovaním zmätie ďalšieho človeka, ktorý si prečíta politiku, a zmätok vypláva ako tiket podpory o pokazenom webe IPv6.
Overte so skutočným účtom a potom prevezmite životný cyklus
Porovnajte vyhľadávania: ip -4 route get 198.51.100.25 uid 1500 voči tomu istému cieľu s bežným UID. Potom vytvorte povolenú požiadavku pod vyhradeným účtom a skontrolujte zdrojovú adresu, ktorú vidí vzdialená strana. Preferovaná zdrojová adresa nie je source NAT a neprebije aplikáciu, ktorá viaže niečo iné. Ak obe vyhľadávania vrátia tú istú cestu, pravidlo nerobí to, čo si myslíte.
Tabuľku, pravidlá a životnosť trasy tunela držte pod jedným vlastníkom, otestujte opätovné pripojenie a stratu tunela a pri rušení politiky odstráňte iba jej presné položky. Namespace je stále k dispozícii, ak skutočne potrebujete oddelené rozhrania a oddelený stav.