我想避免來自本地移動ISP的審查(例如,出於某些未知原因,它會阻止imgur。
我敢肯定,可以通過將DNS更改為Google DNS或OpenDNS來規避此問題,但我不確定如何在KitKat。
信息:設備:Nexus 5Android版本:4.4.2設備狀態:已紮根
我想避免來自本地移動ISP的審查(例如,出於某些未知原因,它會阻止imgur。
我敢肯定,可以通過將DNS更改為Google DNS或OpenDNS來規避此問題,但我不確定如何在KitKat。
信息:設備:Nexus 5Android版本:4.4.2設備狀態:已紮根
好吧,首先全面披露:我是一個應用程序的作者,該應用程序現在在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> 代碼>
在應用自動猜測網絡設備名稱和施加這些每次激活移動網絡時都會發出命令。
我通過使用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輸出*行號*
遺憾的是,目前可能無法執行此操作,但是可以嘗試 DNS Changer。如果您已紮根,這可能會起作用,但不能保證。
要使用的優質DNS服務應該是Google的公共DNS服務。
如果這些都不起作用,請繼續尋找答案。 XDA Developers是一個很好的解決這類問題的網站。他們傾向於在Android方面有很多答案。
我在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是否是解決運營商的替代解決方案?審查?
今天,由於輸血,我遇到了同樣的問題。我嘗試開發一個應用程序“ DNS轉發 r”來解決該問題。它不會更改系統上的dns服務器,但會將dns查詢轉發到另一台服務器。對於我在Kitkat(Nexus 5 / 4.4.3和Moto Razr / CM11)上,該解決方法對我來說效果很好。希望它也能幫助其他人。
目前,我不認為有任何方法可以更改移動數據上的DNS。但是,如果您的手機已紮根,則可以使用設置DNS之類的應用。