Dva OpenVPN tunela na jednom Linux hostu: kome pripada ruta?
Dva klijentska profila mogu supostojati nakon što se dodijele poolovi, gurnute rute i zahtjevi za zadanu rutu. Prvo odlučite o vlasništvu, a zatim upotrijebite oznake za povratni put.
Dva profila su povezana, a jedan od njih tiho prenosi promet namijenjen drugome. Linux host može istovremeno pokretati oba OpenVPN klijenta bez poteškoća. Ono što ne može jest odlučiti umjesto vas koji proces smije polagati pravo na koji prefiks. Ta se odluka mora donijeti prije nego što se drugi tunel podigne, a ne nakon što resurs prestane odgovarati.
Pođite od posla koji druga veza mora obaviti
Ured dostupan kroz jedan profil i laboratorij dostupan kroz drugi zahtijevaju da oba tunela budu podignuta i da nijedan ne polaže pravo na sve. Jedna tvrdoglava aplikacija koja mora izaći kroz drugi profil treba pravilo politike, a ne drugu zadanu rutu. Rezervna veza treba samo jedan tunel koji radi istovremeno, pa rezervni ne bi trebao startati s računalom.
To su tri različite konfiguracije i one se brkaju jer sve tri počinju isto: drugi profil i uspješna veza. Prvo zapišite željeni raspored, a zatim konfigurirajte prema njemu. Jedna rečenica o namjeri štedi sat snimanja paketa.
systemctl list-units --type=service 'openvpn-client@*' ip -4 route show default
Prva naredba ispisuje instance koje rade, uključujući one pokrenute ručno izvan upravitelja. Druga ispisuje trenutni zahtjev za zadanu rutu, a to je stanje koje ćete kasnije morati objasniti.
Preklapajući poolovi pucaju prije usmjeravanja
Dva poslužitelja će veselo dodijeliti adrese iz istog 10.8.0.0/24. Klijent tada drži dva sučelja unutar jednog prefiksa, a ništa ne govori koje odredište pripada kojem, pa rezultat izgleda kao kvar usmjeravanja, ali je zapravo kvar numeriranja. Prenumeriranje poola stoji jedno uređivanje konfiguracije; svaki kasniji zaobilazni trik usmjeravanja stoji jedan vikend. Provjerite pool prije nego što mu dodate rutu.
Pogledajte i lokalni LAN. Kućni LAN s brojem 192.168.1.0/24 koji jedan tunel također izlaže stvara istu dvosmislenost, a simptom je naziv hosta koji se razrješava dok se veza nikada ne dovrši. To izgleda kao kvar razrješavanja naziva sve dok ne ispišete rute.
ip -4 addr show ip route show table all | grep -E '10\.|192\.168\.'
Usporedite oba izlaza s dvije konfiguracije poslužitelja prije nego što dirnete klijenta. Ako se prefiksi preklapaju, zaustavite se i prenumerirajte, jer ih nikakvo ponovno pokretanje neće razdvojiti.
Dajte svakom profilu vlastitu jedinicu, a svakom prefiksu vlasnika
Svaki profil dobiva vlastiti naziv instance i vlastitu konfiguracijsku datoteku, pa instanca zvana office učitava office.conf, a ona zvana lab učitava lab.conf. Potvrdite to mapiranje kroz upravitelj servisa umjesto da vjerujete ispisu direktorija, jer drop-in može promijeniti koja se datoteka učitava. Pogrešno mapiranje znači da podešavate profil koji ne radi.
Zatim odlučite tko instalira rute. Kada poslužitelji guraju nekompatibilne skupove, ili odbijte guranje i sami popišite prefikse, ili dopustite jednom profilu da zadrži zadanu rutu, a drugi usmjerite pravilima politike. Dva procesa koja oba instaliraju zadanu rutu završe s tihim pobjednikom i bez pisanog zapisa o odluci.
systemctl cat [email protected] grep -E 'route-nopull|pull-filter|redirect-gateway' /etc/openvpn/client/lab.conf
Prva prikazuje jedinicu sa svakim nadjačavanjem koje mijenja njezine argumente. Druga prikazuje prihvaća li profil gurnute rute uopće, a to je prekidač koji određuje sve dalje.
Oznake zadržavaju odgovore na sučelju s kojeg su stigli
Kada svaki tunel služi različitim izvorima, odgovor može otići preko pogrešne veze i veza umire nakon prvog paketa. Obrazac koji se drži jest označiti dolazne pakete prema ulaznom sučelju, obnoviti tu oznaku na odgovoru i dati svakoj oznaci tablicu s vlastitim zadanim pristupnikom.
Labavo obrnuto filtriranje puta obično se mora ublažiti za dotična sučelja, jer odgovor legitimno dolazi preko veze koju glavna tablica nikada ne bi odabrala. Držite oznake uskima da nikada ne zahvate vlastiti šifrirani promet tunela, jer bi to poslalo tunel kroz njega samog.
ip rule show ip route show table 101 sysctl net.ipv4.conf.all.rp_filter
Pročitajte postojeća pravila prije nego što dodate još jedno. Duplicirani prioriteti i zaboravljene tablice uobičajen su razlog zašto politika oznaka izgleda posve bez učinka.
Dokažite izolaciju zaustavljanjem jedne veze
S oba podignuta tunela zabilježite adresu svakog sučelja, rutu do jednog hosta iza svakog tunela i put kojim ide nepovezano odredište. Pitajte jezgru za pretragu umjesto da čitate jednu tablicu, jer jedna tablica nikada ne pokazuje konačnu odluku.
Zatim zaustavite jednu instancu i promatrajte kako njezino sučelje i rute nestaju dok druga nastavlja. Prekid u preživjelom znači da njih dvoje još dijele naziv uređaja, rutu ili pravilo vatrozida koje nitko nije razdvojio.
Vratite zaustavljeni profil i ponovite iste provjere. Kada tunel preživi samo prvo pokretanje nakon ponovnog podizanja sustava, gledate kvar životnog ciklusa, a ne dizajn usmjeravanja.