DNS-Leaks oder erwartbares Verhalten unter Android/Iode?

Hallo zusammen,

ich teste gerade Iode und habe dabei festgestellt, dass die DNS-Anfragen von blockierten Apps sowohl mit Netguard, Rethink DNS, als auch AFwall+ meiner Meinung nach nicht korrekt unterbunden werden. (Die eigentlichen Verbindungen werden anschließend korrekt blockiert)
Bei AFWall+ werden DNS-Anfragen nur dann blockiert, wenn netd deaktiviert und Apps mit Rootrechten keine Verbindung erlaubt ist. Dann sind allerdings wie zu erwarten überhaupt keine DNS-Anfragen erfolgreich.

Jetzt frage ich mich, ist das Verhalten in dieser Form erwartbar oder nicht? Bei meinem bisherigen Handy hatte ich das so in dieser Form nicht und eine App, die durch die Firewall blockiert wurde, konnte auch keine DNS-Anfragen versenden.

Zwei Optionen sind für mich mit den aktuellen Informationen am naheliegendsten.

  1. In Android 12 oder 13 gibt es Änderungen, wodurch DNS-Anfragen mittlerweile anders verarbeitet werden.
  2. Iode verarbeitet durch die integrierte Iode-Firewall DNS-Anfragen anders.

Meine Vermutung ist dass DNS-Anfragen durch eine Systemkomponente in einer weiße erfolgen, wodurch nicht mehr zwischen einzelnen Apps unterschieden wird. Dadurch können nur alle oder keine DNS-Anfragen blockiert werden.
Ist jemanden eine entsprechende Änderung bekannt bzw. weiß wie sich das anpassen lässt, sodass auch DNS-Anfragen wieder auf der Basis von einzelnen Apps blockiert werden?

Also DNS-Anfragen bzw. Reverse-DNS müssen imho doch ausgeführt werden. Wie sollte die Sperrung sonst überhaupt funktionieren? Insbesondere Blocklisten?

Gelegentlich sehe ich nur IP-Adressen im Log, dann funktioniert zumindest temporär DNS nicht.

Wichtiger ist ansich, daß „private DNS“ in Android bei Nutzung von NetGuard ausgeschaltet sein sollte und die richtigen DNS-Server tatsächlich verwendet werden, bei NetGuard sollte immer für beide etwas eingetragen sein, so ich mich erinnere.

Wobei jede App ansich für sich selbst auch Domainnamen wie auch immer auflösen könnte, wenn es die zugelassen Verbindungen erlauben, DNS over HTTPs oder wie das hieß, im Zweifelsfall solltest Du dann wohl in den Logs auch eher nur IP-Adressen sehen, wenn die nicht offiziell aufgelöst werden können.

Ob ich damit richtig liege, weiß ich nicht.

AFWall+ löst IP-Logeinträge nur mittels manueller Interaktion auf und auch da ist es nicht immer möglich, den Domainnamen per AFWall+—Routinen zu erfahren.

Die Reihenfolge sollte nach meinem Verständnis wie folgt sein bzw. war es auf meinem alten Gerät bisher so:

  1. Darf die App A grundsätzlich eine Internetverbindungen aufbauen?
    2.1 Nein, dann verwirf die DNS-Anfrage, die durch App ausgelöst wurde.
    2.2 Ja, sende eine DNS-Anfrage und überprüfe ob die App diese Verbindung aufbauen darf oder sich der Host auf einer Blockliste befindet.
    2.2.1 Nein, die App darf diese Verbindung nicht herstellen und/oder der Host befindet sich auf einer Blocklist. Blockiere die Verbindung.
    2.2.2 Ja, die App darf diese Verbindung herstellen und/oder der Host befindet sich auf keiner Blacklist. Stelle eine Verbindung her.

Nach meinem Verständnis darf eine App, die durch eine Firewall vollständig blockiert werden soll, auch keine DNS-Anfrage senden/auslösen dürfen und der Vorgang muss bereits an Punkt 2.1 aufhören. Eine DNS-Anfrage ist nicht notwendig, weil jede Verbindung anschließend ohnehin blockiert werden würde.
Darf eine App grundsätzlich Verbindungen aufbauen, es sollen aber einzelne Verbindungen z.B. auf Basis einer Blockliste blockiert werden, stimme ich dir zu. Hier muss dann natürlich eine DNS-Anfrage erfolgen, darum geht es mir hier aber nicht.

Private DNS kommen nicht zum Einsatz. Ich kann die DNS-Anfragen bei mir auf dem DNS-Server in den Logs sehen.

Was meinst du damit? Meinst du, dass ich damit die DNS-Anfragen auslösen könnte? Ich habe bisher nicht versucht in AfWall+ einzelne Verbindungen aus den Logs aufzulösen. Die DNS-Anfragen werden auch ausgelöst, wenn in AfWall+ in den Optionen der Punkt Log → Show hostname deaktiviert ist.

Klingt plausibel.

Hier werden bei NetGuard auch DNS-Abfragen ausgelöst, wenn eine App gesperrt ist, z.B. durch aktivierte Daten-Zugriffsbeschränkung, diese aber für eine App nicht freigegeben ist, sollte wirklich unnötig sein, aber wohl Absicht bei NetGuard.

Die FAQ zu NetGuard sagt:

(63) Why is all DNS traffic allowed?

NetGuard blocks unlike any other Android firewall on real domain names. For this a list of domain names and IP address needs to be built. For this purpose, NetGuard allows all DNS traffic, even if the domain name is listed in the hosts file. However, this doesn’t mean traffic to the resolved IP address is allowed.

If you don’t trust the system (Google’s) or your provider’s DNS servers, you can set alternative DNS servers in the advanced settings. Be sure to enter and confirm the addresses and to set two DNS server addresses. If you enter just one DNS server address, it will be used in addition to the default DNS server addresses.

An die Option hab ich gar nicht gedacht, solche automatischen Abfragen will ich ansich auch nicht. Im Log erscheinen nur Verbindungsversuche, die an NetGuard vorbeigehen und gesperrt sind.

PS: Kannst Du bitte mal schauen, wie es ist, wenn „Regeln und Bedingungen anwenden“ für eine App
deaktiviert ist? (ich hab hier always_on_vpn und always_on_vpn_lockdown für NetGuard aktiv)

Leider kein Erfolg.
Da die DNS-Anfragen aber bei den anderen Firewallapps ebenfalls nicht unterbunden werden, gehe ich auch eigentlich nicht von einem spezifischen Problem der Apps aus. Netguard ist hier dann vielleicht die Ausnahme und das Verhalten ist so gewollt. Mindestens bei Afwall+ sollten die DNS-Anfragen aber normalerweise unterbunden werden.