Подмрежа надолу по веригата срещу VPN на работния плот: изключете транзита, не приложенията
Обходът за отделно приложение класифицира само локалния изход. Устройствата зад работната станция се нуждаят от собствена политика за вход, препращане и обратен път.
Една машина, две задачи, една защитна стена: Wi-Fi канал нагоре, малка Ethernet подмрежа зад него и клиент на VPN за работния плот, който приема, че всичко, което напуска машината, е локално. Локално стартираните приложения излизат през локалния изходен път. Устройствата зад работната станция пристигат на Ethernet порта и се нуждаят от решение за препращане. Изключение, написано за първия път, никога не вижда втория и затова браузърът заобикаля тунела, а устройствата — не.
Два пътя на пакетите, една политика
| Origin | Path | Decision owner |
|---|---|---|
| Application on the workstation | OUTPUT then egress | The VPN app's routing policy |
| Device behind the workstation | PREROUTING then FORWARD | The workstation's own forwarding policy |
Първият ред е това, което описват повечето ръководства за split-tunneling. Вторият е конфигурация на рутер, която случайно живее на същата машина. Сливането им в един умствен модел е грешката; те споделят ядро, но не политика. Начертайте двата пътя, преди да редактирате каквото и да е правило, и останалата част от дизайна следва от това кой път липсва.
Таблицата също обяснява защо една машина може да мине един тест и да се провали на друг. Браузърът на работната станция доказва локалния път; лаптоп, включен в Ethernet порта, доказва пътя на препращане. Проверявайте всяка промяна с двете, иначе второто остава непроверено, колкото и пъти да се опресни браузърът.
Какво всъщност класифицира изключването на приложение
Изключването за отделно приложение обикновено работи чрез маркиране на пакети от процес или потребител, след което маркираният трафик се насочва извън тунела. Това е конструкция за локален изход. Пакет от устройство надолу по веригата няма локален процес, затова никога не съвпада със селектора, какъвто и да е селекторът.
Какъвто и да е селекторът, двата списъка не са един и същ списък и точно това е смисълът. Ръководството на Mullvad за Linux описва маркировки, консумирани от неговата защитна стена и политика за маршрутизация, а примерите му са насочени към локалния изход; те не са поддържано описание на рутер надолу по веригата. Копирането им дава машина, която вярва, че има изключване, докато препраща всичко в тунела.
Напишете договора за транзита
Назовавайте заедно префикса на източника надолу по веригата и входния интерфейс, след което ограничете този префикс на входа. Без ограничението всяко устройство, което достига порта, може да заяви изключен адрес и да излезе през обхода. Разглеждайте го като два въпроса: могат ли тези хостове изобщо да използват този канал нагоре и могат ли да достигат работната станция или частните диапазони на тунела? Това са допълнителни разрешения, а не странични ефекти от избора на канал.
Разрешете препращането, след което го филтрирайте. Шлюзът на Linux се нуждае от включено препращане, правила, които позволяват предвидения трафик в двете посоки, и или маршрут за връщане нагоре, или умишлено ограничено преобразуване на източника. NAT сам по себе си не избира канала нагоре и не дава преминаване през филтър; той само пренаписва адрес след тези решения.
Класификацията за транзита трябва да се случи преди решението за маршрут на препращане, което означава етап prerouting, а не output. Правило, поставено след решението, все още може да промени пакета, но не може да промени накъде вече е изпратен.
Маркировките принадлежат на приложението, което ги притежава
Стойностите на маркировките, номерата на таблиците и приоритетите на веригите са част от политиката на VPN приложението, а не вечни константи. Устойчива мрежа, която зависи от вмъкване на правило в таблица, която друга програма регенерира, ще се счупи при следващата актуализация, обикновено по време на повторно свързване, а не в удобен момент.
Добавянето на втора базова верига с присъда accept не отменя непременно drop на по-късна верига. Базовите вериги имат куки и приоритети и първата присъда в подредбата печели; accept в една верига не отменя drop, до който друга верига стига първа. Гледайте пълния набор от правила и реда на политиката за маршрутизация, а не единствения брояч, който се е увеличил. Броячът доказва, че правило е работило, но никога че неговата присъда е приложената.
Интегрирайте или преместете подмрежата
Двата дизайна се различават по това кой притежава обхода. Интегрираният дизайн запазва една машина и една политика, на цената на зависимост от жизнения цикъл на таблиците на VPN приложението и от набор от маркировки, които документацията му може да промени. Отделен рутер за мрежата надолу по веригата премахва тази зависимост напълно: подмрежата има свой канал нагоре, а работната станция остава клиент без роля за препращане.
Изберете втория, когато мрежата надолу по веригата трябва да продължи да работи през актуализациите на VPN, или когато никой не може да тества интегрираната политика след всяко издание. Изберете първия само когато интеграцията е документирана и някой отговаря за нея.
Проверете границата в четири състояния: свързано, повторно свързване, умишлено блокирано и спряно. Проверявайте разрешаването на имена и двете семейства адреси във всяко от тях, защото обход, който изтича DNS, не е изключването, което сте проектирали. Тестът трябва да докаже точната граница, а не просто че една страница се е заредила.