У цій статті не розглядається повне налаштування DPI і все разом пов'язане, а наукова цінність тексту мінімальна. Але в ній описується найпростіший спосіб обходу DPI, який не врахували багато компаній.
Попередження №1: дана стаття несе дослідницький характер, не спонукає нікого щось робити та використовувати. Ідея ґрунтується на особистому досвіді, а будь-які збіги випадкові.
Попередження №2: у статті не розкриваються таємниці Атлантиди, пошуку Святого Грааля та інші загадки всесвіту, весь матеріал знаходиться у вільному доступі і можливо неодноразово був описаний на Хабрі. (я не знайшов, за посилання буду вдячний)
Для тих, хто прочитав попередження, почнемо.
Що таке DPI?
DPI або Deep Packet Inspection — технологія накопичення статистичних даних, перевірки та фільтрації мережевих пакетів, аналізуючи не тільки заголовки пакетів, але й повний вміст трафіку на рівнях моделі OSI з другого та вище, що дозволяє виявляти та блокувати віруси, фільтрувати інформацію, що не задовольняє заданим критеріям. .
DPI, підключений в провайдерську мережу паралельно (не в розріз) або через пасивний оптичний спліттер, або з використанням дзеркалювання трафіку, що виходить від користувачів. Таке підключення не уповільнює швидкість роботи мережі провайдера у разі недостатньої продуктивності DPI, через що застосовується у великих провайдерів. DPI з таким типом підключення технічно може виявляти спробу запиту забороненого контенту, але не припиняти її. Щоб обійти це обмеження і заблокувати доступ на заборонений сайт, DPI відправляє користувачеві, що запитує заблокований URL, спеціально сформований HTTP-пакет з перенаправленням на сторінку-заглушку провайдера, немов така відповідь надіслав сам запитуваний ресурс (підробляється IP-адреса відправника і TCP sequence). Через те, що DPI фізично розташований ближче до користувача, ніж запитуваний сайт, підроблена відповідь сягає пристрою користувача швидше, ніж справжня відповідь від сайту.
Активний DPI
Активний DPI — DPI, підключений до мережі провайдера звичним чином, як і будь-який інший мережний пристрій. Провайдер налаштовує маршрутизацію так, щоб DPI отримував трафік від користувачів до заблокованих IP-адрес або доменів, а DPI вже приймає рішення про пропуск або блокування трафіку. Активний DPI може перевіряти як вихідний, так і вхідний трафік, однак якщо провайдер застосовує DPI тільки для блокування сайтів з реєстру, найчастіше його налаштовують на перевірку тільки вихідного трафіку.
Від типу підключення залежить не тільки ефективність блокування трафіку, але й навантаження на DPI, тому існує можливість не перевіряти весь трафік, а лише:
"Звичайний" DPI
Під «звичайним» DPI розуміється такий DPI, який фільтрує певний тип трафіку лише з найпоширеніших портах цього типу. Наприклад, «звичайний» DPI виявляє та блокує заборонений HTTP-трафік лише на порту 80, HTTPS-трафік на порту 443. Даний тип DPI не відстежуватиме заборонений контент, якщо ви відправите запит із заблокованою URL-адресою на незаблокований IP або нестандартний порт.
"Повний" DPI
На відміну від «звичайного» DPI, цей тип DPI класифікує трафік незалежно від IP-адреси та порту. Таким чином, заблоковані сайти не будуть відкриватися, навіть якщо ви використовуєте проксі-сервер на іншому порту і незаблокованій IP-адресі.
Використання DPI
Щоб не знижувати швидкість передачі даних, потрібно використовувати «Звичайний» пасивний DPI, який дозволяє ефективно? блокувати будь-які? ресурси, за умовчанням конфігурація виглядає так:
HTTP фільтрувати лише на 80 портах
HTTPS лише на 443 порту
BitTorrent тільки на 6881-6889 портах
Але проблеми починаються, якщо ресурс буде використовувати інший порт, щоб не втрачати користувачівтоді доведеться перевіряти кожен пакет, для прикладу можна навести:
HTTP працює на 80 та 8080 порту
HTTPS на 443 та 8443 порту
BitTorrent на будь-якому іншому діапазоні
Через це доведеться або перейти на активний DPI, або використовувати блокування за допомогою додаткового DNS-сервера.
Блокування за допомогою DNS
Одним із способів заблокувати доступ до ресурсу є перехоплення DNS-запиту за допомогою локального DNS-сервера та повернення користувачеві IP-адреси заглушки, а не необхідного ресурсу. Але це не дає гарантований результат, оскільки існує можливість запобігти заміні адреси:
Варіант 1: Редагування файлу hosts (для робочого столу)
Файл hosts є невід'ємною частиною будь-якої операційної системи, що дозволяє використовувати його. Для доступу до ресурсу користувачеві потрібно:
Дізнатися IP-адресу потрібного ресурсу
Відкрити для редагування файл hosts (потрібні права адміністратора), розташований в:
Linux: /etc/hosts
Windows: %WinDir%System32driversetchosts
Додати рядок у форматі: <ім'я ресурсу>
зберегти зміни
Перевага даного методу – його складність та вимоги наявність прав адміністратора.
Варіант 2: DoH (DNS over HTTPS) або DoT (DNS over TLS)
Дані методи дозволяють захистити від заміни DNS-запиту за допомогою шифрування, але реалізація підтримується не всіма додатками. Розглянемо простоту налаштування DoH для Mozilla Firefox версії 66 з боку користувача:
Хоча цей спосіб складніший, він не вимагає наявності прав адміністратора у користувача, а також існує безліч інших способів захисту DNS-запиту, які не описані в цій статті.
Варіант 3 (для мобільних пристроїв):
Використання програми від Cloudflare для Android и IOS.
Тестування
Для перевірки відсутності доступу до ресурсів було тимчасово викуплено домен, заблокований біля РФ:
Сподіваюся, дана стаття буде корисною і спонукає не тільки адміністраторів докладніше розбиратися в темі, але й дасть розуміння, що ресурси завжди будуть на стороні користувача, а пошук нових рішень має бути для них невід'ємною частиною.
Доповнення поза статтеюТест на Cloudflare неможливо пройти в мережі оператора Tele2, а правильно налаштований DPI блокує доступ до тестового майданчика.
PS Поки що це перший провайдер, який правильно блокує ресурси.