En Trennungsdatensaz kënnt un, nodeems eng zweet Verbindung ënner deem selwechten Numm schonn ugefaang huet, an en Handler, deen déi néist Zeil fir dee Benotzer aktualiséiert, schléisst déi falsch Sitzung. De Feeler ass net de Verglach vun den Zäitstempelen. Et ass d’Annam, datt en Numm plus eng ganz Sekonn eng Sitzung identifizéieren. Hook-Evenementer beschreiwen Verbindungen, an eng Verbindung brauch e Schlëssel, deen nëmmen hir gehéiert.

Fänkt domat un, wat d’Trennungsvariabelen tatsächlech bedeiten. Eréischt duerno ergëtt d’Wiel vum Identifiant Sënn.

Wat den Disconnect-Hook wierklech dréit

An Community OpenVPN 2.6 definéiert d’Hook-Referenz time_unix als de Moment, wou de Client sech verbonnen huet; en gëtt gesat, ier den Connect-Hook leeft, an en gëtt net nei definéiert, wann den Disconnect-Hook méi spéit ausgeléist gëtt. time_duration gëtt d’Längt vun där Sitzung a Sekonnen un, sou datt d’Enn ongeféier d’Verbindungszäit plus d’Dauer ass. Béid sinn ganz Sekonnen, an keen dovun ass de Moment, wou Är Datebank d’Evenement veraarbecht huet. Dës dräi Zäiten ausernee ze halen ass et, wat eng Korrelatioun hält, amplaz just während den Tester richteg auszegesinn.

Dës Arithmetik verdéngt et, opgeschriwwen ze ginn, well et déi eenzeg Endzäit ass, déi den Hook selwer ubitt. Veraarbechtungsverzögerung an Auerënnerscheeder tëscht Hoste bleiwen nach ëmmer dobaussen.

Firwat dat offensichtlecht Paar net eenzegaarteg ass

Den Numm mat der Verbindungszäit ze paaren enkelt d’Sich an identifizéiert nach ëmmer keng Sitzung. E Client ka sech bannent der selwechter Sekonn erëm verbannen, sou datt zwou Sitzungen déi zwou Wäerter deele kënnen. Zwou Daemon-Instanzen, oder en Serveraustausch, deen déiselwecht Konfiguratioun behält, kënnen dat Paar aus verschiddene Prozesser produzéieren. Tunneladressen ginn aus deem selwechte Grond recycléiert, wat se zu Attributer vun enger Sitzung mécht an net zu Identifiante fir eng.

De Feelermodus ass roueg. Eng verspéit Trennung vun der éischter Sitzung passt op déi néist Zeil an beendet eng Zousetzung, déi déi zweet Sitzung nach benotzt, sou datt de Benotzer e zoufällegen Zougangsverloscht erliewt, deen hien net verursaacht huet. Eng Zeilenzuel, déi duerno richteg ausgesäit, mécht de Problem schwéierer ze gesinn.

Wou eng stabil Identitéit hierkënnt

De Management-Interface gëtt all Client e Client-Instanz-Identifiant, an deen Identifiant ass op déi Daemon-Instanz limitéiert, déi en ausgestallt huet. En brauchbaren externe Schlëssel kombinéiert en stabile Server-Identifiant, eng Epoche, déi sech ännert, wann den Daemon start, an dee Client-ID. D’Epoche ass wichteg, well Identifiante mam Prozess nei starten, an eng blouss Prozess-ID ka méi spéit vun eppes Onverbonnenes erëmbenotzt ginn.

Ëmweltvariabelen, déi bannent engem Kand-Connect-Skript gesat ginn, reese net zum spéideren Disconnect-Skript vum Elteren-Daemon, well dës Skripte als getrennte Prozesser mat hirem eegenen Ëmwelt lafen. Dofir ass d’Generéiere vun enger UUID bei der Verbindung just eng hallef Léisung. D’Trennungssäit muss déiselwecht UUID kënne nennen, wat heescht datt d’Identitéit misst do liewen, wou béid Evenementer kënnen erreechen.

Maacht d’Beendigung bedingt an idempotent

Beendet pro Sitzungsbesëtzer, net pro Benotzer. En Handler, deen all Zousetzung läscht, déi momentan zu engem Numm gehéiert, wäert eventuell déi falsch läschen, an déi eenzeg Verteidegung ass ze kontrolléieren, datt deen geläschte Rekord dee Rekord ass, deen dëst Evenement beschreift.

De Management-Interface akzeptéiert een Uschlossene Management-Client gläichzäiteg, also integréiert iech mat deem, deen en schonn huet, amplaz en zweeten Observateur unzehänken, dee sech ëm dee selwechte Socket streit.

Handhabt widderholl Evenementer, ouni d’Resultat zweemol ze änneren, a behält net-gepaarte Evenementer fir d’Versöhnung, amplaz se ewechzegeheien. En Disconnect-Callback huet dokumentéiert Liewenszyklus-Bedingunge a kënnt no engem Crash oder engem haarde Stop eventuell ni un, dofir brauch den Design eng Manéier, eng Sitzung duerzestellen, där hiert Endevenement feelt.

Test d’onbequem Fäll bewosst: zwou Erëmverbindungen bannent enger Sekonn, zwou Daemon-Instanzen, eng Verbindung, där hir Veraarbechtung feelgeschloe huet, an en Daemon-Neistart an der Mëtt vun enger Sitzung. E Schlëssel, deen all véier iwwersteet, ass e Schlëssel, deem een traue kann.

Ähnlech Artikelen