Iemand vraagt om de VPN-client opnieuw te verbinden, en dat verzoek kan drie verschillende dingen betekenen. Het kan betekenen dat één geauthenticeerde sessie wordt laten vallen, dat elke client te horen krijgt dat een UDP-server weggaat, of dat de daemon zelf opnieuw wordt gestart. Elk heeft een andere impactradius, en de verkeerde keuze maakt van een herstelling voor één gebruiker een storing. De reikwijdte is de beslissing, en het commando volgt daaruit.

Vraag wie geraakt moet worden voordat je vraagt welke sturing je gebruikt.

Eén instantie: de beheerinterface

Een geconfigureerde beheerinterface kan verbonden instanties opsommen en er precies één van laten vallen. Elke sessie draagt een clientidentificatie, en client-kill CID richt zich op die identificatie in plaats van op een gemeenschappelijke naam. Lees de levende identificatie uit de huidige statusuitvoer, want een waarde die uit een ouder logboek is gekopieerd verwijst naar een sessie die niet meer bestaat. Het laten vallen van de instantie beëindigt die verbinding en niets anders.

Het garandeert geen nieuwe verbinding. Of de client terugkomt hangt af van zijn herhaalinstellingen, zijn resterende externe vermeldingen, zijn authenticatievereisten en of de toezichthoudende toepassing nog draait. Een terugkerende client krijgt een nieuwe identificatie, en daarom is het vergelijken van identificaties de enige betrouwbare manier om oud van nieuw te onderscheiden.

Een UDP-uitgangsmelding is geen commando per client

explicit-exit-notify is een configuratierichtlijn over uitgangs- en herstartgebeurtenissen. Op een UDP-client zegt ze tegen de tegenpartij dat de sessie eindigt, en het numerieke argument bepaalt hoe vaak de melding wordt herhaald. Wanneer de server over UDP draait, stuurt hij een herstartcontrolebericht naar zijn verbonden clients, en de gedocumenteerde waarden onderscheiden opnieuw verbinden met dezelfde server van de overstap naar een andere externe vermelding. Dat is een levenscyclussignaal met een breed publiek.

Niets erin selecteert een willekeurige client op een willekeurig moment. Het als een herverbindingsknop behandelen bereikt alle verbonden sessies tegelijk.

Signalen werken op het proces, niet op een sessie

SIGUSR1 vraagt een draaiend proces om zijn verbinding opnieuw te starten zonder de configuratie opnieuw te lezen, en de persistentieopties bepalen wat die herstart overleeft. SIGHUP gaat verder: het leest het configuratiebestand opnieuw en opent zijn bronnen opnieuw. SIGTERM en SIGINT vragen om een ordelijke afsluiting. Dat zijn bewerkingen op procesniveau: op een server met veel clients raken ze elke sessie die het proces draagt, niet degene die in het ticket staat.

Wanneer het proces onder een servicemanager draait, gebruik dan de eigen sturing van de manager in plaats van een signaal te sturen naar een PID die je in een proceslijst vond. Lees de unit om te zien welk signaal de manager stuurt, want een herstart en een herladen doen verschillende dingen met dezelfde daemon.

Bepaal de reikwijdte voordat je de sturing kiest

Drie vragen beslechten het. Wie moet geraakt worden: één gebruiker, elke client van één server, of de daemon en alles wat hij draagt. Wat moet overleven: de configuratie, de tunneltoestand of geen van beide. Wie is gemachtigd: de beheerintegratie, de diensteigenaar of de netwerkoperator die de uitgangsmelding beheert. Beantwoord dat en slechts één sturing past.

Een niet-geauthenticeerde beheerluisteraar toevoegen om een herverbindingsknop te krijgen geeft veel meer dan die knop aan wie de poort kan bereiken.

Verifieer de nieuwe sessie, niet de verbreking

Een verbrekingsgebeurtenis bewijst dat de oude sessie eindigde. Ze zegt niets over een nieuwe die authenticeert, een adres ontvangt, routes installeert of de bron bereikt die de gebruiker nodig had. Controleer de nieuwe identificatie, dan de tunneltoestand, dan één echte bron. Die drie stappen zijn het verschil tussen een herverbinding en een werkende verbinding.

Schrijf de reikwijdte in het wijzigingsregister. 'Ik heb de client opnieuw verbonden' is geen beschrijving wanneer de client een van veertig op een gedeelde server was.

Gerelateerde artikelen