RADIUS-redovisning kontra lyckad inloggning: vad var och en bevisar
Ett Access-Accept säger att en session får börja. Posterna Start, Interim-Update och Stop säger vad som hände sedan; en sessionsidentifierare binder dem samman.
Två frågor blandas ihop i varje diskussion om VPN-fakturering: fick den här användaren ansluta, och vad gjorde hen egentligen. Den första besvaras av autentisering. Den andra kräver redovisningsposter som börjar, uppdateras och slutar. En lyckad inloggning bevisar den första och säger inget om den andra, därför kan en fungerande RADIUS-autentisering ändå ge en tom användningsrapport.
Två olika frågor
Autentiseringen avgör om en anslutning får börja, och den returnerar en dom plus attribut som en adresspool eller en grupp. Redovisningen registrerar tjänsten som följde, som en följd av händelser knutna till en session.
De färdas över samma protokoll och oftast till samma server, och det är just därför människor antar att det ena innebär det andra.
Inget i en åtkomstbegäran bär sessionens varaktighet, och inget i en Stop-post avgör på nytt om användaren borde ha släppts in. Att behandla dem som separata avtal synliggör integrationsarbetet: den ena vägen behöver ett beslut, den andra en livscykel med början, mitt och slut.
Vad de tre posttyperna ger dig
En Start-post öppnar en session, en Interim-Update rapporterar aktivitet medan den är öppen, och en Stop stänger den. Alla tre bär en sessionsidentifierare så att mottagaren kan knyta dem till en enda tjänstehändelse.
Den identifieraren är den enda tillförlitliga länken mellan dem, eftersom samma användarnamn kan ha flera sessioner i följd eller parallellt. Designa lagringen kring den och inte kring kontonamnet.
Att bekräfta en post är något annat än att lagra den väl. Redovisningsspecifikationen förbjuder bekräftelsen när posten inte kunde skrivas, så ett svar säger faktiskt att mottagaren tog ansvar. Det säger inte att det senare rapporteringsjobbet, instrumentpanelen eller faktureringsexporten använde den korrekt.
Varför användarnamnet inte är sessionen
En person ansluter från en bärbar dator på morgonen och en telefon på eftermiddagen, och båda sessionerna bär samma kontonamn. En Start som anländer utan sin matchande Stop kan inte stängas genom att slå upp namnet och välja den äldsta öppna raden.
Den genvägen är hur användningsrapporter får omöjliga varaktigheter.
Håll nätverksåtkomstserverns identitet intill sessionsidentifieraren, eftersom två servrar kan tilldela samma värde i olika sammanhang och en sammanslagning enbart på identifieraren kan förena orelaterade sessioner. När en session slutar stökigt måste avstämningspolicyn besluta hur den ska stängas, och det beslutet hör till designen och inte till en manuell databashändring som görs en gång i månaden.
Var PAM passar och var det inte gör det
OpenVPN:s autentiseringsplugin anropar PAM:s autentiserings- och kontohanteringssteg. Kontosteget kontrollerar behörighet; namnet betyder inte användningsredovisning, och pluginen styr inte PAM:s session-öppnings- och stängningshakar.
Vissa PAM RADIUS-moduler kan skicka redovisningsposter via dessa sessionshakar, och det fungerar bara när programmet verkligen anropar dem.
Att lägga till en sådan modul i en autentiseringsstack skapar därför inga frånkopplingshändelser. Om du behöver hela livscykeln, välj en integration som äger den: ett plugin eller ett bygge som stöds och som sänder Start, Interim-Update och Stop när anslutningen byter tillstånd. Kontrollera dess underhållsstatus och dokumenterade beteende när mottagaren inte är tillgänglig, eftersom ett plugin som tyst tappar poster ser identiskt ut med ett som aldrig skickade dem. Redovisningsspecifikationen definierar den postsemantik som integrationen måste respektera.
En acceptanskörning som bevisar avtalet
Testa normal anslutning och frånkoppling, sedan återanslutning under samma konto, sedan en klient som försvinner utan att koppla från.
Följ en sessionsidentifierare från skapande genom bekräftelse till lagring, och kontrollera räknarnas riktning, enheter och gränssnitt. Ett omärkt byteantal går inte att granska i efterhand.
Slutligen, bekräfta att en session som servern måste avsluta på grund av tidsgräns representeras på ett sätt som rapporten förstår. Ett avtal som bara täcker prydliga frånkopplingar är ett avtal som brister de dagar du behöver det mest.