Mengapa Android menolak untuk menyelesaikan catatan DNS yang menunjuk ke alamat IP internal?

14

Saya memiliki perilaku yang sangat aneh pada perangkat Android (Nexus 7) ketika mencoba mengakses aplikasi jaringan lokal. Alih-alih mendapatkan IP mesin yang sebenarnya di LAN, perangkat Android mendapatkan IP publik , yang berarti bahwa Chrome, Firefox atau browser lain hanya menampilkan halaman web router.

Saya memiliki server DNS internal yang menangani jaringan lokal. Melakukan pingdari PC berfungsi dengan benar:

$ ping s.pelicandd.com

PING pelicandd.com (192.168.1.15) 56(84) bytes of data.
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=1 ttl=64 time=0.524 ms
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=2 ttl=64 time=0.578 ms
^C

Pada perangkat HTC One (diakses dengan adb shell), ini juga berfungsi dengan baik:

shell@m7:/ $ ping s.pelicandd.com

PING pelicandd.com (192.168.1.15) 56(84) bytes of data.
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=1 ttl=64 time=2.56 ms
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=2 ttl=64 time=27.8 ms
^C

Namun, inilah yang saya dapatkan ketika melakukan hal yang sama pingdari Nexus 7:

shell@flo:/ $ ping s.pelicandd.com

PING pelicandd.com (90.78.26.42) 56(84) bytes of data.
64 bytes from LFbn-1-2441-42.w90-78.abo.wanadoo.fr (90.78.26.42): icmp_seq=1 ttl=64 time=2.56 ms
64 bytes from LFbn-1-2441-42.w90-78.abo.wanadoo.fr (90.78.26.42): icmp_seq=2 ttl=64 time=8.63 ms
^C

Alih-alih menyelesaikan ke IP internal, ia memutuskan untuk IP publik.

Konfigurasi jaringan — kecuali alamat IP perangkat — persis sama pada kedua perangkat: Pengaturan IP diatur ke Statis , dan server DNS adalah yang internal. Kedua perangkat Android terhubung melalui Wi-Fi (tidak seperti PC). Perbedaan utama, bagaimanapun, adalah bahwa Nexus 7 menggunakan Android 6.0.1, sedangkan HTC One menggunakan Android 5.0.2.

Tidak ada nm-tool, digatau nslookuppada Nexus 7. Perangkat tidak di-root.

Masalahnya ada sejak saya membeli perangkat beberapa minggu yang lalu, jadi hampir tidak ada masalah dengan cache DNS.

Apa yang bisa saya lakukan untuk memeriksa lebih lanjut masalah ini?

Arseni Mourzenko
sumber
Pertama-tama Anda tentu saja harus memeriksa masalah. Jadi silakan instal IP Tools dari Play Store, buatlah beberapa nslookup dan seterusnya, dan daripada itu kita akan tahu lebih banyak. Terutama penggunaan server DNS Nexus, pencarian DNS dan sebagainya. Coba Alat IP ini . Itu dalam bahasa Polandia tapi tentu saja Anda bisa mengubahnya. Alat ini saya gunakan jika terjadi masalah seperti itu.
mackowiakp
Hm Dalam Info IP , ini menampilkan alamat DNS yang benar. Dalam pencarian DNS , IP yang benar ditampilkan (192.168.1.15). Namun, tab Traceroute menunjukkan IP publik yang salah (90.78.26.42).
Arseni Mourzenko
Jadi - menurut saya - ada yang salah dengan entri DNS internal untuk Nexus. Saya menggunakan konfigurasi simmilar dan semuanya berfungsi OK
mackowiakp
DNS internal berfungsi dengan baik pada Nexus 6p, Nexus 5, Nexus 10, dll. Pernahkah Anda mencoba mem-flash gambar pabrik ke Nexus 7 (jika bootloader-nya tidak dikunci) untuk memastikan itu menjalankan perangkat lunak yang dikenal baik? (Saya kira Anda sudah terbiasa, karena Nexus 7 bukan perangkat baru).
derobert
Saya membelinya bekas, tetapi saya melakukan reset sebelum menggunakannya, diikuti dengan peningkatan hingga versi Android terbaru. Saya membayangkan ini cukup untuk memastikan tidak menjalankan perangkat lunak khusus, mengingat perangkat tidak di-root.
Arseni Mourzenko

Jawaban:

5

Kami baru-baru ini mengalami masalah ini, dan kami mempersempitnya untuk HANYA terjadi pada perangkat yang menjalankan Android v5 dan yang lebih baru. Android v4 dan semua OS lainnya tidak memiliki masalah.

Dengan berita gembira itu, kami menentukan bahwa Android v5 dan yang lebih baru bersikeras menggunakan IPv6 untuk resolusi nama DNS. (Karena kami telah sepenuhnya menonaktifkan IPv6 di jaringan kami, ini sesuai dengan masalah ini.) Jika Android v5 (+) tidak bisa mendapatkan respons IPv6 dari DNS lokal, maka itu menjangkau host nama publik Google (8.8.8.8) . Karenanya, tidak ada DNS internal, hanya eksternal.

Kami mengatasi masalah ini dengan membuat data DNS pada server DNS yang menghadap publik untuk nama dan IP internal tertentu. Setelah itu selesai, DNS publik Google dapat menyelesaikan nama-nama internal ini dengan IP internal, dan perangkat kemudian dapat mencapai host internal kami.

Kami sedang melanjutkan dengan mengaktifkan IPv6 sepenuhnya pada server DNS internal kami (pengontrol domain) sebagai perbaikan permanen.

=========================================

PEMBARUAN-- Nah, ternyata ini mungkin total herring merah ... atau tidak. Jaringan rumah saya adalah Win2008R2, domain tunggal dengan DHCP dan DNS dan tidak ada IPv6 yang mengikat. Menguji perangkat Android v5 dari sana dan tidak memiliki MASALAH. Jaringan kantor dengan masalah adalah Win2012 (non-R2), satu-domain.

Memintas WAP kantor saat ini dengan WAP Linksys yang berdiri sendiri dan SSID terpisah untuk pengujian, tetap ada masalah.

Perbedaan antara jaringan kantor dan rumah (yang dapat saya pikirkan): - Versi Windows - 2012 vs 2008 R2 - model router (Cisco vs. Linksys) - Model WAP (Jaringan Aruba vs Linksys) bermerek Dell-Dell

Melanjutkan dengan pengujian lebih lanjut apa pun yang bisa saya pikirkan untuk mempersempit masalah. Setiap saran atau masukan sangat dihargai!

=========================================

MASALAH PERGI (?!)

Masalah kami tampaknya hilang dengan sendirinya setelah perubahan topologi jaringan yang saya pikir tidak terkait, tapi inilah info yang ada.

(Permintaan maaf yang BESAR untuk cerita yang panjang dan berlarut-larut ini, tapi ini adalah saat masalah Android kami menghilang, jadi naiklah ini jika Anda bisa. Saya mungkin memberikan WAY terlalu banyak detail di sini, tetapi karena saya tidak dapat melihat koneksi langsung, Saya mengungkapkan semuanya persis seperti yang terjadi.)

ISP kami adalah Comcast Business Class — modem kabel dengan blok IP statis dari lima alamat (nomor ganjil tapi itulah cara Comcast menjualnya). Modem kabel Comcast pada dasarnya adalah kombinasi modem / firewall / router / switch, dengan blok IP statis kami diprogram dari jarak jauh ke dalamnya.

Selama 10+ tahun dan hampir sama dengan perusahaan, saya selalu membangun jaringan kantor dengan cara yang sama:
Mengkonfigurasi IP LAN untuk modem / router ISP, yang lalu lintas NAT dari internet. Tidak bisa lebih sederhana, dan begitulah jaringan kantor saya saat ini telah dikonfigurasi selama empat tahun.

Baru-baru ini layanan internet kantor kami turun. Biasanya modem restart memperbaikinya, tetapi ketika tidak kita panggil Comcast yang mengirim teknologi, yang mengganti modem kabel untuk memulihkan layanan.

Beberapa hari kemudian, hal yang sama terjadi lagi. Kami menelepon lagi, dan teknisi di tempat (berbeda dari teknologi sebelumnya) berusaha untuk mengganti modem lagi, kali ini dengan model yang lebih baru. Anehnya, modem kabel yang lebih baru tidak mendukung mengubah alamat subnet LAN. Subnet default adalah 10.1.10.0/24, dan tidak dapat diubah. (Hanya oktet ke-4 yang dapat dikonfigurasi.) Karena subnet kantor kami adalah 192.168.100.0/24, saya memberi tahu teknologi bahwa kami tidak dapat menggunakannya tanpa dapat mengubah subnet LAN. Dia mengerti, tetapi tidak punya info mengapa modem kabel akan mencegah perubahan. Jadi dia memasang modem pengganti dengan model yang sama seperti sebelumnya, yang kami konfigurasikan secara identik, dan akses internet dipulihkan.

Satu atau dua hari berlalu, dan layanan turun lagi. Kali ini ketika saya menelepon Comcast, teknologi awal yang saya gunakan berbicara dengan mengajukan pertanyaan terperinci dan berpengetahuan tentang konfigurasi jaringan kami. Ketika saya menjelaskan bahwa modem kabel dikonfigurasikan dengan IP LAN pada subnet kami, ia tampak bingung dengan hal ini. Dia mengatakan bahwa sebagian besar pelanggan Comcast menghubungkan router NAT'ing antara modem kabel dan LAN daripada menggunakan NAT'ing modem kabel. Bahkan, dia bilang dia tidak sadar bahwa modem kabel mendukung NAT'ing.

Comcast mengirimkan teknologi lain dengan modem kabel baru (model terbaru yang tidak mendukung penggantian subnet LAN). Dia melakukan pengujian ekstensif pada modem yang ada, dan akhirnya memutuskan bahwa itu hanya melewati lalu lintas IPv6 — tidak ada IPv4. Dia juga mengkonfirmasi apa yang dikatakan oleh teknologi telepon - bahwa direkomendasikan untuk menggunakan router terpisah untuk NAT'ing, dan untuk tidak mengubah subnet LAN pada modem kabel (yang tidak bisa kita lakukan pada modem yang lebih baru sekarang juga).

Dan sekarang kami akhirnya sampai pada perubahan jaringan yang kami buat. Saya memasang router LinkSys sederhana antara modem kabel dan router inti kami, yang dikonfigurasi dengan IP statis kami di sisi modem, dan IP LAN di bagian dalam. Layanan Internet kemudian dipulihkan, dan tetap stabil untuk beberapa waktu sekarang.

Setelah layanan internet dipulihkan, saya berpikir tentang keanehan masalah IPv6 dengan modem kabel, yang pada gilirannya mengingatkan saya pada masalah Android v5. Saya kemudian menguji perangkat Android kami di kantor, dan terpana melihat bahwa masalah DNS tidak lagi terjadi.

Menambahkan router LinkSys untuk NAT'ing adalah PERUBAHAN JARINGAN HANYA YANG KAMI BUAT. Kebetulan ?? Mungkin, tetapi hanya sedikit aneh bahwa keduanya terkait dengan IPv6.

Ngomong-ngomong, maaf lagi untuk ceritanya yang panjang, tapi masalah Android kami hilang. Buat apa yang Anda bisa dari itu.

Dimarc67

Dimarc67
sumber
Memang, ini harus menjadi penyebab dalam kasus saya juga, karena, juga saya tidak menggunakan IPv6 secara internal. Saya menghindari masalah DNS dengan membuat server VPN lokal dan meminta perangkat Android untuk menggunakan VPN sebagai gantinya; itu bekerja, tapi itu jelas terlalu drastis.
Arseni Mourzenko
@ArseniMourzenko Apakah Anda pernah mengatasi masalah ini? Saya benar-benar menyia-nyiakan dua hari untuk tidak melakukan apa-apa selain mencoba untuk memperbaiki masalah ini, karena telah benar-benar merusak banyak dari apa yang sebelumnya bekerja. Dan ya, saya mencoba VPN tetapi mengurangi kecepatan transfer dari 100Mbps + menjadi sekitar 20
Michael
@Michael: karena server DNS lokal saya dikonfigurasikan untuk hanya mendukung IPv4, jawaban Dimarc67 relevan bagi saya (ini juga mengapa ini ditandai sebagai jawaban yang diterima). Dari sana, saya baru saja mengatur VPN untuk semua perangkat Android, dan saya senang menggunakannya sejak saat itu. Saya belum melihat adanya pengurangan kecepatan transfer — saya tidak akan peduli, mengingat bagaimana saya menggunakan perangkat seluler. Untuk apa nilainya, saya menggunakan OpenVPN di sisi server Debian, dan OpenVPN Connect di perangkat Android.
Arseni Mourzenko
2

Saya menemukan posting ini ketika mencoba untuk mendapatkan perangkat Android 6.0 saya untuk menggunakan server DNS yang dikonfigurasi secara lokal untuk menyelesaikan nama host lokal. Satu jawaban di atas menunjukkan bahwa Android 5.0 dan yang lebih baru bersikeras menggunakan server DNS IPv6. Ini adalah petunjuk yang menuntun saya ke solusi saya.

Router saya mengiklankan server DNS IPv6 yang disediakan oleh ISP saya menggunakan DHCP-PD. Saya mengkonfigurasi ulang router saya untuk berhenti mengiklankan server DNS IPv6 dan sekarang perangkat Android 6.0 menyelesaikan nama host lokal menggunakan server DNS IPv4 yang disediakan oleh DHCP (IPv4).

Saya juga memiliki DNAT untuk mengalihkan semua permintaan DNS (port TCP / UDP 53) ke server DNS lokal saya. Ini sudah ada sebelum menonaktifkan iklan router dengan server IPv6 DNS jadi saya tidak tahu apakah Android 5.0+ jatuh kembali ke server DNS Google (seperti yang diklaim dalam jawaban sebelumnya) dan saya menangkapnya dengan aturan DNAT saya atau apakah Android saya Perangkat 6.0 hanya menggunakan DHCP DNS IPv4 server yang ditugaskan. Either way, resolusi nama host lokal berfungsi sekarang.

Ingat Absen
sumber
Menonaktifkan IPV6 di router saya memperbaiki masalah pada SEMUA perangkat android saya!
Ken J
2

Saya akhirnya bisa menyelesaikan ini dengan mengatur sendiri server DHCP di jaringan yang sama, yang mengkonfigurasi Domain Pencarian yang benar untuk dikirim ke klien.

Setelah saya memiliki server dhcp, dalam kasus saya isc-dhcpd dengan konfigurasi di dhcp.conf:

option domain-name "myrealdomain.tld";

Android dapat menyelesaikan A-record lokal yang diatur di server DNS saya.

Erik Westrup
sumber