題:
如何在Android KitKat上更改移動連接的DNS?
user51893
2014-01-28 10:35:12 UTC
view on stackexchange narkive permalink

我想避免來自本地移動ISP的審查(例如,出於某些未知原因,它會阻止imgur。

Screenshot
屏幕截圖(單擊圖像可獲得較大的變體) sup>

我敢肯定,可以通過將DNS更改為Google DNS或OpenDNS來規避此問題,但我不確定如何在KitKat。

 信息:設備:Nexus 5Android版本:4.4.2設備狀態:已紮根 
[如何正確配置DNS?](https://android.stackexchange.com/a/205740/218526)
六 答案:
MaxChinni
2014-06-05 15:10:43 UTC
view on stackexchange narkive permalink

好吧,首先全面披露:我是一個應用程序的作者,該應用程序現在在Google Play商店中,可讓您更改Android 4.4上任何移動連接的DNS。該應用程序需要root ,需要花費幾美元,並且被稱為 Override DNS。有人告訴我,在一個已刪除的答案上,只要鏈接到我的應用程序就可以了

我在此版本的Android(4.4)中發現的問題是,顯然是由於緩存原因,系統行為已更改為將所有DNS查詢重定向到名為 netd (這是與4.4之前的Android網絡相關的演示的鏈接,但是,其中涉及了這些主題的一部分。)

getprop / setprop 方法不再起作用。這些值在更改後會被 netd 守護程序簡單地忽略。

必須通過 / dev / socket / netd code直接與守護程序通信。 >插座。在Android中,現在提供了一個名為 ndc 的工具,可以完成此任務。

與DNS相關的內容的語法是:

 # NDC解析器flushif <iface>#NDC解析器flushdefaultif#NDC解析器setifdns <iface> <domains> <dns1> <dns2>#NDC解析器setdefaultif <iface> 代碼> 

應用自動猜測網絡設備名稱和施加這些每次激活移動網絡時都會發出命令。

setifdns的正確語法是:`ndc解析器setifdns <域> ...。例如:`ndc解析器setifdns eth0“” 8.8.8.8 8.8.4.4`
@Christiand'Heureuse您說得對,我更新了答案,謝謝。
Transfusion
2014-05-06 21:23:27 UTC
view on stackexchange narkive permalink

我通過使用iptables規則將所有端口53連接轉發到預期的DNS服務器來“解決”了該問題;我在Android 4.4.2上嘗試嘗試在連接3G時修改DNS設置的經驗與Leo完全相同;

  iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT-目的地8.8.8.8:53 

原因如下所述: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6所有應用都通過/ dev / socket / dnsproxyd Unix套接字通過netd進行DNS查找。此線程還描述了為什麼忽略系統屬性。

要撤消該操作,請

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

,找到與udp dpt:53對應的行號:: xxx.xxx.xxx.xxx:53,然後執行

  iptables -t nat -D輸出*行號*  
謝謝!此外,原因摘要:Google正在與廣告攔截器進行軍備競賽。他們試圖禁用當前手段,即廣告攔截器正常工作,並且廣告攔截器轉移到了另一個,而所有用戶(無論是否使用廣告攔截器)都將永遠被Google的舉動所困擾。 ...我以為每個人都知道現在與廣告攔截器作鬥爭是愚蠢的舉動。傻谷歌。 (此外,開源應用程序AFWALL是輕鬆添加此自定義規則的便捷方法)
[AfWall + Wiki](https://github.com/ukanth/afwall/wiki/CustomScripts)關於如何應用這樣的自定義iptables規則
pyrogoggles
2014-01-30 05:19:16 UTC
view on stackexchange narkive permalink

遺憾的是,目前可能無法執行此操作,但是可以嘗試 DNS Changer。如果您已紮根,這可能會起作用,但不能保證。

要使用的優質DNS服務應該是Google的公共DNS服務。

如果這些都不起作用,請繼續尋找答案。 XDA Developers是一個很好的解決這類問題的網站。他們傾向於在Android方面有很多答案。

Leo
2014-03-08 19:55:39 UTC
view on stackexchange narkive permalink

我在KitKat Cyanogenmod 11上,這意味著我默認是紮根的。儘管如此,我只能報告失敗:

第一種方法:

當我嘗試將 adb shell

一起使用時
  setprop net.rmnet0.dns1 208.67.222.222setprop net.rmnet0.dns2 208.67.222.222setprop net.rmnet1.dns1 208.67.222.222setprop net.rmnet1.dns2 208.67.222.222setprop net.rmnet2.dns1 208.67。 222.222setprop net.rmnet2.dns2 208.67.222.222setprop net.dns1 208.67.222.222setprop net.dns1 208.67.222.222  

,然後測試將哪個IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk解析為...我得到了NXDOMAIN響應,這意味著它不是來自我設置的OpenDNS域名服務器(它將返回帶有備用IP的答案,以便為您服務)。

這樣做

  getprop | grep dns  

我只會看到我配置的內容。但是,從WiFi切換到移動設備(3G或4G / LTE)時,我看到了我認為已分配給移動運營商的IP。諸如“ DNSwitch”或“ DNS Changer”之類的應用程序可以在網絡更改時自動重置這些解析器。但是 getprop 報告給我的內容仍然不是真正解決問題的方法。

第二種方法[a]:

另一個我嘗試的方法是在其中修改 /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf 的一組固定內容(但要注意網絡名稱和解析器的數量可以不同)。沒有成功。

第二種方法[b]:

/system/etc/dhcpcd/dhcpcd.conf 中刪除了在DHCP協商中接受解析器的參數。

第三種方法:

到目前為止,唯一可行的方法是使用“窮人VPN”,並使用該應用使用SSHKS4的“ SSH隧道”,但是使用它並沒有得到很好的結果。

恢復:

似乎在任何地方都設置了DNS ,或在網絡移動後立即轉發(劫持)所有

那麼,為什麼呢?為運營商提供消除網絡中立性的工具是另一種骯髒的方式嗎?

您的問題就是因為這個原因。您是否可以使用SSH嘗試SSHTunnel是否是解決運營商的替代解決方案?審查?

我已經找到一種規避障礙的方法,但是它很麻煩,而且要視具體情況而定。我已經紮根,因此可以訪問hosts文件。接下來,我查找了imgur的直接IP地址,然後將這些值手動輸入到hosts文件中。現在問題解決了。
user64656
2014-06-23 17:05:16 UTC
view on stackexchange narkive permalink

今天,由於輸血,我遇到了同樣的問題。我嘗試開發一個應用程序“ DNS轉發 r”來解決該問題。它不會更改系統上的dns服務器,但會將dns查詢轉發到另一台服務器。對於我在Kitkat(Nexus 5 / 4.4.3和Moto Razr / CM11)上,該解決方法對我來說效果很好。希望它也能幫助其他人。

這實際上有效,不確定您為什麼被否決
Karan Raj Baruah
2014-01-28 10:42:09 UTC
view on stackexchange narkive permalink

目前,我不認為有任何方法可以更改移動數據上的DNS。但是,如果您的手機已紮根,則可以使用設置DNS之類的應用。

可悲的是,該應用程序似乎不支持Android 4.3及更高版本:(摘自該應用程序的描述:“請暫時不要安裝ANDROID 4.3,該內核中的DNS處理方式存在問題。我已經從市場上購買了4.3種設備。”
您的問題是,對於Android KitKat(Android 4.4。*)需要它,而Android 4.3是Jellybean。
我已經在設備上的Play商店上打開了該應用程序的頁面,它在最上方顯示:“您的設備與此版本不兼容。”因此,我確定問題仍然存在於4.3版本到KitKat。
根據常見問題解答,推薦應用程序實際上並不是該網站的一部分。我回答了Android是否可以原生執行的問題。我建議您自己搜索Play商店。
提示:訪問[AppBrain上的應用程序頁面](http://www.appbrain.com/app/uk.co.mytechie.setDNS)列出了幾種替代方法(右上方的4)。但是請注意,該領域中的大多數解決方案都需要root訪問。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...