Встановіть DNS-сервер Android для мобільної мережі blog Блог Kuketz ІТ-безпеки

1. Параметри обрізані

З кожною версією Android Google додатково обмежує можливість адаптації DNS-сервера для мобільної мережі передачі даних. Однак я не хотів це прийняти, оскільки я мало довіряю DNS-серверам свого (стільникового) провайдера. Постачальники часто реєструють запити DNS, використовують/передають цю інформацію третім особам або цензурують виклики певних адрес. Досить причини для переходу на альтернативні DNS-сервери.

встановіть

Якщо ви хочете слідувати цим інструкціям, ваш пристрій Android має бути вкоріненим, і ви вже повинні бути знайомі зі спеціальними сценаріями AFWall +. У цій статті я представляю вам два різні рішення, які "змушені" використовувати набори правил iptables.

2. Android та (мобільний) DNS-сервер

Ваш пристрій Android зазвичай має різні мережеві інтерфейси, так звані інтерфейси. Зв'язок у мережі WiFi відбувається, наприклад, через wlan0 Інтерфейс, дані для мобільної мережі передаються через інтерфейс rmnet0 (Позначення може змінюватися), а інтерфейс призначений для з'єднань VPN do0 зарезервований.

Для інтерфейсу wlan0 ви можете налаштувати DNS-сервер в налаштуваннях:

  • Налаштування → WiFi → Довгим натисканням пальця на ваше активне з'єднання WiFi → Змінити мережу.
  • Установіть прапорець "Показати розширені параметри", а потім виберіть "Статичні" для налаштувань IP.
  • Прокрутіть вниз, поки не знайдете два налаштування "DNS 1" і "DNS 2".
  • Введіть новий DNS-сервер для DNS 1 і DNS 2. Ось кілька пропозицій щодо безкоштовних і нецензурованих серверів DNS без реєстрації.

Однак для мобільного інтерфейсу (rmnet0) неможливо адаптувати DNS-сервер за допомогою графічного меню. Однак до Android 6.0.0 ви могли отримати доступ до термінал допомогти.

2.1 До Android 4.3

До Android 4.3 DNS-сервер для мобільного інтерфейсу (rmnet0) все ще можна було встановити командою:

Як тільки відбувається нове підключення (повторне підключення) до мобільної мережі передачі даних, ці команди повинні бути виконані знову. Вже тоді було сенсом працювати зі спеціальним сценарієм для AFWall +, який виконує команди знову щоразу, коли змінюється з'єднання даних або інтерфейс (LAN, WLAN, мобільні дані тощо) і передається разом із ним DNS-сервер постачальником мобільних телефонів перезаписує.

2.2 До Android 6.0.0 включно

Починаючи з Android 4.3 і до версії 6.0.0 включно, DNS-сервер для мобільного інтерфейсу (rmnet0) можна встановити за допомогою іншої команди (ndc). Однак команди різняться майже в кожній версії Android, і важко знайти правильний синтаксис. Наприклад, такий набір команд правильний для Android 6.0.0:

Щоразу, коли з’єднання змінюється (наприклад, WLAN -> мобільні дані), налаштування знову перезаписуються. Тому є сенс працювати з AFWall + і тут.

2.3 З Android 6.1.x

Пізніше з Android 6.1.x Google видалив усі команди, за допомогою яких можна впливати на мобільний DNS-сервер для інтерфейсу rmnet0. Тому DNS-сервери більше не можна змінювати за допомогою звичайних засобів; натомість потрібні спеціальні програми, такі як DNS Changer або Engelsiz. Однак у всіх згаданих інструментів є один головний недолік: вони ініціюють один місцеві VPN-тунелі впливають на DNS-сервери стільникового зв'язку - і вони також не є відкритими.

3. iptables та AFWall+

За допомогою спеціальних правил iptables та CustomScripts AFWall + вже можна було пересилати всі запити DNS на певний DNS-сервер - і "обходити" мобільний DNS-сервер:

Але фрагмент коду мав один недолік: сервер DNS був перезаписаний для всіх інтерфейсів, включаючи вашу домашню WLAN. Це особливо недоцільно, якщо ви фільтруєте рекламу та трекери у своїй мережі за допомогою пі-отвору або подібного рішення.

3.1 Рішення 1: Ваш власний DNS-сервер для інтерфейсу rmnet0

Рішення дуже просте: кожен раз, коли запит DNS (порт 53 TCP/UDP) надсилається на пристрій через rmnet0 Інтерфейс залишає (-o rmnet +), пакет відправляється на IP-адресу 85.214.20.141 - DNS-сервер цифрової відваги. Не має значення, який DNS-сервер встановлений вашим постачальником мобільних телефонів, наступні правила iptables "змушують" запит до обраного вами DNS-сервера для мобільного інтерфейсу:

3.2 Рішення 2: Ваш власний DNS-сервер для домашньої WLAN

Рішення 1 працює бездоганно, але, на мою думку, воно має невеликий недолік: якщо ви ввійдете в сторонні WLAN, вам, як правило, призначають DNS-сервер через DHCP. Однак особисто я також хотів би використовувати DNS-сервер на свій вибір в інших мережах WLAN. Я можу досягти цього за допомогою такого фрагмента коду:

Що тут відбувається? Усі запити DNS, які не надходять з домашньої мережі (192.168.150.0/24), пересилаються на DNS-сервер Digital Courage. Щоб це справді працювало, зовнішня мережа WLAN, звичайно, не повинна використовувати той самий діапазон IP-адрес (192.168.150.0/24), що і ваша домашня мережа. Однак якщо це так, тоді всі запити DNS просто передаються на DNS-сервер, переданий DHCP, - тому жодної перерви в повітрі.

З цим варіантом запити DNS у мобільній мережі завжди надходять на визначений вами DNS-сервер. Рішення 2 в основному гарантує лише те, що потрібний DNS-сервер також використовується в інших мережах WLAN.

Завдяки Марко із кімнати XMPP, який зробив вирішальний внесок у це друге рішення.

Примітка

3.3 Перевірка DNS-сервера

Потім потрібно перевірити набори правил iptables для власного сценарію AFWall +. Зрештою, існує лише один варіант, який завжди працює коректно: Підключіть свій смартфон Android до ПК за допомогою кабелю USB, а потім використовуйте adb:

На консолі ви побачите всі пакети, які надходять і виходять через порт 53. Це дозволяє чітко визначити DNS-сервер, який використовується в мобільній мережі - якщо rmnet0 активний, а wlan0 неактивний:

А також у WLAN - якщо wlan0 активний, а rmnet0 неактивний:

Іншим варіантом є онлайн-сервіси, які, однак, не завжди дають правильний результат:

4. Висновок

Рішення 1 має працювати на всіх пристроях, які мають доступ до iptables. Таким чином, вам не доведеться турбуватися командами терміналів у старих версіях Android, а ви можете просто використовувати iptables або AFWall + у поєднанні з CustomScripts.

Починаючи з Android 6.1.x, наскільки мені відомо на сьогоднішній день, у вас немає іншого вибору, як перезаписати мобільний DNS-сервер вашого оператора стільникового зв'язку, використовуючи представлені набори правил iptables. Особисто я використовую рішення 2, а також включив його у свій AFWall + CustomScript.

Джерела зображень:

Про автора

Мене звуть Майк Кукетц, і я пишу цей блог безпеки- і захист даних актуальний Спрощення тем для розуміння та доступності кожному.

У моїй фрілансі працює як Пентестер (Kuketz IT-Security) Я переходжу до ролі «хакера» і шукаю слабкі місця в ІТ-системах, веб-додатках та додатках. Крім того, я є Лектор з питань ІТ-безпеки в подвійному університеті в Карлсруе та, серед іншого, як автор для комп'ютерного журналу c't.

Блог Kuketz або моя особа регулярно представляються у ЗМІ (heise online, Süddeutsche Zeitung тощо).

Якщо ви хочете бути в курсі останніх публікацій, у вас є кілька варіантів підписатися на блог: