Setați serverul DNS Android pentru rețeaua mobilă blog Blogul de securitate IT Kuketz

1. Setările decupate

Cu fiecare versiune de Android, Google a restricționat în continuare posibilitatea de a adapta serverul DNS pentru rețeaua de date mobile. Cu toate acestea, nu am vrut să accept acest lucru, deoarece am puțină încredere în serverele DNS ale furnizorului meu (celular). Furnizorii înregistrează deseori cereri DNS, utilizează/partajează aceste informații cu terți sau cenzurează apelarea anumitor adrese. Motiv suficient pentru a trece la servere DNS alternative.

serverul

Dacă doriți să urmați aceste instrucțiuni, dispozitivul dvs. Android trebuie să fie înrădăcinat și ar trebui să fiți deja familiarizați cu CustomScript-urile AFWall +. În acest articol vă prezint două soluții diferite care sunt „forțate” folosind seturi de reguli iptables.

2. Android și serverul DNS (mobil)

Dispozitivul dvs. Android are de obicei diverse interfețe de rețea, așa-numitele interfețe. Comunicarea în rețeaua WiFi are loc, de exemplu, prin intermediul wlan0 Interfață, datele pentru rețeaua mobilă sunt transmise prin intermediul interfeței rmnet0 (Desemnarea poate varia) și interfața este pentru conexiuni VPN face0 rezervat.

Pentru interfața wlan0 puteți configura serverul DNS sub setări:

  • Setări → WiFi → O atingere lungă a degetului pe conexiunea WiFi activă → Schimbați rețeaua.
  • Bifați caseta pentru „Afișați opțiunile avansate” și apoi selectați „Static” pentru setările IP.
  • Derulați în jos până găsiți cele două setări „DNS 1” și „DNS 2”.
  • Introduceți un nou server DNS pentru DNS 1 și DNS 2. Iată câteva sugestii pentru servere DNS gratuite și necenzurate fără înregistrare.

Cu toate acestea, pentru interfața mobilă (rmnet0), nu este posibil să reglați serverul DNS printr-un meniu grafic. Cu toate acestea, până la Android 6.0.0, puteți accesa Terminal Ajutor.

2.1 Până la Android 4.3

Până la Android 4.3, serverul DNS pentru interfața mobilă (rmnet0) ar putea fi setat în continuare prin comandă:

De îndată ce apare o nouă conexiune (reconectare) la rețeaua de date mobile, aceste comenzi trebuie executate din nou. Chiar și atunci, a avut sens să lucrăm cu un script personalizat pentru AFWall +, care execută comenzile din nou de fiecare dată când conexiunea de date sau o interfață (LAN, WLAN, date mobile etc.) este modificată și serverul DNS transmis de la furnizorul de telefonie mobilă suprascrie.

2.2 Până la și inclusiv Android 6.0.0

De la Android 4.3 până la versiunea 6.0.0 inclusiv, serverul DNS pentru interfața mobilă (rmnet0) poate fi apoi setat cu o altă comandă (ndc). Cu toate acestea, comenzile variază în aproape fiecare versiune de Android și este dificil să găsești sintaxa corectă. De exemplu, următorul set de comenzi este corect pentru Android 6.0.0:

De fiecare dată când conexiunea este modificată (de exemplu, WLAN -> date mobile), setările sunt suprascrise din nou. Prin urmare, este logic să lucrați cu AFWall + și aici.

2.3 Din Android 6.1.x

De la Android 6.1.x cel târziu, Google a eliminat toate comenzile cu care poate fi influențat serverul DNS mobil pentru interfața rmnet0. Prin urmare, serverele DNS nu mai pot fi schimbate folosind mijloace convenționale, în schimb sunt necesare aplicații speciale precum DNS Changer sau Engelsiz. Cu toate acestea, toate instrumentele menționate au un dezavantaj major: inițiază unul local Tunelurile VPN pentru a influența serverele DNS ale conexiunii celulare - nu sunt și ele open source.

3. iptables și AFWall+

Cu reguli speciale iptables și CustomScript-urile AFWall + era deja posibilă redirecționarea tuturor cererilor DNS către un anumit server DNS - și „ocolirea” serverului DNS mobil:

Dar fragmentul de cod avea un dezavantaj: serverul DNS a fost suprascris pentru toate interfețele, inclusiv pentru rețeaua WLAN de acasă. Acest lucru este deosebit de practic dacă filtrați reclame și trackere în rețeaua dvs. cu un pi-hole sau o soluție similară.

3.1 Soluția 1: propriul dvs. server DNS pentru interfața rmnet0

Soluția este foarte simplă: ori de câte ori o solicitare DNS (portul 53 TCP/UDP) este primită de dispozitiv prin intermediul rmnet0 Interfața pleacă (-o rmnet +), pachetul este trimis la adresa IP 85.214.20.141 - serverul DNS al curajului digital. Nu contează ce server DNS este setat de furnizorul dvs. de telefonie mobilă, următoarele reguli iptables „forțează” interogarea către serverul DNS la alegere pentru interfața mobilă:

3.2 Soluția 2: propriul dvs. server DNS pentru rețeaua WLAN de acasă

Soluția 1 funcționează perfect, dar, în opinia mea, are un mic dezavantaj: dacă vă conectați la rețele WLAN terțe, de obicei vi se va atribui un server DNS prin DHCP. Personal, însă, aș dori să folosesc și un server DNS la alegere în alte rețele WLAN. Pot realiza acest lucru cu următorul fragment de cod:

Ce se intampla aici Toate cererile DNS care nu provin din rețeaua de domiciliu (192.168.150.0/24) sunt redirecționate către serverul DNS al curajului digital. Pentru ca acest lucru să funcționeze cu adevărat, rețeaua WLAN externă nu trebuie, desigur, să utilizeze același interval de adrese IP (192.168.150.0/24) ca rețeaua dvs. de acasă. Cu toate acestea, dacă o face, atunci toate cererile DNS sunt transmise pur și simplu către serverul DNS transmis de DHCP - deci nici o pauză în aer.

Cu această variantă, solicitările DNS din rețeaua mobilă merg întotdeauna la serverul DNS pe care l-ați definit. Soluția 2 se asigură practic că serverul DNS pe care îl doriți este utilizat și în alte rețele WLAN.

Mulțumesc lui Marco din camera XMPP, care a adus o contribuție decisivă la această a doua soluție.

Notă

3.3 Verificarea serverului DNS

Seturile de reguli iptables pentru scriptul personalizat al AFWall + trebuie apoi verificate. În cele din urmă, există o singură variantă care funcționează întotdeauna corect: conectați-vă smartphone-ul Android la computer cu ajutorul cablului USB și apoi utilizați adb:

Pe consolă vi se vor afișa toate pachetele care intră și ies prin portul 53. Acest lucru vă permite să identificați în mod clar serverul DNS utilizat în rețeaua mobilă - dacă rmnet0 este activ și wlan0 este inactiv:

Și, de asemenea, în WLAN - dacă wlan0 este activ și rmnet0 este inactiv:

O altă variantă sunt serviciile online, care, totuși, nu oferă întotdeauna rezultatul corect:

4. Concluzie

Soluția 1 ar trebui să funcționeze pe toate dispozitivele care au acces la iptables. Deci, nu trebuie să vă deranjați cu comenzile terminale pe versiunile mai vechi de Android, ci puteți utiliza pur și simplu iptables sau AFWall + în combinație cu CustomScripts.

Din Android 6.1.x, din câte știu în prezent, nu aveți altă opțiune decât să suprascrieți serverul DNS mobil al furnizorului dvs. de rețea mobilă utilizând seturile de reguli iptables prezentate. Personal, folosesc soluția 2 și am încorporat-o și în AFWall + CustomScript.

Surse de imagine:

Despre autor

Numele meu este Mike Kuketz și scriu acest blog la Securitate- și relevante pentru protecția datelor Facerea subiectelor mai ușor de înțeles și accesibilă tuturor.

În munca mea independentă ca Pentester (Kuketz IT-Security) Mă strecor în rolul de "hacker" și caut puncte slabe în sistemele IT, aplicațiile web și aplicațiile. În plus, eu sunt Lector pentru securitatea IT la universitatea duală din Karlsruhe și, printre altele, ca autor al revistei de calculatoare c’t.

Blogul Kuketz sau persoana mea sunt reprezentate în mod regulat în mass-media (heise online, Süddeutsche Zeitung etc.).

Dacă doriți să fiți informat despre cele mai recente postări, aveți mai multe opțiuni pentru a urmări blogul: