Saat DNS Berubah Tapi iPhone Masih Mengarah ke Lama — Mengapa Toggle WiFi Jadi Solusi?
Beberapa hari lalu aku mengubah konfigurasi DNS lokal di server rumah — menambahkan beberapa domain agar mengarah ke IP server lokal (192.168.1.2) supaya akses ke situs-situs tertentu tidak perlu keluar ke internet lewat Cloudflare. Semua beres di sisi server: dnsmasq sudah di-restart, konfigurasi baru terbaca, PC dan perangkat Android langsung merespons perubahan. Tapi iPhone??? Tidak.
Tapi kok masih mengakses domain-domain itu melalui IP publik, seolah-olah tidak terjadi apa-apa? Padahal aku sudah restart dnsmasq, flush DNS dari router, dan memastikan server DNS yang digunakan iPhone adalah IP server lokal (192.168.1.2). Kenapa?
DNS Cache di iOS — Lebih Agresif dari yang Saya Kira
Ternyata iOS memiliki mekanisme caching DNS yang cukup agresif — berbeda dengan Android atau Windows. Ketika sebuah DNS query berhasil di-resolve, iOS akan menyimpan hasilnya (cache) dan tidak akan melakukan query ulang ke DNS server sampai TTL (time-to-live) dari record tersebut habis. Ini dirancang untuk mempercepat browsing dan menghemat baterai, tapi jadi masalah saat kita melakukan perubahan DNS di sisi server.
Di PC, aku bisa langsung ipconfig /flushdns (Windows) atau sudo systemd-resolve --flush-caches (Linux). Di Android, cukup mati-hidupkan WiFi atau terbang mode pesawat sebentar. Tapi di iPhone? Tidak ada tombol "Flush DNS" di pengaturan — setidaknya tidak tanpa jailbreak atau aplikasi pihak ketiga.
Yang membuatnya lebih membingungkan: iPhone tetap menggunakan DNS server yang benar (192.168.1.2 — aku cek di pengaturan WiFi), tapi tetap mengembalikan hasil cache lama. Query DNS-nya tidak pernah sampai ke dnsmasq karena iOS merasa hasil yang di-cache masih valid.
Solusi Paling Sederhana: Toggle WiFi
Setelah mencoba berbagai cara — mengganti DNS server manual, restart Safari, clear history — satu-satunya yang bekerja adalah: matikan WiFi iPhone, tunggu beberapa detik, lalu hidupkan lagi.
Ini memaksa iOS untuk melakukan fresh DNS lookup karena koneksi WiFi terputus total. Setelah WiFi menyambung kembali, perangkat akan melakukan query DNS dari awal untuk setiap domain yang diakses — dan saat itulah perubahan DNS lokal aku mulai berlaku.
Alternatif — Ubah DNS Server di Pengaturan WiFi
Cara lain yang lebih teknis: buka Pengaturan → WiFi → tap ikon (i) di samping nama jaringan → gulir ke bawah ke Configure DNS → ubah ke Manual, hapus entri yang ada, lalu isi ulang dengan alamat DNS server yang sama (192.168.1.2). Simpan.
Ini memaksa iOS untuk membuang cache DNS untuk jaringan tersebut dan memulai dari awal. Tidak perlu toggle WiFi, tapi langkahnya lebih panjang dibanding sekadar mematikan dan menghidupkan WiFi.
Kenapa Android dan PC Tidak Bermasalah?
Di ekosistem yang berbeda, perilaku caching DNS memang berbeda:
- Windows: DNS Cache Service menyimpan hasil query dengan TTL standar, dan kamu bisa flush manual kapan saja. Setelah dnsmasq restart, Windows biasanya melakukan re-query pada permintaan berikutnya.
- Android: Bergantung pada versi dan OEM-nya, tapi umumnya lebih patuh pada TTL. Toggle WiFi sudah cukup.
- Linux (systemd-resolved): Sama — mengikuti TTL, bisa di-flush via CLI.
- iOS: Cenderung menyimpan cache lebih lama, bahkan kadang mengabaikan TTL pendek. Tidak ada API publik untuk flush DNS. Toggle WiFi adalah jalan paling praktis.
Ini bukan bug — ini adalah trade-off desain. Apple memprioritaskan responsivitas dan konsistensi koneksi. Dalam skenario normal (DNS jarang berubah), pendekatan ini menguntungkan pengguna. Hanya saja untuk kita yang suka oprek server sendiri, ini sedikit merepotkan.
Kesimpulan
Kalau kamu menerapkan perubahan DNS lokal di server dan perangkat iPhone-mu tidak merespons seperti yang diharapkan, jangan panik — bukan servermu yang bermasalah. Cukup matikan WiFi sejenak, lalu hidupkan lagi. Efeknya instan.
Pengalaman ini mengingatkan aku bahwa setiap sistem operasi punya cara tersendiri dalam menangani hal-hal yang kita anggap "standar" seperti DNS. Mengetahui perilaku khas tiap platform adalah bagian dari seni mengelola server rumahan, terutama kalau perangkat yang dipakai berbeda-beda.
Kalau ada yang punya pengalaman serupa atau tahu cara flush DNS di iPhone tanpa jailbreak, silakan share di kolom komentar!