OpenVPN seng "File exists" op enger Route ass kee Fichierproblem
D'Noriicht kënnt aus der Routentabelle vum Kernel, net aus dem Dateiesystem. Liest den Entrée deen de Prefix schonn huet, ier Dir d'LAN-Politik ännert.
Fänkt do un wou d'Noriicht erschéngt. E Client verbënnt, den Tunnel kënnt erop, an dann mellt de Log datt de Linux-Befehl fir d'Route dobäizesetzen mat File exists feelgeet. Näischt an dësem Saz bezitt sech op en Zertifikat, e Schlëssel oder eng Konfiguratiounsdatei, och wann d'Wierder dat unhuelen. De Kernel beschreift seng Routentabelle, an de Prefix deen Dir wëllt installéieren huet schonn en Entrée.
Follegt dem Client senger eegener Reiefolleg: wat en ugefrot huet, wat d'Tabelle schonn huet, wien deen Entrée dohi gesat huet, an eréischt duerno wat ze änneren ass. All Schrëtt hëlt een méiglechen Eegentemer ewech.
Wat de Client tatsächlech ugefrot huet
Virum Feeler loggt de Client d'Route déi en derbäizetze wëll, meeschtens als Destinatioun, Netmask, Gateway an heiansdo als Metrik oder Tabell. Dee Saz ass d'Ufro. De Feeler duerno ass d'Äntwert vum Kernel drop, an déi zwee gehéieren niefteneen ze liesen.
journalctl -u openvpn-client@office -b --no-pager | grep -nE 'route|File exists'
openvpn --config /etc/openvpn/client/office.ovpn --verb 4 --log /tmp/ovpn.log
En Net-Null-Exitstatus vum Routehëllef ass manner informativ wéi den Text drënner, well verschidde Kerneläntwerten en Net-Nullstatus erginn. Behält déi exakt Noriicht; den Ënnerscheed tëscht engem existéierenden Entrée an engem net erreechbare Gateway entscheet wat fir e vun de folgende Sektiounen zoutrëfft.
Liest déi existéierend Route, net nëmmen d'Adress
An der Tabell no deem selwechte punktéierte Quadrupel ze sichen ass net duer. En Routeobjekt gëtt duerch seng Adressfamilie, Tabell, Destinatiounsprefix, Metrik, Protokoll an Ausgangsgerät identifizéiert, an Entréeën déi e Prefix deelen kënnen legal niefteneen existéieren wann déi Attributer verschidde sinn. Kollidéiert dat ganzt Objekt, net den Text.
ip -4 route show table all | grep -F '10.40.'
ip -4 route show match 10.40.0.0/16
ip -4 route get 10.40.0.5
Den leschte Befehl äntwert op eng aner Fro wéi déi zwou éischt: net wat existéiert, mä wéi en Entrée de Kernel fir dës Destinatioun just elo wielt. Béid Usiichte sinn nëtzlech, an si divergéiere genuch dacks fir se ze vergläichen ier Dir eppes schléisst. D'Diskrepanz tëscht hinne ass dee interessanten Fall, net e Ronnungsfeeler.
Notéiert de Prefix, d'Tabell, d'Metrik an d'Gerät niewent der feelgeschloener Ufro. Wann den existéierenden Entrée déiselwecht Attributer an dee selwechten nächsten Hopp huet, hutt Dir eng duebel Uweisung an net e Routingproblem.
Véier Eegentemer déi e Prefix ka hunn
Verbonne Route kommen aus enger zougewiesener Adress a ginn vum System nei erstallt wann ëmmer déi Adress existéiert. En DHCP-Client oder e Verbindungsmanager installéiert Route als Deel vu sengem eegene Liewenszyklus. En aneren VPN-Client dréit vläicht schonn deeselwechte Prefix. An en lokalen Hook oder Skript kann eng dobäisetzen déi soss näischt weess.
All Eegentemer brauch eng aner Korrektur. Eng verbonne Route ass net Är ze läschen; se ze entfernen kann den lokalen Zougang briechen ier den Tunnel brauchbar ass, an de Kernel setzt se zeréck. Eng Route déi engem Manager gehéiert soll iwwer dee Manager geännert ginn, net mat engem manuellen ip route del deen déi nächst Reconnectioun réckgängeg mécht.
En erhalenen Interface mécht déiselwecht Konfusioun méi einfach. Wann den Tunnelgerät eng Reconnectioun iwwerlieft, kënnen Route vum eegene Setupcode nach beim zweete Laf virhanden sinn, sou datt e Skript dat en proppere Zustand unhëlt beim zweeten ouni Erfolleg ass an beim éischten funktionéiert. Entweder raumt den iwwerflëssegen Entrée bewosst of oder maacht den Setupcode idempotent.
block-local äntwert op eng aner Fro
Wann e Profil de ganzen Traffic duerch den Tunnel schéckt, muss de Client entscheeden wat mam lokalen Netz geschitt. D'Fändel block-local ännert dës Entscheedung andeems se de lokalen LAN duerch den Tunnel leet an déi dokumentéiert Ausnam fir de LAN-Gateway behält; dat ass eng Verkéierspolitikswiel mat sichtbaren Konsequenzen fir d'Erreechbarkeet.
Et erkläert net firwat d'Route-Dobäisetzen en Feeler iwwer en existéierenden Entrée zréckginn huet, an et als universell Reparatur ze huelen verstoppt de richtege Konflikt hannert enger Politikännerung. Wann Är lokal Ressourcen no enger Profilännerung net méi erreechbar sinn, ass dëse Fändel eng vun den éischten Saachen ze kontrolléieren; wann d'Route-Dobäisetzen feelgeet, ass et net d'Äntwert.
Behandelt et als Entscheedung wéi eng Destinatiounen lokal bleiwen, bewosst getraff a opgeschriwwen. Et ass keen Schalter deen ee probéiert wann de Log alarméierend ausgesäit.
Maacht den Zyklus zou: entfernt den Duebel op sengem Urspronk
Soubal Dir wësst wien den Entrée hält, entfernt déi duebel Uweisung do wou se definéiert ass. Dat kann eng route-Linn am Profil sinn, e Push vum Server oder en Hook deen net méi muss lafen.
ip -4 route show match 10.40.0.0/16
ip -4 route get 10.40.0.5
journalctl -u openvpn-client@office -b --no-pager | tail -n 15
Verbind Iech dann erëm a bestätegt dräi Saachen: den Tunnel kënnt erop, den ugedaachte Bestëmmungsuert léist sech an de Wee deen Dir wollt, an de Feeler ass fort ouni datt en neien dofir erschéngt. E proppere Log mat engem falsch gewielte Wee ass keng Reparatur.
Wann de Prefix engersäits de lokalen LAN a anersäits en entfernt Netz bedeit, ass de Problem eng Adressiwwerlappung an net en Duebel, an et wäert keng Läschung déi béid Bedeitungen gläichzäiteg wouer maachen. Dee Fall brauch en anere Plang fir ee vun den zwee Netzer. Entscheet wéi eng Säit ëmgemierkt gëtt ier Dir eng vun deenen zwee ufaasst.