Унос у датотеци hosts и филтер на рутеру блокирају исти сајт из потпуно различитих разлога, зато један наставља да ради под VPN-ом, а други тихо престаје. Датотека hosts одговара на име пре него што било који пакет напусти машину. Филтер на рутеру прегледа саобраћај који пролази кроз њега. Поставите тунел између те две тачке и други губи преглед, док први ништа не примећује.

Где се име разрешава одлучује све

Свако блокирање почиње питањем: ко претвара име у адресу? На обичном рачунару одговара системски резолвер, који иде по задатом редоследу и обично чита датотеку hosts пре него што упита DNS. На филтрираној мрежи одговор може дати рутер, који упит види само ако га клијент пошаље кроз њега незаштићен. Промените путању и мењате ко сме да одговори.

VPN овде ради две ствари истовремено: помера подразумевану руту и може да наметне сопствени DNS сервер. Било која од те две промене довољна је да разрешавање имена одмакне од уређаја који је спроводио блокирање.

То је механизам иза познате жалбе да филтер ради док се VPN не повеже.

Унос у hosts одговара пре него што тунел постоји

Линију попут 127.0.0.1 www.example.com чита локални резолвер, па се одговор ствара на машини без икакве мреже. Повежите тунел, промените DNS сервер, промените мрежу: унос и даље враћа loopback. Зато је hosts блокирање једино од два које не зависи од места где се VPN завршава.

Његове слепе тачке су једнако локалне. Апликација која носи сопствени резолвер, говори DNS over HTTPS или се повезује на буквалну адресу никада не пита систем, па се унос не узима у обзир. Кеширана адреса у процесу који ради има исти ефекат док се тај процес не рестартује.

Потврдите одговор помоћу getent ahosts на Linux-у или Resolve-DnsName на Windows-у уместо да верујете картици прегледача.

Филтер на рутеру види само оно што кроз њега прође

Филтер садржаја или URL-а на кућном рутеру повезује имена и захтеве који кроз њега пролазе у читљивом облику. Када клијент изгради шифровани тунел до сервера негде другде, рутер види један ток ка том серверу и ништа унутра. Филтер нема име за повезивање, па пропушта саобраћај, и то изгледа као да је филтер заказао, а не као да је заобиђен.

Топологија која ради је друга: рутер сам држи тунел, дешифрује на крају и тамо примењује филтер. У том дизајну филтер седи тамо где се појављује чисти текст.

Ако тунел заврши на лаптопу, рутер је по дефиницији ван заштићене путање, како год правило било написано.

Четири тачке примене и шта свака пропушта

Четири места могу да примене блокирање и свако заказује другачије. Читајте списак као карту покривености, а не као ранг.

  • Датотека hosts или локални резолвер: ради офлајн и под било којим тунелом, али га заобилази уграђени резолвер или тврдо кодирана адреса.
  • DNS филтрирање на VPN пролазу: покрива клијенте који користе наметнути резолвер и промашује клијенте који заобилазе DNS.
  • Правила излаза на пролазу по адреси или SNI-ју: независна од DNS-а клијента, али слепа за имена која не могу да прочитају и за адресе које нису научиле.
  • Управљана политика прегледача или уређаја: јака на управљаном хардверу, одсутна на личним уређајима.

Ниједно од овога није безбедносна граница против одлучног корисника на неуправљаном уређају. То су контроле политике, и искрен опис каже који саобраћај свака заиста покрива.

Изаберите слој који одговара намери: кућна удобност припада уређају, а организационо правило пролазу.

Тестирајте оба стања пре него што кажете да је готово

Покрените исте три команде са повезаним и искљученим VPN-ом: getent ahosts да видите одговор резолвера, nslookup да видите шта упит враћа и curl -I према сајту да видите да ли се веза још довршава. Ако прва врати loopback, а трећа се повеже на праву адресу, нешто је заобишло резолвер и унос у hosts није контрола коју мислите.

На рутеру прочитајте бројаче филтера пре захтева и после њега. Бројач који се никада не помера значи да саобраћај никада није стигао до филтера, и то је одговор рутирања, не одговор правила.

Запишите резултат заједно са топологијом, јер ће следећа промена VPN-а поново померити путању.

Повезани чланци