Sessionsgräns för ett delat VPN-konto: varför en enhet tappar anslutningen
En delad inloggning når sin gräns för samtidiga sessioner och en enhet tappar anslutningen. Läs klientens meddelande, räkna sessionerna på serversidan och rätta sedan identitetsmodellen.
Du lägger till en andra bärbar dator på kontot som redan körs på telefonen, och telefonens tunnel faller inom en minut. Eller så slutför den nya enheten aldrig anslutningen, och klienten slutar på ett policymeddelande i stället för en tidsgräns. Nätverket är i ordning i båda fallen; beslutet fattades ovanför det. En delad inloggning är en identitet, och de flesta VPN-tjänster räknar den identiteten i stället för antalet enheter du äger. Jag arbetar från klientens skärm och utåt, eftersom den vanligtvis visar vilket lager som avvisade dig.
Läs klientens meddelande innan du rör nätverket
Tre fel ser likadana ut och är det inte. En tidsgräns betyder att dina paket inte nådde någonstans. Ett TLS- eller certifikatfel betyder att slutpunkten svarade men handslaget misslyckades. En avvisning av autentisering eller policy betyder att gatewayen läste dina uppgifter och sedan avvisade dem. Bara det tredje hör till en historia om sessionsgräns, så fastställ det först.
OpenVPN-klienter behåller de intressanta raderna i sin loggpanel. Rulla till det senaste anslutningsförsöket och inte till upprepningsloopen som följer, och leta efter AUTH_FAILED eller en skickad orsakstext. Klienten rapporterar ofta en allmän avvisning utan förklaring, så nästa steg är servern, inte klientens inställningar. Leverantörernas appar är värre: ett meddelande om enhetsgräns är användbart, men en anslutning som kollapsar efter två sekunder är ett policybeslut, inte ett dåligt lösenord. Skriv ned enhetens namn och den exakta tiden i vilket fall som helst; en operatör kan matcha paret mot en åtkomstpost på sekunder.
Räkna sessioner där servern räknar dem
Räknaren som betyder något bor på gatewayen. OpenVPN skriver en statusfil när servern startas med --status, och listar varje ansluten klient med sitt gemensamma namn, verkliga adress och trafikräknare.
cat /var/log/openvpn-status.log
# or query the management socket directly
echo "status 2" | socat - UNIX-CONNECT:/run/openvpn/server.sock
Två rader med samma gemensamma namn är två levande sessioner under ett certifikat. Som standard behåller OpenVPN inte båda: utan --duplicate-cn ersätter en andra anslutning med samma certifikat den första, och den äldre enheten förlorar sin tunnel. Den ersättningen är signaturen för en identitetsgräns. Slumpmässig paketförlust kopplar inte artigt från exakt en enhet i samma ögonblick som en annan dyker upp.
WireGuard har ingen sessionstabell att inspektera. wg show wg0 skriver ut peers och deras senaste handslag, och varje registrerad enhet är en peer med sin egen nyckel. Ett delat konto där är en konfigurationsfil kopierad till flera maskiner, och gränsen kommer från det som delar ut de konfigurationerna: en leverantörsportal, ett antal platser eller en regel knuten till din offentliga adress. OpenVPN 2.6-handboken dokumenterar serverinställningarna om du driver din egen gateway.
Skilj de fyra gränser som gömmer sig bakom ett enda meddelande
De flesta ärenden om delat konto är ett av fyra tillträdesbeslut. Klienten kan inte skilja dem, men mönstret för vilken enhet som misslyckas kan.
Samma identitet, andra anslutningen. Den nya enheten fungerar och den gamla dör i samma ögonblick. Det är en samtidighetsregel per identitet som gatewayen eller kontosystemet upprätthåller. Ingenting är trasigt; tjänsten gör det som dess policy säger.
Antal platser eller enheter i abonnemanget. De första enheterna förblir anslutna och nästa avvisas medan de andra fortsätter. Kontrollera leverantörens enhetslista innan du ändrar en klient, eftersom en licensgräns inte kan åtgärdas från klientsidan.
En gräns knuten till din offentliga adress. Två bärbara datorer bakom en enda hemrouter misslyckas medan samma inloggning fungerar från en telefonhotspot. Flytta den andra enheten till ett annat nätverk för att testa. Om den ansluter där ser du på en regel per adress eller en NAT-regel, inte kontots antal.
Ett maximum för hela servern. Alla på gatewayen misslyckas under samma hektiska timme, även konton som var i ordning igår. OpenVPN:s --max-clients beter sig så, och det har ingenting med dina registrerade enheter att göra.
Rensa inaktuella sessioner innan du köper fler platser
En session som slutade illa kan fortfarande hålla en plats. RADIUS-redovisning skriver en post när en session börjar och stänger den när sessionen stoppas; när en klient försvinner kommer stoppet aldrig och servern behåller sessionen tills en mellanliggande uppdatering eller tidsgräns löper ut. På en FreeRADIUS-gateway kan du se de öppna posterna:
SELECT username, acctsessionid, acctstarttime
FROM radacct WHERE acctstoptime IS NULL;
En öppen post med gammal starttid och ingen trafik tillhör en enhet som redan är borta. Stäng den via operatörens konsol eller med en frånkopplingsbegäran, innan du antar att gränsen var verklig. Telefoner återansluter när Wi-Fi lämnar över till mobilnätet, och en bärbar dator kan köra en tunnel i operativsystemet plus en till i en leverantörsapp, vilket räknas som två sessioner från en maskin.
Sluta dela en identitet mellan enheter som körs tillsammans
Den varaktiga rättelsen är strukturell. Ge varje enhet sitt eget certifikat med ett unikt gemensamt namn, eller sitt eget konto, och registrera vilken person och maskin som har det. På OpenVPN betyder det ett klientcertifikat per enhet, med --duplicate-cn avstängt om du inte vill ha övertagandebeteende; på WireGuard ett nyckelpar per enhet, genererat där och aldrig kopierat.
Att klona en profil för att kringgå en enhetsgräns bryter återkallelsen: återkallelse av en kopia klipper varje enhet som delar den, och loggen kan inte längre säga vilken maskin som gjorde vad. Om gränsen är kommersiell är den ärliga rättelsen en extra plats; om det är intern policy, be om en andra identitet med samma åtkomsträttigheter.
Verifiera i fast ordning
Testa reparationen på samma sätt varje gång, så att resultatet betyder något.
- Logga ut på varje enhet och bekräfta att serverns aktiva lista är tom; en post som inte rensas är en inaktuell session, inte ett klientfel.
- Anslut enheterna en i taget och följ listan mellan anslutningarna.
- Om två måste köras tillsammans, bekräfta att båda raderna har olika identiteter och att båda håller sitt handslag färskt.
- Upprepa efter en övergång från Wi-Fi till mobilnät, eftersom en återanslutning kan skapa en andra post.
Om den gamla enheten fortfarande faller när den nya ansluter, upprätthåller gatewayen en regel per identitet som du inte har fått undantag för. Ta med enhetsnamnen, tidsstämplarna och listan över aktiva sessioner till operatören; det gör ett vagt klagomål till en policyfråga som de kan svara på.