Ліміт сесій спільного облікового запису VPN: чому один пристрій відпадає
Спільний вхід досягає межі одночасних сесій, і один пристрій відпадає. Прочитайте повідомлення клієнта, порахуйте сесії на сервері, а потім виправте модель ідентичності.
Ви додаєте другий ноутбук до облікового запису, який уже працює на телефоні, і тунель телефону падає протягом хвилини. Або новий пристрій так і не завершує підключення, і клієнт закінчує повідомленням про політику замість тайм-ауту. Мережа в обох випадках у порядку; рішення ухвалено над нею. Спільний вхід — це одна ідентичність, і більшість VPN-сервісів рахують саме її, а не кількість пристроїв, які ви маєте. Я працюю від екрана клієнта назовні, бо зазвичай він показує, який шар вас відхилив.
Прочитайте повідомлення клієнта, перш ніж торкатися мережі
Три помилки виглядають схоже і не є однаковими. Тайм-аут означає, що ваші пакети нікуди не дійшли. Помилка TLS або сертифіката означає, що кінцева точка відповіла, але рукостискання не вдалося. Відмова в автентифікації або політиці означає, що шлюз прочитав ваші дані й потім відхилив їх. Лише третя належить до історії про ліміт сесій, тому спершу встановіть саме її.
Клієнти OpenVPN тримають цікаві рядки на панелі журналу. Прокрутіть до останньої спроби підключення, а не до циклу повторів, що йде далі, і шукайте AUTH_FAILED або надісланий текст причини. Клієнт часто повідомляє загальну відмову без пояснення, тому наступний крок — сервер, а не налаштування клієнта. Застосунки постачальника гірші: повідомлення про ліміт пристроїв корисне, але з'єднання, що розвалюється за дві секунди, — це рішення політики, а не поганий пароль. У будь-якому разі запишіть назву пристрою й точний час; оператор може зіставити цю пару із записом доступу за секунди.
Рахуйте сесії там, де їх рахує сервер
Важливий лічильник живе на шлюзі. OpenVPN пише файл стану, коли сервер запускається з --status, і перелічує кожного підключеного клієнта з його спільним ім'ям, реальною адресою та лічильниками трафіку.
cat /var/log/openvpn-status.log
# or query the management socket directly
echo "status 2" | socat - UNIX-CONNECT:/run/openvpn/server.sock
Два рядки з однаковим спільним ім'ям — це дві живі сесії під одним сертифікатом. За замовчуванням OpenVPN не тримає обидві: без --duplicate-cn друге з'єднання з тим самим сертифікатом замінює перше, і старіший пристрій втрачає свій тунель. Ця заміна і є підписом ліміту ідентичності. Випадкова втрата пакетів не відключає чемно рівно один пристрій у ту саму мить, коли з'являється інший.
WireGuard не має таблиці сесій для огляду. wg show wg0 друкує партнерів і їхнє останнє рукостискання, а кожен зареєстрований пристрій — це партнер зі своїм ключем. Спільний обліковий запис там — це файл конфігурації, скопійований на кілька машин, а ліміт походить від того, що роздає ці конфігурації: портал постачальника, кількість місць або правило, прив'язане до вашої публічної адреси. Посібник OpenVPN 2.6 документує серверні параметри, якщо ви самі керуєте шлюзом.
Відокремте чотири обмеження, що ховаються за одним повідомленням
Більшість звернень щодо спільного облікового запису — це одне з чотирьох рішень про допуск. Клієнт не може їх розрізнити, але схема того, який пристрій зазнає невдачі, може.
Та сама ідентичність, друге з'єднання. Новий пристрій працює, а старий помирає тієї самої миті. Це правило одночасності на ідентичність, яке застосовує шлюз або система облікових записів. Нічого не зламано; сервіс робить те, що каже його політика.
Кількість місць або пристроїв у плані. Перші пристрої залишаються підключеними, а наступний відхиляється, поки інші працюють далі. Перегляньте список пристроїв постачальника, перш ніж змінювати клієнт, бо ліміт ліцензії не виправити з боку клієнта.
Межа, прив'язана до вашої публічної адреси. Два ноутбуки за одним домашнім маршрутизатором зазнають невдачі, тоді як той самий вхід працює з точки доступу телефона. Перемістіть другий пристрій в іншу мережу, щоб перевірити. Якщо там він підключиться, ви дивитеся на правило за адресою або правило NAT, а не на кількість облікових записів.
Максимум для всього сервера. Усі на шлюзі зазнають невдачі в ту саму пікову годину, включно з обліковими записами, що вчора були в порядку. --max-clients в OpenVPN поводиться саме так і не має нічого спільного з вашими зареєстрованими пристроями.
Очистьте застарілі сесії, перш ніж купувати більше місць
Сесія, що погано завершилася, ще може тримати місце. Облік RADIUS пише запис, коли сесія починається, і закриває його, коли сесія зупиняється; коли клієнт зникає, зупинка не надходить ніколи, і сервер тримає сесію, доки не спливе проміжне оновлення або тайм-аут. На шлюзі з FreeRADIUS ви можете побачити відкриті записи:
SELECT username, acctsessionid, acctstarttime
FROM radacct WHERE acctstoptime IS NULL;
Відкритий запис зі старим часом початку й без трафіку належить пристрою, який уже пішов. Закрийте його через консоль оператора або запитом на відключення, перш ніж припускати, що обмеження було справжнім. Телефони перепідключаються, коли Wi-Fi передає мобільній мережі, а ноутбук може тримати один тунель в операційній системі плюс ще один у застосунку постачальника, що рахується як дві сесії з однієї машини.
Перестаньте ділити одну ідентичність між пристроями, що працюють разом
Тривале виправлення є структурним. Дайте кожному пристрою власний сертифікат з унікальним спільним ім'ям або власний обліковий запис і запишіть, яка людина й яка машина ним володіє. В OpenVPN це означає один клієнтський сертифікат на пристрій, а --duplicate-cn лишається вимкненим, якщо ви не хочете поведінки перехоплення; у WireGuard — одна пара ключів на пристрій, згенерована там і ніколи не скопійована.
Клонування профілю, щоб обійти ліміт пристроїв, ламає відкликання: відкликання однієї копії відтинає кожен пристрій, що її ділить, а журнал більше не може сказати, яка машина що зробила. Якщо обмеження комерційне, чесне виправлення — додаткове місце; якщо це внутрішня політика, попросіть другу ідентичність із тими самими правами доступу.
Перевіряйте у фіксованому порядку
Перевіряйте виправлення однаково щоразу, щоб результат щось означав.
- Вийдіть на кожному пристрої й переконайтеся, що активний список сервера порожній; запис, який не очищується, — це застаріла сесія, а не дефект клієнта.
- Підключайте пристрої по одному й спостерігайте за списком між з'єднаннями.
- Якщо двоє мусять працювати разом, переконайтеся, що обидва рядки мають різні ідентичності й обидва тримають рукостискання свіжим.
- Повторіть після переходу з Wi-Fi на мобільну мережу, бо повторне підключення може створити другий запис.
Якщо старий пристрій усе ще відпадає, коли підключається новий, шлюз застосовує правило на ідентичність, винятку для якого ви не отримали. Принесіть операторові назви пристроїв, часові позначки й список активних сесій; це перетворює нечітку скаргу на питання політики, на яке вони можуть відповісти.