Къде трябва да живее правило на Android защитна стена, когато VPN е включен
Само един VpnService може да е активен, затова приложение за защитна стена и VPN приложение не се подреждат. Проследете една работна заявка и поставете всяко правило там, където трафикът му наистина минава.
Имате едно изречение политика: това приложение може да достига работната услуга и нищо друго. Следващият въпрос изглежда като избор на продукт, но е въпрос за място, защото всяка възможна точка на налагане вижда различна част от трафика на телефона. Шлюзът вижда само това, което влиза в тунела. Филтърът от страна на телефона вижда само това, което му е позволено да наблюдава. Прекарването на една заявка през двете прави отговора очевиден.
Започнете от изречението, не от продукта
Разгърнете изискването, преди да изберете нещо. Това означава пакетът и профилът, в който работи, защото приложение в работния профил е различен потребител от същото приложение в личния профил. Означава местоназначението: хост, порт и протокол, а не име на услуга. Означава пътя на DNS, който разрешава това име, и означава какво трябва да се случи, когато тунелът не е наличен.
Изписана, политиката за примера е четири реда: работното приложение може да достига работната услуга; работното приложение не може да достига нищо друго; другите приложения остават непроменени; без тунел работното приложение се отказва, вместо да пада към пряк път. Всеки ред има собственик и не всички са един и същ собственик.
Стъпка 1: какво може да наложи самият телефон
Защитна стена за Android без root е VpnService, който улавя трафика локално, дори когато зад него няма отдалечен тунел. Android разрешава една активна VPN услуга на потребителски профил, затова второ приложение за защитна стена не се свързва зад първото. То го замества и интерфейсът, който първото приложение филтрираше, изчезва.
Затова инсталирането на защитна стена до VPN клиент рядко дава комбинацията, която хората очакват. Ако защитната стена стартира и VPN се изключи, нищо не е комбинирано; двете са разменили местата си. Замяната на интерфейс не е сътрудничество и симптомът е тунел, който постоянно пада всеки път, когато другото приложение се отвори.
Поддържани варианти съществуват: филтриране, вградено във VPN клиента, който вече използвате, управляеми платформени контроли чрез контролер на правилата за устройство или работен профил, или архитектура, документирана от доставчика. Всичко друго е експеримент, който трябва да се проверява отново след всяка актуализация на приложение.
Стъпка 2: какво може да наложи шлюзът
След като трафикът бъде дешифриран в далечния край, шлюзът може да ограничи препращаните пакети до одобрени адреси, услуги или удостоверени идентичности на VPN. Това е истинско налагане за всичко, което излиза през него, и е правилното място за ограничаване на достъпа до частни подмрежи.
Това, което не получава, е идентичността на приложението на телефона, прикачена към всеки обикновен IP пакет. Няколко приложения, споделящи един адрес на тунела, са един субект за шлюза, освен ако дизайнът не им дава отделни адреси или отделни удостоверени идентичности. Затова правило за потребител на шлюза не е правило за приложение на телефона, както и да го нарича конзолата за управление.
Стъпка 3: избройте какво никога не пристига
Приложение, изключено от VPN, което се свързва с близко устройство, никога не достига шлюза, затова изходяща защитна стена не може да откаже пакет, който никога не получава. Същото важи за неволен пряк маршрут по време на прекъсване и за входящо излагане в локалната мрежа за достъп. Това са локални граници по определение.
Обратното също е вярно: локално правило, което разрешава връзка, не дава достъп през ACL за частната мрежа на шлюза. Една заявка може да подлежи на двете граници и удовлетворяването на едната не казва нищо за другата.
Стъпка 4: разпределете всяко правило към път
Сложете решението в таблица, преди да конфигурирате каквото и да е, защото празните клетки са мястото, където дизайнът се проваля.
| Път | Кой може да го наложи | Сляпо петно |
|---|---|---|
| Работно приложение към работната услуга, тунелът е активен | ACL на шлюза по адрес и услуга, плюс локална блокировка на другите пътища | Шлюзът не вижда кое приложение е изпратило пакета |
| Работно приложение към други местоназначения, тунелът е активен | Локален филтър, съобразен с приложенията, или шлюзът, ако тези местоназначения са адресирани там | Локалният филтър трябва да е активният VpnService |
| Работно приложение без тунел | Локален отказ, за да не може приложението да поеме пряк път | Изисква филтърът да преживее изчезването на тунела |
| Близко устройство в LAN | Само локална политика | Шлюзът никога не го вижда |
Работещата форма е две граници с две задачи. Локална граница, съобразена с приложения, управлява поведението на телефона, включително директното падане, а границата на шлюза управлява отдалечените ресурси. Страната на шлюза може да разреши работната услуга и да откаже всяка друга частна подмрежа, докато политиката на телефона взема собствено решение за пряк път, който приложението иначе би поело.
Стъпка 5: поддържайте транспорта жив, после проверете
Каквато и локална политика да изберете, тя трябва да разрешава транспорта, който установява и поддържа VPN. Блокирането на този транспорт оставя телефона без тунел и без политика, което не налага нищо последователно и е трудно за диагностика, защото приложението просто няма мрежа.
След това проверете всеки ред от първоначалното изречение, а не общото впечатление: работното приложение достига работната услуга, същото приложение се отказва на друго местоназначение, приложение извън работата се държи както преди, и при спрян тунел работното приложение не пада към пряка връзка. Проверете пътя на DNS отделно, защото частен DNS или криптиран резолвер може да заобиколи филтър, който проверява само адреси.
Ако една от тези стъпки не може да бъде изпълнена на телефона, изискването е въпрос на архитектура, а не настройка на защитна стена. Разделянето на политиката между устройство, което контролирате, и шлюз, който контролирате, обикновено е честният отговор, а документацията за VPN свързаност в Android е мястото, където да потвърдите какво платформата ще и няма да позволи на една услуга.