Nach Update auf ShiftOS 7L: Netzwerk validiert, aber kein Internet / ERR_NAME_NOT_RESOLVED

Xirrr

Member
Original poster
8 August 2021
21
Hallo zusammen,

nach dem Upgrade von ShiftOS 5 (SHIFT6MQ.SOS.5.0.L.20230330-BETA-LIGHT-OTA) auf ShiftOS 7 (SHIFT6MQ.SOS.7.0.L.20250819) habe ich folgendes Problem:
  1. WLAN verbunden, Internet funktioniert technisch (IP-Adresse erhalten, ping, curl OK)
  2. Android zeigt durchgestrichenes Netzwerk-Symbol beim öffnen von Apps (Erdkugel ist durchgestrichen), z.B.
    1. Mail App
    2. Intant Messenger App
    3. Webbrowser App
  3. Browser: ERR_NAME_NOT_RESOLVED (ping löst FQDN auf
  4. Logcat zeigt: validated=true, captivePortal=false
  5. Private DNS Modus ist auf dem Status "off"
Die DNS-Auflösung geht mittels ping, siehe hier:
Bash:
➜  ~ adb shell su -c "ping -c 1 example.com"
PING example.com (23.220.75.245) 56(84) bytes of data.
64 bytes from a23-220-75-245.deploy.static.akamaitechnologies.com (23.220.75.245): icmp_seq=1 ttl=47 time=210 ms

--- example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 210.319/210.319/210.319/0.000 ms
 
Zuletzt bearbeitet:
So, hab mich zusammen mit Claude Sonnet 4.5 tief in das Androidsystem eingegraben und folgende Kenntnisse sind aufgetaucht.
Auf meinem Gerät sind +150 Apps mit der Policy POLICY_REJECT_ALL (policy=262144) eingetragen.
Das ist der Befehl um die gesamte Liste zu erhalten und gleichzeitig zu speichern:
Bash:
adb shell su -c "dumpsys netpolicy | grep 'policy=262144'" > blocked_uids.txt

Mit dem Code könnt ihr auflösen was für Apps sich dahinter verbergen:
Bash:
python3 << 'EOF'
import subprocess
import re

# Lese blockierte UIDs
with open('blocked_uids.txt', 'r') as f:
    uids = re.findall(r'UID=(\d+)', f.read())

print(f"Gefunden: {len(uids)} blockierte UIDs\n")

for uid in uids:  # ALLE statt nur [:30]
    result = subprocess.run(
        ['adb', 'shell', 'su', '-c', f'cmd package list packages --uid {uid}'],
        capture_output=True, text=True
    )

    output = result.stdout.strip()

    if output and ':' in output:
        parts = output.split()
        pkg = parts[0].split(':')[1] if len(parts) > 0 else 'unknown'
    else:
        pkg = 'keine App gefunden'

    print(f"UID {uid}: {pkg}")
EOF

Was ich dann noch getestet habe ist, welchen installer meine Apps haben:
Bash:
adb shell su -c '
for pkg in $(pm list packages | cut -d: -f2); do
  installer=$(dumpsys package $pkg 2>/dev/null | grep "installerPackageName=" | head -1)  
  echo "$pkg: $installer"
done
' 2>/dev/null | grep "installerPackageName=null"

Dann habe ich probiert eine App mit dem Wert installerPackageName=null über F-Droid zu installieren, was es ja in shiftOS 5 L schon installiert wurde. Also die App A deinstalliert und über F-Droid installiert. Taadaa, es klappt. Das waren zwei Tage (2x 4 Stunden) Arbeit. Diese schenke ich euch, liebe Shiftphone-Community ❤️

Achso, ja... wie setzte ich F-Droid auf die Whiteliste von der Policy 262144. Die Variable $fdroid_uid ersetzt ihr durch die aus der vorherigen Python3-Code-Ausgabe.
Bash:
adb shell su -c "cmd netpolicy add restrict-background-whitelist $fdroid_uid"

Jetzt ist die Frage wie das Problem für alle anderen Apps auch gelöst werden soll. Dazu gibt es zwei (aus meiner Sicht) schlechte Lösungsansätze. Vielleicht hat der eine hier im Forum noch weitere Ideen.
Ansatz 1: Entsperren aller Apps von der Policy 262144
Ansatz 2: Jede einzelne App neuinstallieren

Eine andere Frage sollte @amartinz lösen. Hier der Root-Cause Versuch von Sonnet 4.5:

WARUM HAT DAS SHIFTOS-UPDATE DAS AUSGELÖST?​


Theorie 1: Package Manager DB Korruption
Beim Update von Android 13 → 15 wurde /data/system/packages.xml nicht korrekt migriert:
  • Installer-Einträge gingen verloren
  • Android 15 sah installer=null
  • → Setzte automatisch POLICY_REJECT_ALL
Theorie 2: Restricted Mode wurde kurzzeitig aktiviert
Während des Updates war vielleicht kurz restricted_networking_mode=1 aktiv:
  • System scannte alle Apps
  • Markierte Apps ohne Installer als "restricted"
  • Setzte POLICY_REJECT_ALL
  • Mode wurde wieder deaktiviert, aber die Policies blieben

Hier noch der Check für den restricted_netowork_mode:
Bash:
adb shell su -c "settings get secure restricted_networking_mode"
Meine Ausgabe war "null"
 
Zuletzt bearbeitet: