DNS филтър във VPN: блокирането на имена не блокира реклами
Правило в dnsmasq отговаря на име с NXDOMAIN; то никога не чете страницата. Сравнете това с онова, което прави блокер в браузъра, преди да обещавате премахване на реклами.
Един ред в dnsmasq може да отговори на име с NXDOMAIN и това е целият механизъм. Той никога не чете HTML, не проверява път на заявка и не вижда какво прави приложението със свързване, което вече е отворило. Затова сравнението му с разширение за браузър е сравнение на две различни задачи. Едното решава дали дадено име се разрешава; другото решава какво се случва след това.
Какво всъщност контролира филтърът за имена
Опцията address=/metrics.example/, без нищо след последната наклонена черта, кара резолвера да върне NXDOMAIN за това име и неговите поддомейни. Оставянето на адреса празен е важната част: така клиентите не се изпращат към несвързан заместващ сървър и адресът за обратна връзка не се представя за истинската дестинация. Ръководството на dnsmasq описва тази форма като отрицателен отговор, а не като пренасочване.
Всичко, което правилото може да направи, следва от това единствено решение. Клиент, който пита този резолвер, получава отрицателен отговор; клиент, който пита друг резолвер, получава каквото онзи резолвер каже. Филтърът не знае нищо за пътя, низа на заявката или акаунта, които приложението би използвало.
Тази подробност е важна, защото едно име на хост често служи за няколко цели. Точките за вход, изображенията и проследяването могат да споделят домейн и правило, което премахва цялото име, може да премахне и работен процес. Политиката на ниво име трябва да приеме този компромис или да избере по-тесни имена.
С какво се различава блокерът от страна на клиента
Разширението за браузър вижда заявката, преди тя да тръгне, затова може да съпостави път на URL, да отмени конкретна заявка и да скрие елемента, който би показал резултата. То може да разреши example.com/article, докато отказва example.com/ads/, което никой DNS отговор не може да изрази. Този поглед на ниво път е способността, която резолверът просто няма. Затова и списък с филтри, създаден за един инструмент, рядко се държи по същия начин в другия.
Цената е обхватът. Тази защита живее в един браузър, в един профил, на едно устройство и изчезва, когато потребителят премине към друго приложение. DNS филтър, настроен на шлюза, покрива всяко устройство, което използва резолвера на шлюза, включително устройства, на които не може да се инсталира разширение.
Нито една от двете подредби не е пълна сама по себе си. DNS филтърът не може да премахне идентификатор, който страницата вече е изпратила, а разширението за браузър не може да защити приложение, което никога не го зарежда.
Пътят на резолвера решава дали нещо от това се прилага
VPN може да обяви DNS сървър и въпреки това да не получава всяка заявка. Браузър с настроен криптиран DNS, приложение със собствен резолвер или устройство по мрежов път, който изключва шлюза, всички ще търсят другаде. Мобилните платформи все по-често предлагат настройка за частен DNS, която тихо отменя това, което предлага тунелът.
Затова тествайте пътя, а не политиката. Попитайте предвидения резолвер директно от шлюза, после го попитайте от клиент и сравнете, а след това наблюдавайте дали име, което трябва да бъде блокирано, наистина се проваля в приложението, което потребителят изпълнява.
Кешираните отговори и отворените сокети правят това шумно. Страница, която вече е заредила ресурсите си, ще продължи да работи след промяната на правилото, затова нова връзка е по-добър тест от презареждане на стар раздел.
Тествайте и двете посоки, преди да обявите резултат
Използвайте умишлено блокирано име от документацията, разрешено публично име и частно име, което услугата изисква:
$ dig +short metrics.example @10.40.0.53
$ dig +short example.com @10.40.0.53
$ dig +short intranet.corp.internal @10.40.0.53
Празен отговор за блокираното име, нормален адрес за публичното и частен адрес за вътрешното заедно показват, че филтрирането, разрешаването нагоре по веригата и локалните записи работят. Ако и трите се провалят, виждате проблем с връзката нагоре или със слушателя, а не с филтъра.
Дръжте твърдението тясно във всичко, което публикувате вътрешно. Това е филтриране на домейни върху резолвер, не проверка на съдържание, не филтриране на пътища и не обещание, че никой не се проследява. Посочвайте собственика на политиката, маршрута за изключения и срока за запазване на заявките редом с правилата, защото филтър, който записва всяко търсене, има своя цена за поверителността.