Ключът за защита е включен, приложение е умишлено изключено от тунела и двете изисквания вече си противоречат. Едното казва, че нищо не може да излезе освен през тунела, другото — че тази програма трябва да минава директно. Всеки клиент решава този конфликт различно, а страницата с настройки рядко обяснява кое правило печели. Опишете политиката за всяко приложение, преди да се доверите на който и да е етикет.

Две политики, една машина

Ключът за защита е обещание за отказ: когато тунелът не защитава трафика, трафикът спира. Разделеното тунелиране е обещание за избор: тези програми или дестинации използват тунела, а онези не. Второто обещание създава трафик, за който първото трябва да реши. Нито едно обещание не е грешно; просто са ги писали различни хора за различни заплахи.

Възможни са три изхода и само един от тях е това, което е имал предвид внедряващият. Изключеното приложение може да остане директно по време на прекъсване, което спазва разделянето и нарушава ключа за защита. Може да бъде блокирано с всичко останало, което спазва ключа за защита и нарушава разделянето. Или може да бъде блокирано само понякога, в зависимост от това как платформата оценява правилото след изчезване на интерфейс. Последният случай е този, който генерира заявки.

Напишете списъка с приложения преди правилото

Избройте програмите, които трябва да използват тунела, тези, които трябва да минават директно, и имената или дестинациите, които никога не трябва да се появяват в нито един от двата списъка. Включете отделно поведението на резолвера и страната IPv6, защото и двете могат да следват различна политика от трафика на страниците.

Правилата за отделни приложения обикновено съвпадат с изпълним файл или пакет, а не с профил вътре в него. Профилът на браузъра, поверителният прозорец и разширението не носят собствена мрежова идентичност, затова наследяват каквото е получил процесът. Помощен процес, стартиран от този браузър, може изобщо да не наследи същото правило.

Нужни са два списъка, не един: какво трябва да носи тунелът и какво при никакви обстоятелства не бива да пътува извън него. Приложение, което е в двата, е конфликт на изисквания, а не детайл от реализацията, и трябва да бъде решен преди конфигурирането на клиента.

Какво прави клиентът при прекъсване

Някои реализации блокират изключените приложения по време на прекъсване и възстановяват достъпа при повторно свързване. Други запазват директния път през цялото време, което е в съответствие с разделянето и е по-слабо като свойство за безопасност. Заключването на ниво платформа може напълно да отмени избора на клиента за отделни приложения. Тази разлика не е козметична, защото решава дали изключеното приложение е изключение от политиката, или дупка.

Винаги включеният VPN в Android с опция за блокиране на връзките без VPN е най-ясният случай, защото платформата налага заключването, а не клиентът, и изключеният пакет се блокира с всичко останало, докато тунелът е спрян. Настолен клиент, който прилага изключения за отделни приложения в собствения си драйвер, обикновено оставя изключения процес на физическия интерфейс, защото никога не е притежавал трафика на този процес. И двете поведения са защитими и само едно от тях отговаря на изискване, че изключеното приложение трябва да остане използваемо. Питайте кой компонент налага правилото, преди да тълкувате резултата.

Четете поведението за операционната система пред вас, а не настройката със същото име другаде. Интерфейсите за налагане се различават, и една отметка може да означава строго различни неща на настолен компютър и на телефон. Версията също е важна, защото контролът за заключване се е местил между екрани в различните издания на Android, а списъкът с изключения от страна на клиента не е същият контрол като заключването на платформата.

Три момента: тунел включен, тунел изключен, повторно свързване

Използвайте безобидни заявки в три момента: докато тунелът работи, по време на отказа, който ви интересува, и след повторно свързване. Един резултат от браузър не може да установи поведението на изключеното приложение.

curl -sS --max-time 8 https://api.ipify.org
curl -sS --max-time 8 --interface tun0 https://api.ipify.org
dig +short example.com

Адресът на изхода показва кой път е използван, а явният тест на интерфейса показва какво се случва, когато тунелът е единственият наличен изход. Запишете очаквания резултат до всеки ред, преди да стартирате който и да е от тях, иначе изходът ще бъде тълкуван след факта.

Ако изключено приложение остане без връзка, проверете приоритета на политиките, преди да добавите широко разрешение във файъруола, защото тази поправка унищожава разликата, която тествахте. Ако остане директно, потвърдете, че това е документираното изключение, а не случайно отпадане. За строго изискване за цялото устройство скъсете списъка с изключения, докато не може да се тества на ръка.

Подобни статии