Задайте Android DNS сървър за мобилна мрежа blog Kuketz ИТ блог за сигурност
1. Настройките са изрязани
С всяка версия на Android Google допълнително ограничава възможността за адаптиране на DNS сървъра за мобилната мрежа за данни. Не исках да приема това, защото не вярвам на DNS сървърите на моя (клетъчен) доставчик. Доставчиците често регистрират DNS заявки, използват/споделят тази информация с трети страни или цензурират извикванията на определени адреси. Достатъчна причина да преминете към алтернативни DNS сървъри.

Ако искате да следвате тези инструкции, вашето устройство с Android трябва да бъде вкоренено и вече трябва да сте запознати с CustomScripts на 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 и др.).
Ако искате да бъдете информирани за последните публикации, имате няколко възможности да следите блога: