Cyanogenmod 7 OpenVPN DNS funktioniert nicht

Ich möchte den gesamten Internetverkehr meines Telefons über mein VPN leiten.

Ich habe OpenVPN auf meinem htc Desire mit Cyanogenmod 7.2.0.1-bravo über den integrierten VPN-Einstellungsdialog konfiguriert.

Wenn ich die Option Redirect-Gateway aktiviere, funktioniert die DNS-Auflösung (zB google.com) nicht mehr. Also nicht wie bei anderen, wo die Auflösung der lokalen Hostnamen nicht funktioniert (das wäre für mich kein Problem). Das Gerät hat immer noch eine Verbindung zum Internet (über das VPN), aber es kann keine Domänennamen mehr auflösen.

Die Nameserver sehen korrekt konfiguriert aus (adb shell):

# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

Ich habe auch die OpenVPN-Einstellungs-App getestet, aber sobald ich „redirect-gateway“ zur openvpn-Konfigurationsdatei hinzufüge, bekomme ich das gleiche Problem.

Was könnte dieses Problem verursachen?

Antworten (3)

Ich habe jetzt selbst eine Lösung gefunden:

Erstens cat /etc/resolv.confist es keine gültige Möglichkeit, die verwendeten DNS-Server unter Android anzuzeigen. Verwenden Sie getprop net.dns1stattdessen.

In meinem Fall war der DNS-Server nicht der Google-Server, wie in eingestellt /etc/resolv.conf, sondern einer meiner ISPs, der nur Anfragen von IPs in seinem Netzwerk akzeptiert, aber mein OpenVPN-Server befindet sich in einem anderen Netzwerk.

Um dieses Problem zu lösen, habe ich nur /system/etc/dhcpcd/dhcpcd-hooks/20-dns.confein wenig modifiziert:

# Set net.<iface>.dnsN properties that contain the
# DNS server addresses given by the DHCP server.

set_dns_props()
{
    case "${new_domain_name_servers}" in
    "")   return 0;;
    esac

    count=1
    for i in 1 2 3 4; do
        setprop dhcp.${interface}.dns${i} ""
    done

    count=1
    for dnsaddr in ${new_domain_name_servers}; do
        setprop dhcp.${interface}.dns${count} ${dnsaddr}
        count=$(($count + 1))
    done

    setprop net.dns1 8.8.8.8
    setprop net.dns2 8.8.4.4
}

case "${reason}" in
BOUND|INFORM|REBIND|REBOOT|RENEW|TIMEOUT)       set_dns_props;;
EXPIRE|FAIL|IPV4LL|RELEASE|STOP)                unset_dns_props;;
esac

Dadurch wird das Telefon gezwungen, für alle Verbindungen (z. B. 3G, WiFi, OpenVPN, ...) immer die Google-DNS-Server zu verwenden.

Ich habe das jetzt ein paar Wochen getestet und es funktioniert perfekt.

Ich bin gerade auf das gleiche Problem gestoßen. Alles funktioniert außer DNS.

Ich habe zuvor festgestellt, dass mein Mobilfunkanbieter Bell udp 53 für alles außer seinen Servern blockiert.

Vielleicht läuft DNS nicht über OpenVPN auf Android, aber OpenVPN ändert die Server.

Mir ist aufgefallen, dass einige andere Apps nicht über OpenVPN laufen, wie der Play Store.

Ich habe es perfekt mit der 'openvpn for Android'-App zum Laufen gebracht, indem ich mit den bereitgestellten Optionen innerhalb der App gespielt habe und nicht mit anderen herumgespielt habe ... mit 'openvpn connect' funktionierte es nur für Nicht-Market/OS-Apps, nachdem manuell eingestellt wurde: setprop net .dns1 xxx jedes Mal nach einer VPN-Verbindung ... Hoffe, das hilft.