hosts файл срещу филтър на рутера: блокиране на сайт през VPN
Запис в hosts отговаря локално и оцелява при всякакъв тунел. Филтърът на рутера вижда само какво минава през рутера, затова VPN, който завършва на лаптопа, скрива името.
Запис в 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 отново ще измести пътя.