Zwee OpenVPN-Tunnellen op engem Linux-Host: wiem gehéiert d'Route?
Zwee Client-Profile kënnen niewenteneen existéieren, soubal Pools, gepushte Routen an Default-Uspriech zougedeelt sinn. Entscheet d'Eegentum fir d'éischt an benotzt duerno Marken fir de Réckwee.
Zwee Profile sinn ugeschloss, an ee vun hinnen dréit roueg Traffic, deen dem aneren zugeduecht ass. E Linux-Host kann déi zwou OpenVPN-Clienten zur gläicher Zäit ouni Schwieregkeete lafen. Wat en net ka maachen, ass fir dech ze entscheeden, wéi ee Prozess wéi ee Prefix usproche kann. Dee Choix muss een droen, ier den zweeten Tunnel eropkënnt, net nodeems eng Ressource opgehalen huet ze äntweren.
Fänkt mat der Aarbecht un, déi déi zweet Verbindung maache muss
En Büro, dee iwwer ee Profil erreechbar ass, an e Labor, dat iwwer en aneren erreechbar ass, brauchen déi zwou Tunnellen erop an der keng vun hinnen alles usproch. Eng eenzeg stiermësseg Applikatioun, déi iwwer den zweeten Profil eraus muss, brauch eng Politikregel an net eng zweet Default-Route. Eng Reserveverbindung brauch just een Tunnel gläichzäiteg, dofir soll d'Reserve net mam Maschinn ufänken.
Dat sinn dräi verschidden Konfiguratiounen, an se ginn duerchernee gehalen, well all dräi d'selwëcht ufänken: en zweeten Profil an eng gelungen Verbindung. Schreift d'geplangten Usinn d'éischt op, an konfiguréiert dann a seng Richtung. Eng eenzeg Phrase iwwer d'Absicht spuert eng Stonn Pakettopnam.
systemctl list-units --type=service 'openvpn-client@*' ip -4 route show default
Den éischte Kommando lëscht déi lafend Instanzen op, dorënner déi, déi vun Hand ausserhalb vum Manager gestart goufen. Den zweeten dréckt den aktuellen Default-Uspruch, an dat ass deen Zoustand, deen Dir méi spéit musst erkläeren.
Iwwerschneidend Pools briechen, ier d'Routing et mécht
Zwee Serveren deelen gär Adressen aus dem selwechten 10.8.0.0/24. De Client hält dann zwou Interfaceen bannent engem Prefix, an et gëtt näischt, wat seet, wéi ee Destinatioun zu wiem gehéiert, an dat resultéierend Verhalen gesäit aus wéi e Routingfehler, ass awer eigentlech e Nummeréierungsfehler. E Pool nei nummeréieren kascht eng Konfiguratiounsännerung; all spéider Routing-Ëmwee kascht en Weekend. Kontrolléiert de Pool, ier Dir eng Route fir hien derbäi setzt.
Kuckt och op de lokalen LAN. En Heem-LAN mat Nummer 192.168.1.0/24, deen een Tunnel och opdeckt, erzeugt déi selwecht Ambiguitéit, an d'Symptom ass en Hostnumm, deen sech opléist, wärend d'Verbindung ni fäerdeg gëtt. Dat gesäit aus wéi e Nummopléisungsfehler, bis Dir d'Routen ausdréckt.
ip -4 addr show ip route show table all | grep -E '10\.|192\.168\.'
Vergläicht béid Ausgaben mat deenen zwou Serverkonfiguratiounen, ier Dir de Client beréiert. Wann d'Prefixe sech iwwerschneiden, stoppt a nummeréiert nei, well keng Zuel vu Neistarts se trennt.
Gitt all Profil seng eege Unit an all Prefix en Eegentümer
All Profil kritt säin eegenen Instanznumm a seng eegen Konfiguratiounsdatei, sou datt d'Instanz office den office.conf lued, wärend déi mat Numm lab den lab.conf lued. Bestätegt dës Zueuerdnung iwwer de Servicemanager, amplaz enger Verzeechneslëscht ze vertrauen, well en Drop-in ka changéieren, wéi eng Datei gelued gëtt. Eng falsch Zueuerdnung bedeit, dass Dir de Profil astellt, deen net leeft.
Da bestëmmt, wien d'Routen installéiert. Wann d'Serveren inkompatibel Sätz pushen, entweder refuséiert de Push an lëscht d'Prefixen selwer, oder loosst ee Profil den Default behalen an steiert deen aneren mat Politikregelen. Zwee Prozesser, déi allebéid en Default installéieren, enden mat engem rouege Gewënner an ouni schrëftlech Opzeechnung vun der Entscheedung.
systemctl cat [email protected] grep -E 'route-nopull|pull-filter|redirect-gateway' /etc/openvpn/client/lab.conf
Den éischten zeigt d'Unit mat all Iwwerschreiwung, déi seng Argumenter ännert. Den zweeten zeigt, ob de Profil gepushte Routen iwwerhaapt akzeptéiert, an dat ass de Schalter, deen alles duerno bestëmmt.
Marken halen Äntwerten um Interface, vun deem se komm sinn
Wann all Tunnel verschidde Quellen déngt, kann eng Äntwert iwwer de falsche Link erausgoen an d'Verbindung stierft nom éischte Paket. D'Muster, dat hält, ass ankommend Paketen no Input-Interface ze markéieren, déi Mark op der Äntwert ze restauréieren an all Mark eng Tabell mat sengem eegenen Default-Gateway ze ginn.
Lass Reverse-Path-Filterung muss normalerweis fir déi betraffen Interfaceen opgelooss ginn, well eng Äntwert legitimerweis iwwer e Link kënnt, deen d'Haapttabell ni wéilt wielen. Halt d'Marke schmuel, sou datt se ni den eegene verschlësselte Traffic vun den Tunnellen fangen, wat den Tunnel duerch sech selwer schécke géif.
ip rule show ip route show table 101 sysctl net.ipv4.conf.all.rp_filter
Liest déi existéierend Regelen, ier Dir eng aner derbäi setzt. Duebel Prioritéiten a vergiessen Tabellen sinn de gewéinleche Grond, firwat eng Markpolitik anscheinend guer keen Effekt huet.
Beweist d'Isolatioun, andeem Dir eng Verbindung stoppt
Mat béiden Tunnellen erop, notéiert all Interface-Adress, d'Route zu engem Host hannert all Tunnel an de Wee, deen eng onverbonnen Destinatioun hëlt. Frot de Kernel no der Sich, amplaz eng eenzeg Tabell ze liesen, well eng Tabell ni déi lescht Entscheedung weist.
Da stoppt eng Instanz a kuckt, wéi hir Interface an hir Routen verschwannen, wärend déi aner weiderleeft. En Broch an der Iwwerliewender bedeit, dass déi zwou nach ëmmer en Apparatnumm, eng Route oder eng Firewallregel deelen, déi keen getrennt huet.
Brénge de gestoppte Profil zréck a widderhëlt déi selwecht Kontrollen. Wann en Tunnel just den éischte Start no engem Neistart iwwerlieft, kuckt Dir op e Liewenszyklusfehler an net op en Routingdesign.