Ok, pertama-tama pengungkapan penuh : Saya adalah pembuat aplikasi yang sekarang ada di Google Play Store dan yang membuat Anda dapat mengubah DNS untuk koneksi seluler apa pun di Android 4.4. Aplikasi ini membutuhkan root , biaya beberapa dolar dan disebut Override DNS . Saya diberitahu, pada jawaban yang sekarang dihapus, itu adil untuk menautkan ke aplikasi saya selama saya memaparkannya dengan jelas.
Masalah yang saya temukan dengan rilis Android ini (4.4) adalah bahwa, tampaknya untuk alasan caching, perilaku sistem telah diubah untuk mengalihkan semua permintaan DNS ke daemon sistem yang disebut netd
(inilah tautan ke presentasi yang terkait dengan jaringan Android sebelum 4.4 yang Namun, mencakup sebagian dari topik ini).
The getprop
/ setprop
metode tidak bekerja lagi. Nilai-nilai itu, ketika diubah, diabaikan begitu saja oleh netd
daemon.
Penting untuk berkomunikasi langsung ke daemon melalui /dev/socket/netd
soket. Di Android sekarang hadir alat yang disebut ndc
yang melakukan pekerjaan ini dengan tepat.
Sintaks untuk hal-hal terkait DNS adalah ini:
# ndc resolver flushif <iface>
# ndc resolver flushdefaultif
# ndc resolver setifdns <iface> <domains> <dns1> <dns2>
# ndc resolver setdefaultif <iface>
The app otomatis menebak jaringan nama perangkat dan berlaku ini perintah setiap kali jaringan seluler akan diaktifkan.
ndc resolver setifdns <iface> <domains> <dns1> <dns2> ...
. Contoh:ndc resolver setifdns eth0 "" 8.8.8.8 8.8.4.4
Saya "memecahkan" masalah ini dengan menggunakan aturan iptables untuk meneruskan semua koneksi port 53 ke server DNS yang dimaksud; pengalaman saya di Android 4.4.2 dengan mencoba mengubah pengaturan DNS saat terhubung ke 3G persis seperti yang dijelaskan Leo; ketidaktahuan nilai dalam getprop | grep dns [0-9] \]: dan dhcpd.conf.
Alasannya adalah sebagaimana dijelaskan di sini: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 Semua aplikasi melakukan pencarian DNS melalui netd melalui soket unix / dev / socket / dnsproxyd unix. Utas ini juga menjelaskan mengapa properti sistem diabaikan.
Untuk membatalkan ini, lakukan
, cari nomor baris yang sesuai dengan udp dpt: 53 ke: xxx.xxx.xxx.xxx: 53 dan lakukan
sumber
Sedihnya, hal itu mungkin tidak dapat dilakukan pada saat ini, bagaimanapun, adalah mungkin untuk mencoba DNS Changer . Ini bisa berfungsi jika Anda di-root, tetapi tidak ada jaminan.
Layanan DNS yang baik untuk digunakan adalah layanan DNS publik Google. Itu cenderung bekerja dengan sangat baik untuk masalah seperti ini di sini.
Jika tidak ada yang berhasil, terus cari jawaban. Situs yang bagus untuk hal-hal seperti ini adalah Pengembang XDA . Mereka cenderung memiliki banyak jawaban untuk Android.
sumber
Saya menggunakan KitKat Cyanogenmod 11, artinya saya telah di-root secara default. Meskipun demikian saya hanya dapat melaporkan kegagalan:
Metode 1:
Ketika saya mencoba
adb shell
dengandan kemudian mengujinya dengan tekad IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk ... Saya mendapatkan respons NXDOMAIN, yang berarti bukan berasal dari server nama OpenDNS yang telah saya tetapkan (yang akan mengembalikan jawaban dengan IP alternatif, untuk melayani Anda menambahkan).
Ketika melakukan
Saya hanya akan melihat apa yang telah saya konfigurasikan. Namun ketika beralih dari WiFi ke seluler (3G atau 4G / LTE) saya melihat IP yang saya kenali ditugaskan untuk operator seluler saya. Aplikasi seperti "DNSwitch" atau "DNS Changer" dapat mengatur ulang resolusi tersebut secara otomatis saat perubahan jaringan. Namun apa yang
getprop
melaporkan saya, masih bukan apa yang benar-benar melakukan penyelesaian.Metode 2 [a]:
Cara lain yang saya coba, adalah modifieng
/system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf
satu set hal-hal yang diperbaiki di sana (tetapi perlu diketahui nama jaringan dan jumlah resolver dapat berbeda). Tanpa keberhasilan.Metode 2 [b]:
Dan di
/system/etc/dhcpcd/dhcpcd.conf
saya menghapus parameter untuk menerima resolver pada negosiasi DHCP. Juga tidak berhasil.Metode 3:
Sejauh ini satu-satunya hal yang akan bekerja sedikit adalah menggunakan "orang miskin VPN", menggunakan aplikasi "SSH Tunnel", menggunakan SOCKS4, tetapi menggunakan itu saya tidak mendapatkan hasil yang baik.
Lanjut:
Sepertinya DNS diatur di tempat lain, atau semua diteruskan (dibajak) segera setelah jaringan bergerak.
Jadi, bagaimana bisa? Apakah ini cara kotor lain untuk menyediakan alat bagi operator untuk menghancurkan netralitas jaringan?
Dalam kasus Anda, pertanyaan Anda adalah karena itu. Apakah Anda memiliki SSH untuk dicoba jika SSHTunnel adalah solusi alternatif untuk menyiasati sensor operator Anda?
sumber
Saya mengalami masalah yang sama hari ini, dan terima kasih kepada Transfusi. Saya mencoba mengembangkan aplikasi " DNS forwarde r" untuk menyelesaikannya. Itu tidak mengubah server dns pada sistem, tetapi meneruskan permintaan dns ke server lain. Solusi ini berfungsi dengan baik untuk saya di Kitkat (Nexus 5 / 4.4.3 dan Moto Razr / CM11). Semoga bisa membantu orang lain juga.
sumber
Saat ini saya tidak berpikir ada cara untuk mengubah DNS Anda pada data seluler Anda. Tetapi jika ponsel Anda di-rooting, Anda dapat menggunakan aplikasi seperti Set DNS .
sumber