Тайм-аут з'єднання VPN: DNS, транспорт, узгодження чи вхід
Тайм-аут означає лише те, що минув строк. Порівняйте чотири етапи: розв'язання імені, транспорт, узгодження і вхід, щоб побачити, який завершився останнім.
«Час з'єднання вичерпано» — найменш конкретна помилка, яку може вивести клієнт VPN. Вона означає, що одна операція пропустила свій строк, і кожен етап від розв'язання імені до відповіді на вхід має строк. Клієнти, які показують лише фінальне повідомлення, роблять етапи невідрізнюваними, тому люди збільшують тайм-аут, змінюють порт і перевстановлюють профіль, у цьому порядку, нічого не дізнаючись. Порівнювати етапи швидше: кожна невдача трапляється в іншому місці, і кожна залишає інший вид доказів.
Чотири етапи, чотири різні невдачі
Послідовність фіксована, навіть коли клієнт її приховує: ім'я треба розв'язати, до отриманої адреси треба встановити транспорт, протокол має узгодити свої параметри й ключі, а обліковий запис треба автентифікувати. Посібник OpenVPN з усунення проблем із підключенням для його власного клієнта йде в тому самому порядку, і решта дотримуються його близько. Тайм-аут на другому етапі й тайм-аут на четвертому не мають нічого спільного, крім слова на екрані.
| Stage | Looks like | What it does not prove |
|---|---|---|
| Name resolution | fails in under a second, before any contact | nothing about the server being up |
| Transport | waits the full timeout, then gives up | nothing about the VPN service behind the port |
| Negotiation | connects, then stalls at handshake | nothing about credentials |
| Login | a reply arrives and is rejected or hangs on a prompt | nothing about reachability |
У журналі шукайте останній рядок, який свідчить про поступ, а не останній рядок перед помилкою. Більшість клієнтів виводять щось на кшталт розв'язаної адреси, встановленого сокета, розпочатого рукостискання або запиту автентифікації, і етап, що йде після цього рядка, і є тим, що вичерпав час.
Розв'язання імені зазнає невдачі до будь-якого контакту
Якщо кінцева точка ніколи не розв'язується, клієнту нема до чого підключатися, і жодної транспортної роботи не сталося. Така невдача зазвичай миттєва, а не повний тайм-аут, і це найдешевший спосіб відрізнити її від решти. Перевірте ім'я системним розв'язувачем і другим розв'язувачем, і порівняйте дві відповіді, перш ніж робити висновок, що сервер лежить.
Стара адреса, скопійована з допису на форумі, — часта причина тайм-ауту, що виглядає як проблема сервера, бо адреса тепер належить чомусь іншому або нічому. Використовуйте поточний профіль оператора замість заміни адреси, яка раніше працювала. Відсутність відповіді на ping не є доказом у жодному напрямку: багато кінцевих точок відкидають ICMP, але при цьому цілком добре обслуговують.
Налаштування транспорту чекає на пакет, який не прийде
Коли DNS гаразд, а клієнт усе одно спалює весь тайм-аут, підозрюваний — транспортний рівень. На TCP порт можна перевірити безпосередньо; Test-NetConnection у Windows або nc -vz у Linux скаже, чи щось приймає з'єднання, і це корисніше за ping. На UDP так перевірити не можна, бо на цьому рівні немає рукостискання, яке треба завершити, і ця асиметрія породжує багато хибних висновків.
Те, що доводить TCP-тест, обмежено: служба, яка приймає порт 443, не обов'язково є слухачем VPN, а кінцева точка лише з UDP не має TCP-порту, щоб щось прийняти. Переписування профілю з UDP на TCP не створює слухача на іншому боці; воно лише змінює те, чого чекає ваш клієнт. Якщо мережа фільтрує протокол, зміна дає інший тайм-аут на тому самому етапі.
Портали-«полонені» заслуговують на окрему перевірку на цьому етапі. Поки портал не авторизує пристрій, вихідний трафік іде до порталу, і спроба тунелю просто висить. Спершу завершіть портал у браузері, потім повторіть спробу, і не змінюйте профіль, поки портал ще в очікуванні.
Узгодження й вхід означають, що сервер відповів
Щойно тунель досягає сервера, клієнт починає рукостискання, і характер помилки змінюється. Застрягання тут стосується сумісності, а не доступності: невідповідні версії протоколу, налаштування шифру або каналу даних, яке інша сторона не прийме, або профіль, що очікує функцію, якої сервер не пропонує. OpenVPN змінював свої стандартні налаштування узгодження між основними версіями достатньо часто, щоб профіль, написаний для одного покоління, міг досягти сервера і все одно не піднятися.
Автентифікація — останній етап і найлегший для неправильного прочитання. Явна відмова — це відповідь, що означає: шлях працює, а проблема в ідентичності, сертифікаті або стані облікового запису. Потік єдиного входу через браузер — третій випадок: клієнт чекає на дію, яку ви не виконали, або на браузер, який він не може запустити, і нічого не прийде, поки ви не завершите цей крок.
Порівняйте докази, перш ніж змінювати повтор
Тримайте пристрій і профіль незмінними й змінюйте по одному, починаючи з мережі. Якщо той самий профіль підключається через точку доступу телефона і вичерпує час у Wi-Fi готелю, змінна — це шлях, а не сервер. Якщо він зазнає невдачі всюди, змінна — профіль або кінцева точка. Якщо він зазнає невдачі лише в певний час доби, зафіксуйте позначку часу й порівняйте її з подіями на боці сервера, перш ніж щось припускати про навантаження.
Для служби, якою ви керуєте, вирішальне порівняння — чи доходить спроба взагалі. З'єднання, що досягає слухача й потім застрягає, належить до етапу узгодження; те, що ніколи не з'являється в полі зору слухача, — проблема транспорту або розв'язання, і жодне налаштування повторів його не зрушить. Журнали сервера також відділяють відхилений вхід від тихого скидання, а це різниця між виправленням ідентичності й виправленням брандмауера.
Запишіть версію клієнта, назву профілю, час спроби з її часовим поясом і першу корисну помилку замість останнього рядка про відключення. Видаліть ключі й матеріал з обліковими даними, перш ніж ділитися витягом. Потім зробіть одне осмислене виправлення й повторіть спробу, бо довший строк допомагає лише задокументованій повільній операції і нічого не робить для неправильної адреси чи заблокованого порту.