Limit sesji współdzielonego konta VPN: dlaczego jedno urządzenie wypada
Współdzielone logowanie osiąga limit jednoczesnych sesji i jedno urządzenie wypada. Przeczytaj komunikat klienta, policz sesje po stronie serwera, a potem napraw model tożsamości.
Dodajesz drugi laptop do konta, które już działa na telefonie, i tunel telefonu pada w ciągu minuty. Albo nowe urządzenie nigdy nie kończy połączenia, a klient kończy na komunikacie polityki zamiast na przekroczeniu czasu. Sieć jest w porządku w obu przypadkach; decyzja została podjęta ponad nią. Współdzielone logowanie to jedna tożsamość, a większość usług VPN liczy tę tożsamość, a nie liczbę posiadanych urządzeń. Pracuję od ekranu klienta na zewnątrz, bo zwykle pokazuje, która warstwa cię odrzuciła.
Przeczytaj komunikat klienta, zanim dotkniesz sieci
Trzy awarie wyglądają podobnie i nie są takie same. Przekroczenie czasu oznacza, że twoje pakiety donikąd nie dotarły. Błąd TLS lub certyfikatu oznacza, że punkt końcowy odpowiedział, ale uścisk dłoni się nie udał. Odmowa uwierzytelnienia lub polityki oznacza, że brama odczytała twoje dane i następnie je odrzuciła. Tylko trzecia należy do historii limitu sesji, więc ustal ją najpierw.
Klienci OpenVPN trzymają ciekawe linie w panelu dziennika. Przewiń do ostatniej próby połączenia, a nie do następującej po niej pętli ponowień, i szukaj AUTH_FAILED lub przesłanego ciągu przyczyny. Klient często zgłasza ogólną odmowę bez wyjaśnienia, więc następnym krokiem jest serwer, a nie ustawienia klienta. Aplikacje dostawców są gorsze: komunikat o limicie urządzeń jest przydatny, ale połączenie, które rozpada się po dwóch sekundach, jest decyzją polityki, a nie złym hasłem. W każdym razie zapisz nazwę urządzenia i dokładny czas; operator może dopasować tę parę do zapisu dostępu w kilka sekund.
Licz sesje tam, gdzie liczy je serwer
Licznik, który ma znaczenie, mieszka na bramie. OpenVPN zapisuje plik stanu, gdy serwer jest uruchamiany z --status, i wymienia każdego podłączonego klienta wraz z jego nazwą wspólną, rzeczywistym adresem i licznikami ruchu.
cat /var/log/openvpn-status.log
# or query the management socket directly
echo "status 2" | socat - UNIX-CONNECT:/run/openvpn/server.sock
Dwa wiersze z tą samą nazwą wspólną to dwie żywe sesje pod jednym certyfikatem. Domyślnie OpenVPN nie utrzymuje obu: bez --duplicate-cn drugie połączenie z tym samym certyfikatem zastępuje pierwsze, a starsze urządzenie traci tunel. To zastąpienie jest sygnaturą limitu tożsamości. Przypadkowa utrata pakietów nie rozłącza uprzejmie dokładnie jednego urządzenia w chwili, gdy pojawia się inne.
WireGuard nie ma tabeli sesji do wglądu. wg show wg0 wypisuje peerów i ich ostatni uścisk dłoni, a każde zarejestrowane urządzenie jest peerem z własnym kluczem. Współdzielone konto jest tam plikiem konfiguracji skopiowanym na kilka maszyn, a limit pochodzi od tego, co te konfiguracje rozdaje: portal dostawcy, liczba miejsc lub reguła powiązana z twoim publicznym adresem. Podręcznik OpenVPN 2.6 opisuje opcje po stronie serwera, jeśli prowadzisz własną bramę.
Oddziel cztery limity, które kryją się za jednym komunikatem
Większość zgłoszeń dotyczących współdzielonego konta to jedna z czterech decyzji o dopuszczeniu. Klient nie potrafi ich rozróżnić, ale wzorzec tego, które urządzenie zawodzi, potrafi.
Ta sama tożsamość, drugie połączenie. Nowe urządzenie działa, a stare umiera w tej samej chwili. To reguła współbieżności na tożsamość, którą egzekwuje brama lub system kont. Nic nie jest zepsute; usługa robi to, co mówi jej polityka.
Liczba miejsc lub urządzeń w planie. Pierwsze urządzenia pozostają połączone, a następne jest odrzucane, podczas gdy pozostałe działają. Sprawdź listę urządzeń dostawcy, zanim zmienisz klienta, bo limitu licencji nie da się naprawić po stronie klienta.
Limit powiązany z twoim publicznym adresem. Dwa laptopy za jednym routerem domowym zawodzą, podczas gdy to samo logowanie działa z hotspota telefonu. Przenieś drugie urządzenie do innej sieci, żeby to sprawdzić. Jeśli tam się połączy, patrzysz na regułę na adres lub regułę NAT, a nie na liczbę konta.
Maksimum dla całego serwera. Wszyscy na bramie zawodzą w tej samej godzinie szczytu, w tym konta, które wczoraj były w porządku. --max-clients w OpenVPN zachowuje się właśnie tak i nie ma nic wspólnego z twoimi zarejestrowanymi urządzeniami.
Wyczyść nieaktualne sesje, zanim kupisz więcej miejsc
Sesja, która skończyła się źle, nadal może zajmować miejsce. Księgowanie RADIUS zapisuje rekord, gdy sesja się zaczyna, i zamyka go, gdy sesja się zatrzymuje; gdy klient znika, zatrzymanie nigdy nie nadchodzi i serwer trzyma sesję, aż wygaśnie aktualizacja pośrednia lub limit czasu. Na bramie FreeRADIUS możesz zobaczyć otwarte rekordy:
SELECT username, acctsessionid, acctstarttime
FROM radacct WHERE acctstoptime IS NULL;
Otwarty rekord ze starym czasem rozpoczęcia i bez ruchu należy do urządzenia, którego już nie ma. Zamknij go przez konsolę operatora lub żądaniem rozłączenia, zanim uznasz, że limit był prawdziwy. Telefony łączą się ponownie, gdy Wi-Fi przekazuje połączenie sieci komórkowej, a laptop może prowadzić jeden tunel w systemie operacyjnym i drugi w aplikacji dostawcy, co liczy się jako dwie sesje z jednej maszyny.
Przestań dzielić jedną tożsamość między urządzeniami, które działają razem
Trwała poprawka jest strukturalna. Daj każdemu urządzeniu własny certyfikat z unikalną nazwą wspólną albo własne konto i zapisz, która osoba i która maszyna go trzyma. W OpenVPN oznacza to jeden certyfikat klienta na urządzenie, a --duplicate-cn pozostaje wyłączone, chyba że chcesz zachowania przejęcia; w WireGuard jedną parę kluczy na urządzenie, wygenerowaną tam i nigdy nie kopiowaną.
Klonowanie profilu, żeby obejść limit urządzeń, psuje odwoływanie: odwołanie jednej kopii odcina każde urządzenie, które ją dzieli, a dziennik nie potrafi już powiedzieć, która maszyna co zrobiła. Jeśli limit jest komercyjny, uczciwym rozwiązaniem jest dodatkowe miejsce; jeśli to polityka wewnętrzna, poproś o drugą tożsamość z tymi samymi prawami dostępu.
Weryfikuj w stałej kolejności
Testuj naprawę za każdym razem w ten sam sposób, żeby wynik coś znaczył.
- Wyloguj się na każdym urządzeniu i potwierdź, że aktywna lista serwera jest pusta; wpis, który się nie czyści, to nieaktualna sesja, a nie błąd klienta.
- Podłączaj urządzenia pojedynczo i obserwuj listę między połączeniami.
- Jeśli dwa muszą działać razem, potwierdź, że oba wiersze mają różne tożsamości i oba utrzymują świeży uścisk dłoni.
- Powtórz po przejściu z Wi-Fi na sieć komórkową, ponieważ ponowne połączenie może utworzyć drugi rekord.
Jeśli stare urządzenie nadal wypada, gdy łączy się nowe, brama egzekwuje regułę na tożsamość, na którą nie dostałeś wyjątku. Zanieś operatorowi nazwy urządzeń, znaczniki czasu i listę aktywnych sesji; to zamienia mgliste skargi w pytanie o politykę, na które może odpowiedzieć.