Інтернет працює лише з увімкненим VPN-застосунком? Перевірте чотири шари
У Windows VPN-застосунок залишає по собі проксі, віртуальний адаптер, маршрути й DNS. Пройдіть чотири шари згори донизу, з командами для Linux і macOS на кожному.
Ви тиждень користуєтеся безкоштовним VPN-клієнтом або розширенням браузера, вимикаєте його — і інтернет зникає. Значок Wi-Fi досі показує з’єднання, інші пристрої на тому ж роутері працюють, і повертають перегляд лише повторне ввімкнення застосунку або його видалення. Ця картина — не шифрування, яке створило залежність. Це налаштування, які застосунок записав там, де тунель не має влади.
Клієнт змінює налаштування, якими тунель не володіє
Клієнт приватності у Windows або macOS зазвичай торкається трьох місць одразу. Він задає системний HTTP-проксі — те саме поле, яке показує «Параметри Інтернету». Він встановлює віртуальний адаптер, часто драйвер TAP, щоб перехоплювати пакети. І він переписує список резолверів, тоді як після натискання «від’єднати» зникає лише тунель.
Розширення браузера — вужча річ. Зазвичай воно змінює власний профіль або проксі, якого дотримується один браузер. Саме тому один браузер може не працювати, тоді як інструменти командного рядка працюють далі, або навпаки: розширення ніколи не мало повноважень торкатися інших шарів. Те, який шар воно змінило, визначає, які інструменти зламаються.
Так чи інакше, застаріле рішення ухвалило програмне забезпечення, яке не мало причин його скасовувати. Тунель був видимою частиною, і він же був єдиною частиною з чистим шляхом завершення. Усе інше — це налаштування у сховищі, яке переживає процес, тож видалення застосунку — єдиний крок, що скасовує всі три одразу. Читання цих сховищ до будь-якого перевстановлення і перетворює симптом на діагноз.
Три залишки, три різні відмови
Перший залишок — проксі, що вказує в нікуди: прапорець проксі в локальній мережі досі стоїть, або URL скрипта конфігурації веде на порт localhost, де більше ніхто не слухає. Браузер пересилає кожен запит на цей мертвий порт і зависає, доки тайм-аут не стане схожим на мертву мережу. Другий — адаптер, який досі володіє маршрутом за замовчуванням, бо пристрій TAP-Windows або маршрутизаційний драйвер постачальника залишається справжнім інтерфейсом після видалення. Він зберігає наданий йому маршрут, і трафік зникає в тунелі, якого немає. Жоден із залишків не оголошує про себе; обидва виглядають точно як аварія.
Третій — DNS, і він відмовляє раніше за два попередні. Якщо список резолверів містить лише сервери, доступні через тунель, кожен запит спливає за тайм-аутом ще до того, як запитано бодай одну сторінку, тож браузер повідомляє про недосяжний сайт, а не про мертвий проксі. Який би з них у вас не був, жоден не є аварією в мережевому сенсі. Кожен — це залишок, який ніхто не скасував, і кожен лагодиться в іншому місці.
Пройдіть чотири шари
Починайте найближче до застосунку і рухайтеся вниз, бо шари відмовляють саме в такому порядку видимості. Змінюйте по одному шару за тест і повторюйте тест після кожного. Скидання всього одразу зазвичай повертає перегляд і залишає вас без відповіді, який саме залишок був причиною, тож наступне встановлення відтворить ту саму загадку. Порядок такий: проксі, адаптери, маршрути, резолвери.
У Windows кожна перевірка — це одна команда, що входить до складу операційної системи, тож нічого не треба встановлювати. Виконуйте їх по черзі й тримайте вивід разом, бо чотири відповіді мають сенс лише поряд. Вони показують проксі, адаптери, маршрути IPv4 і список резолверів саме в такому порядку:
netsh winhttp show proxy
Get-NetAdapter
route print -4
Get-DnsClientServerAddress
Linux і macOS потребують власних команд, і вони не взаємозамінні. У Linux маршрути беруть з ip route, а резолвер — з resolvectl status там, де ним володіє systemd-resolved, з відкатом до cat /etc/resolv.conf. У macOS маршрути беруть з netstat -rn, резолвери — з scutil --dns, а системний проксі — з scutil --proxy. Читач на macOS, який виконає ip route, отримає command not found, а /etc/resolv.conf там — згенерована заглушка, а не авторитетна конфігурація. Перевіряйте платформу раніше, ніж шар, інакше перша команда стане висновком.
Для кожного шару поставте одне питання: чи це значення досі вказує на щось, що існує, коли застосунок закритий? Проксі на мертвому порту, адаптер без тунелю, маршрут за замовчуванням через вимкнений інтерфейс і резолвер усередині тунелю — усі відповідають «ні». Будь-яке одне «ні» вже пояснює симптом, тому й важливо змінювати по одному за тест.
Проксі — це не тунель
Проксі приймає запит, забирає його деінде й повертає відповідь, а отже знає пункт призначення і бачить усе, чого сайт сам не зашифрував. Він не переносить інші протоколи. Він не захищає шлях, якщо пункт призначення вже не використовує TLS. І його може змінити будь-що, що його встановило, без вашої участі.
Ця відмінність змінює питання, яке варто ставити. Коли проксі залишається, з’ясуйте, яка програма досі керує вашим браузером, а не те, чи тунель піднятий. Тунель може бути цілком здоровим і цілком непричетним до відмови.
Якщо хочете знати, що такий клієнт насправді зробив, спостерігайте за ним, а не читайте його панель. Process Monitor записує, яких ключів реєстру та файлів він торкається, а перехоплення пакетів показує, куди пішов його трафік. Обидва — звичайні інструменти, і обидва відповідають на питання про залишок краще за будь-який індикатор стану. Жоден не вимагає, щоб застосунок ще працював.
Приберіть компонент, а не докази
Стійке виправлення — прибрати те, що записало налаштування. Видаліть застосунок, видаліть доданий ним віртуальний адаптер, очистіть проксі та список резолверів, потім перезавантажтеся й перевірте, коли застосунок усе ще не встановлено. Якщо перегляд працює в цей момент, ви знайшли причину, а не обхідний шлях. Запишіть, який шар був застарілим, бо той самий постачальник схильний двічі випускати ту саму помилку.
Якщо симптом повертається після встановлення наступного клієнта, пройдіть чотири шари знову, перш ніж вирішувати, що служба щось зламала. Докази зазвичай досі там, в одному з чотирьох місць. Другий застосунок не створює п’ятого шару; він змінює один із чотирьох.
Перевстановлення скидає проксі, але не застарілий адаптер, і може залишити два резолвери у списку. Саме через цю асиметрію «видалити й перевірити» краще за кнопку «скинути все». Це також дає вам базовий рівень для порівняння наступного разу, коли з’єднання впаде.