Как изменить DNS мобильных соединений на Android Kitkat? -- 4.4-kitkat поле с участием dns пол android Связанный проблема

How to change mobile connections's DNS on Android KitKat?


24
vote

проблема

русский

Я хочу избежать цензуры от моего локального мобильного ISP (он блокирует imgur, например, по неизвестной причине.

Скриншот
скриншот (нажмите изображение для большего варианта)

Я довольно уверен, что я могу обойти это, изменив мои DNS в Google DNS или Opendn, но я не уверен, как выполнить это на Kitkat.

 <код> Info: Device: Nexus 5 Android version: 4.4.2 Device status: rooted   
Английский оригинал

I want to avoid censorship from my local mobile ISP (it blocks imgur, for example, for some unknown reason.

Screenshot
Screenshot (click image for larger variant)

I'm pretty certain that I can circumvent this by changing my DNS to Google DNS or OpenDNS, but I'm not really sure how to accomplish this on KitKat.

Info: Device: Nexus 5 Android version: 4.4.2 Device status: rooted 
     

Список ответов

18
 
vote

ОК, в первую очередь полное раскрытие : Я автор приложения, который сейчас находится в магазине Google Play, и который позволяет вам изменять DNS для любого мобильного соединения на Android 4.4. Приложение требует рута , стоит пару баксов и называется Переопределить DNS . Мне сказали, что теперь удалил ответ, это справедливо ссылаться на мое приложение, пока я понял его четко.

Проблема, которую я нашел с этим выпуском Android (4.4), заключается в том, что, по-видимому, для кэширования, поведение системы было изменено для перенаправления всех запросов DNS к демону систем, называемую <код> netd (вот Ссылка к презентации до сетей Android до 4.4, которые, однако, охватывают часть этих тем).

<код> getprop / <код> setprop метод больше не работает. Эти значения, когда меняются, просто игнорируйтесь <код> netd Daemon.

Необходимо напрямую общаться на демона через <код> /dev/socket/netd сокет. В Android теперь присутствует инструмент под названием <код> ndc , который имеет именно эту работу.

Синтаксис для DNS, связанный с ними, это:

 <код> # ndc resolver flushif <iface> # ndc resolver flushdefaultif # ndc resolver setifdns <iface> <domains> <dns1> <dns2> # ndc resolver setdefaultif <iface>   

the Приложение автоматически догадается до угадания имя сетевого устройства и применяет эти команды каждый раз, когда активируется мобильная сеть.

 

Ok, first of all full disclosure: I'm the author of an app which is now on the Google Play Store and which makes you able to change DNS for any mobile connection on Android 4.4. The app requires root, costs a couple of bucks and is called Override DNS. I was told, on a now deleted answer, that is fair to link to my app as long as I expose it clearly.

The problem I found with this release of Android (4.4) is that, apparently for caching reasons, the system behaviour has been changed to redirect all DNS queries to a system daemon called netd (here's a link to a presentation related to Android networking before 4.4 which, however, covers part of these topics).

The getprop/setprop method does not work anymore. Those values, when changed, get simply ignored by the netd daemon.

It's necessary to communicate directly to the daemon via the /dev/socket/netd socket. In Android it's now present a tool called ndc which does exactly this job.

The syntax for the DNS related stuff is this:

# ndc resolver flushif <iface> # ndc resolver flushdefaultif # ndc resolver setifdns <iface> <domains> <dns1> <dns2> # ndc resolver setdefaultif <iface> 

The app automatically guesses the network device name and applies these commands each time a mobile network gets activated.

 
 
   
   
13
 
vote

i "решил" эту проблему, используя правило iptables для пересылки всех портов 53 соединений на предполагаемый DNS-сервер; Мой опыт на Android 4.4.2 с попыткой изменения настроек DNS при подключении к 3G было точно так, как описано Leo; Невежество значений в GetProp | GREP DNS [0-9] ]: и dhcpd.conf.

 <код> iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 8.8.8.8:53   

Причина, как это описано здесь: http: //forum.xda-developers. com / showpost.php? p = 44722857 & amp; postcount = 6 Все приложения делают DNS Lookups через NetD через A / DEV / Socket / DNSPROXYD Unix. Эта поток также описывает, почему свойства системы игнорируются.

Чтобы отменить это, сделайте

 <код> iptables -t nat -L OUTPUT -n -v --line-numbers   

, найдите номер строки, который соответствует UDP DPT: 53 к: xxx.xxx.xxx.xxx: 53 и делать

 <код> iptables -t nat -D OUTPUT *linenumber*   
 

I "solved" this problem by using an iptables rule to forward all port 53 connections to an intended DNS server; my experience on Android 4.4.2 with attempting to modify DNS settings while connected to 3G has been exactly as Leo described; ignorance of values in getprop |grep dns[0-9]\]: and dhcpd.conf.

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 8.8.8.8:53 

The reason is as described here: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 All apps do DNS lookups through netd via a /dev/socket/dnsproxyd unix socket. This thread also describes why system properties are being ignored.

To undo this, do

iptables -t nat -L OUTPUT -n -v --line-numbers 

, find the line number that corresponds to udp dpt:53 to:xxx.xxx.xxx.xxx:53 and do

iptables -t nat -D OUTPUT *linenumber* 
 
 
 
 
1
 
vote

К сожалению, теперь может быть невозможно сделать в настоящее время, однако, можно попробовать DNS-чейнджер . Это может работать, если вы укоренились, но нет никаких гарантий.

Хорошая служба DNS для использования будет общедоступным службой DNS Google. Он имеет тенденцию работать очень хорошо для этих типов проблем прямо здесь.

Если ни одно из этого не работает, продолжайте искать ответы. Хороший сайт для таких вещей, как это, это Разработчики XDA . Они имеют тенденцию иметь много ответов на вещи для Android.

 

Sadly, it may be impossible to do as of right now, however, it is possible to try DNS Changer. This may work if you are rooted, but there are no guarantees.

A good DNS service to use would be Google's public DNS service. It tends to work out very well for these type of issues right here.

If none of this works, keep looking for answers. A good site for things like this is XDA Developers. They tend to have many answers on things for Android.

 
 
1
 
vote

Я на Kitkat Cyanogenmod 11, что означает, что я укоренился по умолчанию. Несмотря на то, что я могу только сообщить об ошибке:

<Сильный> 1-й Способ:

Когда я попробую <код> adb shell с

 <код> setprop net.rmnet0.dns1 208.67.222.222 setprop net.rmnet0.dns2 208.67.222.222 setprop net.rmnet1.dns1 208.67.222.222 setprop net.rmnet1.dns2 208.67.222.222 setprop net.rmnet2.dns1 208.67.222.222 setprop net.rmnet2.dns2 208.67.222.222 setprop net.dns1 208.67.222.222 setprop net.dns1 208.67.222.222   

А потом тест на какой IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk разрешил ... Я получаю ответ Nxdomain, что означает, что он не пришла от INTERVER OPENDNS, который я установил (что вернет ответ с альтернативным IP-адресом, чтобы служить вам добавленным).

При выполнении

 <код> getprop | grep dns   

Я бы увидел только что я настроил. Однако при переключении с Wi-Fi на мобильный (3G или 4G / LTE) я вижу IP-то, что я узнаю как назначенный моим мобильным перевозчиком. Такие приложения, такие как «DNSwitch» или «DNS-чейнджер», могут автоматически установить эти резольверы при изменении сети. Однако какой <код> getprop сообщает мне, все еще не то, что действительно делает разрешение.

<Сильный> 2-й метод [a]:

Еще один способ, которым я попробовал, это модификация <код> /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf установленные вещи, установленные там (но будьте в курсе имен и количество резольверов могут отличаться). Без успеха.

<Сильный> 2-й метод [B]:

и в <Код> /system/etc/dhcpcd/dhcpcd.conf Я удалил параметр для приема резольдентов при неоципировании DHCP. Никакого успеха тоже.

<сильный> 3-й метод:

До сих пор единственное, что будет работать немного, использует «бедный человек VPN», используя приложение «SSH Tunnel», используя SOCKS4, но с использованием того, что у меня не совсем понятный результат.

Резюме:

Похоже, что либо DNS, установленный в другом месте, или все пересылаются (угнаты), как только сеть это мобильна.

Так, как приду? Это еще один грязный способ обеспечить носители с инструментом для демонстрации сетевого нейтралитета?

В вашем случае ваш вопрос был из-за этого. У вас есть SSH, чтобы попробовать, если SSHTunnel является альтернативным решением, чтобы обойти свои носители Censoring?

 

I'm on KitKat Cyanogenmod 11, meaning I'm rooted by default. Despite that I can only report failure:

1st method:

When I try the adb shell with

setprop net.rmnet0.dns1 208.67.222.222 setprop net.rmnet0.dns2 208.67.222.222 setprop net.rmnet1.dns1 208.67.222.222 setprop net.rmnet1.dns2 208.67.222.222 setprop net.rmnet2.dns1 208.67.222.222 setprop net.rmnet2.dns2 208.67.222.222 setprop net.dns1 208.67.222.222 setprop net.dns1 208.67.222.222 

and then test to which IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk resolve's... I get an NXDOMAIN response, meaning it didn't came from the OpenDNS nameserver I've set (which would return an answer with an alternative IP, to serve you adds).

When doing

getprop | grep dns 

I would only see what I've configured. However when switching from WiFi to mobile (3G or 4G/LTE) I see IP's that I recognize as being assigned to my mobile carrier. Apps like "DNSwitch" or "DNS Changer" can re-set those resolvers automaticly at network change. However what getprop reports me, is still not what's truly doing the resolving.

2nd method [a]:

Another way I tried, is modifieng /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf an set things fixed in there (but be aware network names and number of resolvers can differ). Without success.

2nd method [b]:

And in /system/etc/dhcpcd/dhcpcd.conf I removed the parameter to accept resolvers at DHCP negociation. No success either.

3th method:

So far the only thing that would work a little is using a "poor man VPN", using the app "SSH Tunnel", using SOCKS4, but using that I did not exactly got a good result.

Resume:

It seems like either DNS set elsewhere, or all are forwarded (hijacked) as soon the network is mobile.

So, how come? Is it another dirty way to provide carriers with a tool to demolish network neutrality?

In your case your question was because of that. Do you have SSH to try if SSHTunnel is a alternative solution to get around your carriers censoring?

 
 
 
 
1
 
vote

Я столкнулся с той же проблемой сегодня, и благодаря перелитому. Я пытался разработать приложение « dns fourcee r" чтобы разобраться. Он не изменяет DNS-сервер на систему, но пересылает DNS-запросы на другой сервер. Этот обходной путь работает нормально для меня на KITKAT (Nexus 5 / 4.4.3 и Moto Razr / CM11). Надеюсь, что это может помочь другим, а также.

 

I encountered the same problem today, and thanks to Transfusion. I tried to develop an app "DNS forwarder" to work it out. It does not change dns server on system, but forward dns queries to another server. This workaround works fine for me on Kitkat (Nexus 5/4.4.3 and Moto Razr/CM11). Hope it can help other as well.

 
 
 
 
0
 
vote

В настоящее время я не думаю, что есть какие-либо способы изменить ваши DNS на ваши мобильные данные. Но если ваш телефон укоренился, вы можете использовать приложения, такие как Apps, такие как Установите DNS .

 

Currently I don't think there's any way to change your DNS on your mobile data. But if your phone is rooted you can use apps like Set DNS.

 
 
         
         

Связанный проблема

2  DNSCRYPT на Android  ( Dnscrypt on android ) 
Я хотел бы установить Dnscrypt на Android. Я установил его на Windows 8, Linux Mint и Kali Linux. Но я очень новичок в Linux, таким образом, имея дело с Andro...

2  Как просматривать NAS в Android?  ( How to browse to a nas in android ) 
У меня есть NAS, прикрепленный к моему домашнему роутере, и NAS работает на веб-сервере. Я хотел бы запустить браузер на моем планшете Android, введите URL (в...

6  Пряничный телефон только запросы для записи AAAA?  ( Gingerbread phone only queries for aaaa records ) 
С вчерашнего дня у меня есть (в дополнение к обычному IPv4) IPv6 в моей локальной сети дома (нативный IPv6 предоставляется моим ISP). У меня есть Windows XP...

16  Терминал Android не в состоянии nslookup?  ( Android terminal not able to nslookup ) 
Каждый раз, когда я пытаюсь Telnet к домену на моем LG союзника, не удается, но он работает, если я использую IP-адрес. Поэтому я пытался использовать <код> n...

1  Как заблокировать доступ к доменам с DNS66?  ( How to block access to domains with dns66 ) 
Я использую Открытый исходный код Android DNS66 блокировать рекламу на моем смартфоне. Можно ли блокировать все домены (например, Facebook.com, twitter.com)...

0  Драйвер Android сбрасывает DNS на моем хосте Win7  ( Android driver resets dns on my win7 host ) 
Несколько дней назад я подключил свой телефон Android (HTC1) на мой автомат Win7, который никогда не имел никаких проблем с сетью. Когда я подключил, я такж...

3  Изменить DNS, но оставайтесь на DHCP  ( Change dns but stay on dhcp ) 
У меня есть «Minix Neo X8-H Plus», работает Android 4.4 (KITKAT). Я хочу изменить серверы DNS на соединении WiFi, но для этого я получаю этот выбор, только ...

1  Hotspot Mobile Network Tatering и DNS  ( Hotspot mobile network tethering and dns ) 
Я и, вероятно, другие знаете, если включите мобильную точку доступа и включить WiFi-привязку, мы можем использовать наш телефон Android, чтобы получить доступ...

5  Можно ли сделать разрешение DNS на основе подключения?  ( Is it possible to do dns resolution based on connection ) 
На моей Galaxy Note 2 Phone (Android конечно), можно ли редактировать <код> hosts файл, чтобы он разрешил example.com для публичного IP, но разрешает его М...

2  Не могу изменить DNS на S3 Mini  ( Cant change dns on s3 mini ) 
Я пытаюсь использовать Opendns на моем телефоне. Я попробовал использовать setdns , DNS-чейнджер и dnset . По крайней мере, два из тех утверждают, что поз...

8  Android WiFi говорит «подключен, нет интернета», но Интернет работает просто хорошо  ( Android wifi says connected no internet but internet works just fine ) 
Это странная вещь, которая начала происходить с сетью WiFi на моей работе. Android-устройства, подключенные к сети, скажем, «подключены, нет Интернета», однак...

27  Как я могу промыть кэш DNS?  ( How can i flush the dns cache ) 
Как я могу очистить свой кеш DNS на моем телефоне Android? (Droid3, пряники, укоренившись к конкретному) В идеале я ищу команду, чтобы запустить эмулятор те...

7  Я хочу смартфон, который я могу заблокировать в настройках DNS. Это андроид "один"  ( I want a smart phone that i can lock in dns settings is android the one ) 
Это все о том, чтобы быть Интернет-босс . Я хочу иметь возможность заблокировать или пароль защищать настройки DNS для OpenDNS, поэтому у меня может быть без...

1  Cyanogenmod 7 OpenVPN DNS не работает  ( Cyanogenmod 7 openvpn dns not working ) 
Я хочу направить все интернет-трафик моего телефона через мой VPN. Я настроил OpenVPN в моем HTC Desire с Cyanogenmod 7.2.0.1-Bravo через интегрированные ди...

6  Могу ли я переопределить настройки DNS по умолчанию на HTC EVO без доступа к корню?  ( Can i override the default dns settings on an htc evo without root access ) 
Есть ли способ переопределить Sprint DNS-сервер (S), используемый по умолчанию на подключении HTC EVO, работает Froyo без корневого доступа? Причина, по кот...

3  Какие DNS-серверы используются при подключении к беспроводным данным?  ( What dns servers are used when connected to wireless data ) 
Какие DNS-серверы используются при подключении к беспроводным данным (не WiFi)? Есть ли путь в Android Kitkat, чтобы сказать? ...

3  Почему My Moto X Phone поддерживает MDNS, но мой планшет Samsung не делает?  ( Why does my moto x phone support mdns but my samsung tablet does not ) 
У меня есть устройство, которое вещает MDNS, я использую это приложение для просмотра его в браузере Bonjour: https://play.google.com/store /apps/details?id=...

2  Проблема доступа к Интернету в 4.0 ICS  ( Problem accessing internet in 4 0 ics ) 
Для некоторой странной причины мой планшет Android 4.0 ICS больше не в состоянии получить доступ к Интернету. Во-первых, через WiFi он мог бы подключаться к д...

1  Установите открытый DNS в Android 5.0.1  ( Set open dns in android 5 0 1 ) 
Просто обновил мой onePlus One на Android 5.0.1, и я не могу изменить DNS, когда я выбираю опцию «Static IP» в настройках Wi-Fi. В основном я могу поставить з...

24  Как изменить DNS мобильных соединений на Android Kitkat?  ( How to change mobile connectionss dns on android kitkat ) 
Я хочу избежать цензуры от моего локального мобильного ISP (он блокирует imgur, например, по неизвестной причине. скриншот (нажмите изображение для больш...

5  Как установить DNS-сервер на Nexus One?  ( How to set the dns server on nexus one ) 
ISP I использует на моем N1, не позволяет мне открыть Facebook. Используя ПК, я могу использовать Google DNS Server (8,8,8,8,8), чтобы пройти их, но на N1 я н...

0  Изменение настроек DNS на Android - не работает  ( Changing dns settings on android not working ) 
Когда я устанавливаю свой DNS на моем устройстве Android и перейдите в DNS Leak Test это не DNS, который я установил в настройках DNS. Это DNS, установленны...

28  Как добраться до местного компьютера по названию машины вместо IP?  ( How to reach local computer via machine name instead of ip ) 
Разработчик здесь прототипирование мобильного приложения, несколько новое на мобильный: . У меня есть простой HTTP-сервис работает (в настоящее время) на мо...

16  Почему Android отказывается от разрешения DNS-записи, указывающих на внутренние IP-адреса?  ( Why is android refusing to resolve dns records pointing to internal ip addresses ) 
У меня очень странное поведение на устройстве Android (Nexus 7) при попытке получить доступ к локальным сетевым приложениям. Вместо того, чтобы получить факти...

0  Используя локальный (частный) DNS-сервер на леденец  ( Using local private dns server on lollipop ) 
У меня есть сайт, размещенный на сервере IIS в моей сети. DNS для этого сайта действителен только в пределах сети. DNS не может быть разрешена за пределами эт...

Связанный проблема

2  DNSCRYPT на Android 
2  Как просматривать NAS в Android? 
6  Пряничный телефон только запросы для записи AAAA? 
16  Терминал Android не в состоянии nslookup? 
1  Как заблокировать доступ к доменам с DNS66? 
0  Драйвер Android сбрасывает DNS на моем хосте Win7 
3  Изменить DNS, но оставайтесь на DHCP 
1  Hotspot Mobile Network Tatering и DNS 
5  Можно ли сделать разрешение DNS на основе подключения? 
2  Не могу изменить DNS на S3 Mini 
8  Android WiFi говорит «подключен, нет интернета», но Интернет работает просто хорошо 
27  Как я могу промыть кэш DNS? 
7  Я хочу смартфон, который я могу заблокировать в настройках DNS. Это андроид "один" 
1  Cyanogenmod 7 OpenVPN DNS не работает 
6  Могу ли я переопределить настройки DNS по умолчанию на HTC EVO без доступа к корню? 
3  Какие DNS-серверы используются при подключении к беспроводным данным? 
3  Почему My Moto X Phone поддерживает MDNS, но мой планшет Samsung не делает? 
2  Проблема доступа к Интернету в 4.0 ICS 
1  Установите открытый DNS в Android 5.0.1 
24  Как изменить DNS мобильных соединений на Android Kitkat? 
5  Как установить DNS-сервер на Nexus One? 
0  Изменение настроек DNS на Android - не работает 
28  Как добраться до местного компьютера по названию машины вместо IP? 
16  Почему Android отказывается от разрешения DNS-записи, указывающих на внутренние IP-адреса? 
0  Используя локальный (частный) DNS-сервер на леденец