1 votes

Cyanogenmod 7 OpenVPN DNS ne fonctionne pas

Je veux faire passer tout le trafic internet de mon téléphone par mon VPN.

J'ai configuré OpenVPN sur mon htc Desire avec Cyanogenmod 7.2.0.1-bravo via la boîte de dialogue intégrée des paramètres VPN.

Lorsque j'active l'option Redirect-Gateway, la résolution DNS (par exemple google.com) ne fonctionne plus. Donc pas comme les autres où la résolution des noms d'hôtes locaux ne fonctionne pas (ce qui ne serait pas un problème pour moi). L'appareil a toujours une connexion à l'Internet (par le VPN) mais il ne peut plus résoudre les noms de domaine.

Les serveurs de noms semblent correctement configurés (shell adb) :

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

J'ai également testé l'application OpenVPN Settings mais dès que j'ajoute 'redirect-gateway' au fichier de configuration openvpn, j'obtiens le même problème.

Quelle pourrait être la cause de ce problème ?

1voto

zigarrre Points 21

J'ai maintenant trouvé une solution moi-même :

D'abord, cat /etc/resolv.conf n'est pas un moyen valide d'afficher les serveurs DNS utilisés sous Android. Utilisez getprop net.dns1 à la place.

Dans mon cas, le serveur DNS n'était pas le serveur Google tel qu'il a été défini dans la page d'accueil. /etc/resolv.conf Au lieu de cela, il s'agissait d'un de mes fournisseurs d'accès Internet qui n'accepte que les demandes provenant d'adresses IP de son réseau, mais mon serveur OpenVPN se trouve dans un autre réseau.

Pour résoudre ce problème, j'ai simplement modifié /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf un peu :

# 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

Cela forcera le téléphone à toujours utiliser les serveurs DNS de Google pour toutes les connexions (par exemple 3G, WiFi, OpenVPN, ...).

J'ai testé cela depuis quelques semaines maintenant et cela fonctionne parfaitement.

0voto

Justin L Points 1

Je viens de rencontrer le même problème. Tout fonctionne sauf le DNS.

J'ai découvert auparavant que mon fournisseur de téléphonie mobile, Bell, bloque udp 53 vers tout sauf leurs serveurs.

Peut-être que les dns ne passent pas par openvpn sur Android mais que openvpn change les serveurs.

J'ai remarqué que d'autres applications ne passaient pas par openvpn, comme le play store.

-1voto

Steve Points 133

J'ai réussi à le faire fonctionner parfaitement avec l'application 'openvpn for Android' en jouant avec les options fournies dans l'application et sans faire d'autres manipulations... avec 'openvpn connect', il ne fonctionne que pour les applications non market/os après avoir configuré manuellement : setprop net.dns1 xxx à chaque fois après une connexion VPN... J'espère que cela vous aidera.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X