Ok, tout d'abord une divulgation complète : je suis l'auteur d'une application qui est maintenant sur le Google Play Store et qui vous permet de changer le DNS pour toute connexion mobile sur Android 4.4. L'application nécessite un root , coûte quelques dollars et s'appelle Override DNS . On m'a dit, sur une réponse maintenant supprimée, qu'il est juste de créer un lien vers mon application tant que je l'expose clairement.
Le problème que j'ai trouvé avec cette version d'Android (4.4) est que, apparemment pour des raisons de mise en cache, le comportement du système a été modifié pour rediriger toutes les requêtes DNS vers un démon système appelé netd
(voici un lien vers une présentation liée aux réseaux Android avant 4.4 qui couvre cependant une partie de ces sujets).
La méthode getprop
/ setprop
ne fonctionne plus. Ces valeurs, lorsqu'elles sont modifiées, sont simplement ignorées par le netd
démon.
Il est nécessaire de communiquer directement avec le démon via le /dev/socket/netd
socket. Dans Android, il présente maintenant un outil appelé ndc
qui fait exactement ce travail.
La syntaxe des éléments liés au DNS est la suivante:
# ndc resolver flushif <iface>
# ndc resolver flushdefaultif
# ndc resolver setifdns <iface> <domains> <dns1> <dns2>
# ndc resolver setdefaultif <iface>
L' application devine automatiquement le nom du périphérique réseau et applique ces commandes chaque fois qu'un réseau mobile est activé.
ndc resolver setifdns <iface> <domains> <dns1> <dns2> ...
. Exemple:ndc resolver setifdns eth0 "" 8.8.8.8 8.8.4.4
J'ai "résolu" ce problème en utilisant une règle iptables pour transmettre toutes les connexions du port 53 à un serveur DNS prévu; mon expérience sur Android 4.4.2 avec la tentative de modifier les paramètres DNS en étant connecté à la 3G a été exactement comme Leo l'a décrit; ignorance des valeurs dans getprop | grep dns [0-9] \]: et dhcpd.conf.
La raison en est la suivante: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 Toutes les applications effectuent des recherches DNS via netd via un socket / dev / socket / dnsproxyd unix. Ce fil décrit également pourquoi les propriétés du système sont ignorées.
Pour annuler cela, faites
, trouvez le numéro de ligne qui correspond à udp dpt: 53 à: xxx.xxx.xxx.xxx: 53 et faites
la source
Malheureusement, il peut être impossible de le faire pour l'instant, cependant, il est possible d'essayer DNS Changer . Cela peut fonctionner si vous êtes enraciné, mais il n'y a aucune garantie.
Un bon service DNS à utiliser serait le service DNS public de Google. Cela a tendance à fonctionner très bien pour ce type de problèmes ici.
Si rien de tout cela ne fonctionne, continuez à chercher des réponses. Les développeurs XDA sont un bon site pour des choses comme celle-ci . Ils ont tendance à avoir beaucoup de réponses sur les choses pour Android.
la source
Je suis sur KitKat Cyanogenmod 11, ce qui signifie que je suis enraciné par défaut. Malgré cela, je ne peux que signaler un échec:
1ère méthode:
Quand j'essaye
adb shell
avecpuis testez à quelle adresse IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk est résolu ... J'obtiens une réponse NXDOMAIN, ce qui signifie qu'elle ne provient pas du serveur de noms OpenDNS que j'ai défini (qui retournerait une réponse avec une adresse IP alternative, pour vous servir ajoute).
En faisant
Je verrais seulement ce que j'ai configuré. Cependant, lorsque je passe du WiFi au mobile (3G ou 4G / LTE), je vois des IP que je reconnais comme étant attribuées à mon opérateur de téléphonie mobile. Des applications comme «DNSwitch» ou «DNS Changer» peuvent réinitialiser automatiquement ces résolveurs lors d'un changement de réseau. Cependant, ce qui
getprop
me rapporte, ce n'est toujours pas ce qui fait vraiment la résolution.2ème méthode [a]:
J'ai également essayé de modifier
/system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf
un ensemble de choses fixes (mais sachez que les noms de réseau et le nombre de résolveurs peuvent différer). Sans succès.2ème méthode [b]:
Et
/system/etc/dhcpcd/dhcpcd.conf
j'ai supprimé le paramètre pour accepter les résolveurs lors de la négociation DHCP. Pas de succès non plus.3ème méthode:
Jusqu'à présent, la seule chose qui fonctionnerait un peu est d'utiliser un "pauvre VPN", en utilisant l'application "SSH Tunnel", en utilisant SOCKS4, mais en utilisant cela, je n'ai pas exactement obtenu un bon résultat.
CV:
Il semble que le DNS soit défini ailleurs ou que tous soient transférés (détournés) dès que le réseau est mobile.
Alors, comment ça se fait? Est-ce une autre façon sale de fournir aux opérateurs un outil pour démolir la neutralité du réseau?
Dans votre cas, votre question était à cause de cela. Avez-vous SSH à essayer si SSHTunnel est une solution alternative pour contourner la censure de vos opérateurs?
la source
J'ai rencontré le même problème aujourd'hui, et grâce à la transfusion. J'ai essayé de développer une application " DNS forwarde r" pour le faire. Il ne modifie pas le serveur DNS sur le système, mais transfère les requêtes DNS vers un autre serveur. Cette solution de contournement fonctionne bien pour moi sur Kitkat (Nexus 5 / 4.4.3 et Moto Razr / CM11). J'espère que cela peut aussi aider les autres.
la source
Actuellement, je ne pense pas qu'il existe un moyen de modifier votre DNS sur vos données mobiles. Mais si votre téléphone est enraciné, vous pouvez utiliser des applications comme Définir DNS .
la source