Значок VPN каже підключено: що він насправді повідомляє
Значок підключення може означати лише тунель одного застосунку або одну успішну перевірку. Визначте область, вважайте застарілі показання невідомими й тримайте блокування окремо.
Зелений значок VPN — це твердження про щось, і корисне питання — про що саме. На телефоні він може відображати тунель одного клієнта, транспорт поточної мережі або один успішний запит до внутрішньої сторінки. Ці спостереження надходять із різних джерел, оновлюються з різною частотою й можуть суперечити одне одному на одному екрані. Тому значок може виглядати здоровим, поки браузер перед вами зазнає невдачі.
Визначте область до того, як читати колір, інакше колір відповість на питання, якого ніхто не ставив.
Значок відповідає на вужче питання, ніж ви думаєте
Почніть з однієї заявленої області, наприклад особистого браузера, що використовує схвалений особистий тунель. Тунель робочого профілю не відповідає на це питання для особистого застосунку, а конфігурація VPN для окремих застосунків може виключити саме той браузер, який ви перевіряєте. Локальний клієнт фільтрації може показувати підключення, нічого не надсилаючи на віддалений шлюз, бо його тунель закінчується на пристрої.
В Android мережеві зворотні виклики за індикатором повідомляють про транспорти й можливості мережі. Транспорт VPN каже, яка мережа несе трафік, а не які застосунки чи родини адрес його використовують.
Побудуйте таблицю станів із доказів
Трьох або чотирьох станів достатньо, якщо кожен називає доказ, що стоїть за ним. Стовпці нижче виходять із того, що можна спостерігати, а не з кольору, який ви хочете показати, і це не дає застарілому показанню стати твердженням про успіх.
| Signal actually observed | What it establishes | What remains open |
|---|---|---|
| Target client reports an established tunnel | That client believes its tunnel is up, within its own scope | Other apps, other profiles, other address families |
| Active network exposes a VPN transport | Some tunnel carries the current network | Which app it belongs to and where it exits |
| Probe to a private host returned fresh data | One request reached one destination at one time | Everything the probe does not touch |
| Callbacks stopped or data is older than the refresh window | Nothing current is known | Any statement about the tunnel state |
Останній рядок — той, який на практиці опускають. Індикатор, що зберігає останнє значення, коли його джерело вмирає, повідомляє історію так, ніби це теперішнє, і користувачі читають це як живий стан. Позначайте такий випадок як застарілий або невідомий і вибирайте формулювання, що не передбачає тунель. Потім дозвольте позначці змінитися, щойно джерело зупиниться.
Перевірте, що пристрій справді повідомляє
Фізичне світло або віджет має керуватися підтримуваним спостереженням, а не здогадом про останній відомий добрий стан. Ці команди Android показують транспорт і конфігурацію постійного з'єднання платформи, нічого не встановлюючи.
adb shell dumpsys connectivity | grep -i -A4 vpn adb shell settings get secure always_on_vpn_app adb shell settings get secure always_on_vpn_lockdown adb shell dumpsys netstats | head -40
Ключі постійного з'єднання кажуть, чи налаштована платформа тримати тунель і блокувати трафік без нього; вони не кажуть, що тунель зараз здоровий. Поєднайте це читання конфігурації зі свіжою перевіркою, перш ніж щось буде показано як підключене.
Якщо спостереження не може продовжуватися, екран має вміти це сказати. Лампа, підключена до автоматизації, яка більше не працює, гірша за відсутність лампи, бо вона стверджує стан, якого ніхто не вимірює.
Тримайте попередження окремо від примусу
Автоматизація, що помічає відключення, спрацьовує після події, тому не може бути межею, яка не дає пакету втекти в проміжку. Якщо прямий відкат треба заборонити, налаштуйте політику блокування платформи й перевірте її, навмисно вимкнувши тунель. Індикатор повідомляє; політика примушує.
Завдання попередження, яке вимикає інтерфейси, щоб змусити до дотримання, може також заблокувати пристрій поза потрібним перепідключенням і створити цикл, у якому тунель ніколи не повертається, а попередження ніколи не зникає.
Вирішіть, що має показувати екран, коли спостерігач не впевнений, а потім перевірте цей випадок, зупинивши спостерігача. Якщо відповідь досі підключено, індикатор вимірює минуле.