Ech hat eng Laboratoiremaschinn, déi en Tunnel vun enger wäiter Plaz ugeholl huet an och zu engem Fournisseursnetzwierk erausgewielt huet. De Profil fir eraus huet Wochen laang funktionéiert. Nodeems de Server fir eran dobäi koum, huet dee fir eraus sech verbonnen an dann a Sekonnen opgehalen, Trafic duerchzeschleeden, oder huet refuséiert mat engem Feeler ze starten, datt d'Adress nach a Gebrauch ass. D'Konfiguratiounsfichieren hu sech net geännert; den Host hat einfach en zweete OpenVPN-Prozess kritt mat senger eegener Meenung iwwer Porten a Strecken.

De Feeler ass net zoufälleg, an et ass kee Problem mat der Authentifizéierung. Zwee Daemone op enger Maschinn konkurréieren ëm dee selwechten lokale Socket an déi selwecht Routingstabell, a wien als leschten start oder sech erëm verbënnt, gewënnt meeschtens. Wëssen, wéi eng vun dësen zwou Kollisiounen dir hutt, decidéiert, wou s du als éischt kucks.

Lies de Symptom réckwärts

Fänk domat un, wéini den Tunnel stierft. E Bindfeeler beim Start weist op d'Lauschsaïte: eppes besëtzt dee Port schonn, an OpenVPN refuséiert ze starten, amplaz en ze deelen. En Tunnel, deen eropkënnt an dann stëll gëtt, weist op d'Routing, well eng Streck, déi vun der anerer Instanz installéiert gouf, d'Pakete vun der baussenzeger Verbindung vun hirem Wee kann zéien.

Béid Fäll produzéieren déiselwecht Benotzerbeschwéier, dofir reparéieren d'Retry-Schleifen an d'Watchdog-Skripten näischt. Si verbannen de Client erëm an déiselwecht Konflikt. Déi éischt nëtzlech Fro ass, ob de Prozess nach leeft, wann den Trafic stoppt.

Een Socket an een Apparat pro Instanz

En lauschende Server bindet säi Port; en erausgehende Client brauch och en lokale Port fir säin encapisuléierten Trafic. Wann béid um selwechten Host liewen, kann d'Standardverhalen vum Client mat dem Port vum Server kollidéieren. De lokale Port vum Client kann fixéiert ginn, an d'Bindung kann iwwersprong ginn, wou de Partner keen fixe Quellport brauch:

lport 1195
nobind
dev tun1

Déi Zuelen sinn Beispiller, keng Fuerderung. Wat zielt, ass datt de Client ophält, ëm de Port vum Server ze konkurréieren, an datt all Instanz en eegene Tunnelsapparat kritt. Zwee Daemone, déi tun0 deelen, iwwerschreiwen hire Géigendeel säin Apparatszoustand, och wann hir Porte verschidde sinn, dofir ass een Apparat pro Tunnel net optional.

nobind gehéiert zur Clientsäit. E Server muss nach ëmmer binden a lauschen, dofir kopéier d'Linn net an d'Serverkonfiguratioun, a schalt d'Bindung net op engem Client aus, deem säi Partner op engem fixe Quellport filtert.

Wiel een Eegentemer fir d'Standardstreck

Nëmmen eng Verbindung kann eng Standardstreck installéieren. Wann béid Profiler all den Trafic ëmleeden, ersetzt déi zweet Verbindung déi éischt stëll, an déi éischt schéngt ze briechen. Entweder hält s den erausgehenden Tunnel opgedeelt an drécks just d'Präfixer vum Fournisseur, oder s du gëss him eng separat Routingstabell.

ip rule add from 10.9.0.2 table 120
ip route add default dev tun1 table 120
ip route get 10.9.0.2

D'Adressen an d'Tabellennummer uewe sinn Plazhalter. Bestäteg direkt no dem Dobäisetze vun der Regel, datt d'Adress vum VPN-Server selwer nach ëmmer duerch déi normal Tabell opgeléist gëtt; eng Tabell, déi den baussenzegen Transport fänkt, brécht den Tunnel, deen se sollt schützen, an d'Reconnect-Schleef, déi duerno kënnt, gesäit aus wéi en onzouverlässege Fournisseur.

Fir eng Opstellung, déi Reconnects a Neistarts muss iwwerliewen, ass en Netzwierk-Namespace déi méi fest Grenz. Den zweete Client leeft an sengem eegene Namespace mat sengen eegenen Interface an Strecken, an nëmmen d'Servicer, déi musse kräizen, ginn exposéiert. Den Host behält eng Standardstreck, an en Namespace-Reconnect kann se net iwwerschreiwen.

Iwwerpréif mat der Tabell, net mat der Statuslinn

En Client, deen ugëtt verbonne ze sinn, beweise just säi Kontrollkanal. Erfaasst den Routingzoustand virun an no all Verbindung, a frot dann de Kernel, wéi en Apparat en echte Bestëmmungszil géif benotzen:

ip route show
ip route get 10.40.0.20
ss -lunp | grep 1194

Wann den ausgewielten Apparat fir d'Adress vum Fournisseur sech ännert, wann den zweeten Tunnel start, hutt dir d'Streckekollisioun. Wann béid Prozesser op deem selwechten lokale Port erschéngen, hutt dir d'Socketkollisioun. Déi éischt ouni déi zweet ze fixéieren, verréckelt de Feeler just op den nächsten Reconnect.

Schreif d'Porten, Apparater, Tabellen an den Eegentemer vun der Streck an d'Runbook vum Host. Soss wäert déi nächst Persoun, déi en drëtten Tunnel derbäisetzt, déiselwecht Kollisioun erëm entdecken, an dat eenzegt siichtbart Beweis wäert eng Verbindung sinn, déi funktionéiert, bis een aneren säin Daemon nei start.

Ähnlech Artikelen