Kan et OpenVPN-link med statisk nøgle betjene flere klienter?
Tilstanden med statisk nøgle forbinder to jævnbyrdige parter. At tilføje client-to-client gør det ikke til en server til flere klienter; det kræver TLS-tilstand og identitet pr. enhed.
Tilstanden med statisk nøgle forbinder præcis to jævnbyrdige parter, og det er dens design, ikke en begrænsning, nogen glemte at ophæve. client-to-client er en videresendelsesindstilling i servertilstand, så at føje den til en --secret konfiguration ændrer intet ved, hvor mange klienter der kan forbinde. Beslutningen handler ikke om, hvilket flag der skal tilføjes, men om udrulningen har brug for et punkt-til-punkt-link eller en tjeneste til flere klienter. Hvis flere enheder skal forbinde uafhængigt, ændres beskyttelsestilstanden, og hver enhed får en identitet.
To parter, én nøgle og ingen tilstand pr. klient: den form er hele historien om tilstanden.
Hvad tilstanden med statisk nøgle er til
I hemmelig tilstand deler begge parter én nøglefil, og den nøgle beskytter trafikken direkte. Der er ingen håndtryk, ingen certifikatudveksling og ingen session pr. klient, fordi der ikke er klienter i serverforstand, kun to endepunkter.
Tilstanden er stadig nyttig til et fast par maskiner med en dokumenteret nøglerotationsproces, og OpenVPN 2.6 markerer den som forældet netop fordi TLS-tilstand dækker de tilfælde med bedre egenskaber. Det, den ikke kan, er at skelne én forbindende enhed fra en anden, da besiddelsen af filen er hele autentificeringshistorien. At tilføje en tredje enhed betyder at dele den samme nøgle med den, hvorefter de to første ikke længere kan skelne den fra sig selv.
Derfor er grænsen på to parter strukturel og ikke en indstilling, man kan ændre.
Hvorfor client-to-client ikke er den manglende brik
client-to-client styrer, om tilsluttede klienter må udveksle trafik gennem serveren. Den optager ikke klienter, tildeler ikke identiteter og opretter ikke en servertilstand, der ikke blev konfigureret, og i en konfiguration med statisk nøgle er der ingen klientliste for den at styre.
Den anden almindelige forvirring drejer sig om tls-crypt eller tls-auth materiale. En TLS-server kan dele en af disse nøgler på tværs af alle klienter, fordi den beskytter kontrolkanalen i stedet for at bevise, hvem hver klient er. En delt kontrolkanalnøgle i TLS-tilstand er et andet objekt end en delt statisk datanøgle, selv om begge ankommer som filer, der ligner hinanden.
Valget mellem tilstandene kommer ned til to spørgsmål. Skal mere end én enhed forbinde uafhængigt, og har udrulningen brug for tilbagekaldelse pr. enhed? Et nej til begge holder tilstanden med statisk nøgle levedygtig; et ja til en af dem peger på TLS. Der er ingen tredje mulighed, hvor en anden klient optages uden sin egen identitet.
Opbygning af serveren til flere klienter
En server til flere klienter kræver TLS-tilstand, et certifikat på serversiden og en identitet pr. klient. Serverhjælperen opsætter adressepuljen og tilstanden til flere klienter, men den leverer ikke TLS-konfigurationen, tillidsankeret eller klientcertifikaterne, der gør optagelse meningsfuld.
Tilmeld hver enhed gennem den eksisterende certifikatmyndighed i stedet for at kopiere én klients legitimationsoplysninger. Forskellige identiteter er det, der gør tilbagekaldelse, routing pr. klient og brugbare logfiler mulige, og et enkelt delt klientcertifikat får alle tre til at kollapse.
Hvis udrulningen autentificerer brugere gennem en ekstern mappe eller en anden faktor, forbliver det design, som det er. Skiftet til TLS-servertilstand afgør, hvordan parterne beviser sig selv på tunnellaget, og det dikterer ikke konto-backenden. Hold de to beslutninger adskilt, så en ændring i den ene ikke lydløst ændrer den anden.
Beslut derefter videresendelsespolitikken bevidst. client-to-client aktiverer trafik mellem klienter i serverstien i brugerrummet, hvilket mange udrulninger ønsker, og nogle ikke må have. Det er en politikomskifter, ikke en identitetsmekanisme, og den bør slås til, fordi designet kræver det, ikke fordi en vejledning inkluderede den.
Kontrol af, at klienterne virkelig er uafhængige
Forbind to klienter, og bekræft, at de får forskellige adresser og fremgår med forskellige identiteter i serverens log. Tilbagekald derefter den ene, og bekræft, at den anden fortsat virker, hvilket er den praktiske prøve på, at identiteterne ikke blev delt.
Test den tilladte tjeneste mellem parterne og en, der skal forblive blokeret. To vellykkede logins beviser optagelse, ikke isolering, og forskellen er vigtig, når udrulningen skal adskille grupper af brugere.
Læs til sidst servertilstanden fra den kørende konfiguration i stedet for fra hukommelsen. En konfiguration med statisk nøgle og ekstra indstillinger er stadig et punkt-til-punkt-link, og en korrekt TLS-server er den eneste ordning, hvor flere klienter er virkelig adskilte parter.
Hvis loggen viser ét fælles navn for hver enhed, er tilstanden ikke problemet. Tilmeldingsprocessen er.