Лимит на сесиите при споделен 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 към мобилна мрежа, защото повторното свързване може да създаде втори запис.
Ако старото устройство все още отпада, когато новото се свърже, шлюзът налага правило за идентичност, за което не ви е дадено изключение. Донесете на оператора имената на устройствата, часовите марки и списъка с активни сесии; това превръща смътно оплакване във въпрос за политика, на който те могат да отговорят.