DNS-фільтр VPN: блокування імен не блокує рекламу
Правило dnsmasq відповідає на імена кодом NXDOMAIN; воно ніколи не читає сторінку. Порівняйте це з тим, що робить блокувальник на боці клієнта, перш ніж обіцяти видалення реклами.
Один рядок dnsmasq може відповісти на ім'я кодом NXDOMAIN, і це весь механізм. Воно ніколи не читає HTML, не перевіряє шлях запиту і не бачить, що застосунок робить із уже відкритим з'єднанням. Тому порівняння з розширенням браузера — це порівняння двох різних завдань. Одне вирішує, чи розв'язується ім'я; інше вирішує, що відбувається після.
Що насправді контролює фільтр імен
Параметр address=/metrics.example/, після останньої скісної риски якого нічого немає, змушує резолвер повертати NXDOMAIN для цього імені та його піддоменів. Порожня адреса — важлива частина: вона не дозволяє надсилати клієнтів на сторонній сервер-заглушку і не видає адресу loopback за справжнє призначення. Посібник 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
Порожня відповідь для заблокованого імені, звичайна адреса для публічного та приватна адреса для внутрішнього разом показують, що фільтрація, розв'язання на вищому рівні та локальні записи працюють. Якщо всі три не спрацюють, ви дивитеся на проблему вищого сервера або слухача, а не фільтра.
Тримайте твердження вузьким у всьому, що публікуєте внутрішньо. Це фільтрація доменів на резолвері, а не перевірка вмісту, не фільтрація шляхів і не обіцянка, що за ніким не стежать. Поряд із правилами вкажіть власника політики, шлях винятку та термін зберігання запитів, бо фільтр, який журналює кожен запит, має власну ціну для приватності.