Pengaturan DNS kustom seperti .internal tidak berfungsi di macOS 26
(gist.github.com/adamamyl)- Di macOS 26.3.1, pengaturan DNS per domain berbasis
/etc/resolver/dinonaktifkan untuk TLD nonstandar, sehingga lingkungan pengembangan lokal yang sudah ada menjadi terhenti mDNSRespondermemproses permintaan TLD kustom hanya melalui mDNS dan sama sekali tidak merujuk ke nameserver unicast yang ditentukan- Seluruh TLD yang tidak ada di root zone IANA seperti
.internal,.test,.home.arpa,.lanmengalami kegagalan, sementara domain standar (google.comdll.) tetap berfungsi normal - Satu-satunya solusi sementara adalah mendaftarkannya secara manual di
/etc/hosts, tetapi ini tidak realistis untuk lingkungan dinamis (Docker, Kubernetes, dll.) - Seluruh alur kerja DNS lokal yang telah lama digunakan komunitas pengembang macOS terhenti, sehingga berdampak luas pada alat pengembangan dan fitur integrasi VPN
Regresi DNS yang terjadi di macOS 26
-
Di macOS 26.3.1 (Darwin 25.3.0, Build 25D771280a), fitur pengaturan DNS per domain melalui
/etc/resolver/rusak- Fitur yang bekerja normal hingga macOS 25.x berhenti setelah pembaruan ke versi 26
- Meski merupakan fitur yang tercantum di dokumentasi resmi Apple (
man 5 resolver), kini tidak lagi berfungsi pada TLD nonstandar
-
mDNSRespondermencegat semua permintaan TLD kustom lewat mDNS, dan mengabaikan nameserver unicast yang ditentukan- Di semua aplikasi yang menggunakan
getaddrinfo()(ping,curl,python3 socket), muncul error “Unknown host” - Hasil
tcpdumpmenunjukkan tidak ada lalu lintas sama sekali menuju DNS lokal (127.0.0.1:53) - Pada perintah
dns-sd -G v4, terlihat respons “No Such Record” dan TTL yang tidak normal, sangat panjang (sekitar 108.002 detik)
- Di semua aplikasi yang menggunakan
Pengujian dan langkah reproduksi
-
Mengatur
dnsmasqyang dipasang via Homebrew sebagai resolver DNS lokal, lalu memetakan domain*.internalatau*.example-privateke 127.0.0.1- Menetapkan
nameserver 127.0.0.1di file/etc/resolver/example-private - Pada perintah
scutil --dns, resolver tersebut ditampilkan sebagai terdaftar dengan benar - Namun saat menjalankan
ping probe.example-private, muncul error “Unknown host”
- Menetapkan
-
Perintah
dig @127.0.0.1danhostmengembalikan respons normal, tetapi semua aplikasi yang menggunakan resolver sistem gagal- Ini karena
mDNSRespondermemblokir kueri secara internal dan tidak memanggil DNS unicast
- Ini karena
Daftar TLD yang terdampak
| TLD | Status | Catatan |
|---|---|---|
.internal |
Gagal | TLD penggunaan khusus dalam draft IETF, normal di macOS 25 |
.test |
Gagal | Dicadangkan untuk pengujian lokal menurut RFC 6761 §6.2 |
.home.arpa |
Gagal | Dicadangkan untuk jaringan rumah menurut RFC 8375 |
.lan |
Gagal | Tidak resmi tetapi digunakan luas |
| TLD tak terdaftar lainnya | Gagal | Semua TLD yang tidak ada di root zone IANA |
- Dalam kasus
.test, meskipun seharusnya di-resolve melalui DNS normal sesuai RFC 6761, macOS 26 justru menanganinya sebagai khusus mDNS - Sebaliknya, domain yang terdaftar di IANA seperti
google.com,bbc.co.uktetap berfungsi normal seperti sebelumnya
Dampak pada lingkungan dan alat pengembangan
-
Seluruh alur kerja DNS untuk pengembangan lokal terhenti
- Pengembang yang menggunakan kombinasi
dnsmasq+/etc/resolver/untuk*.test,*.internal, dll. - Fitur resolusi nama kontainer pada Docker Desktop dan alat serupa
- Vagrant, Tailscale, klien VPN yang membuat file
/etc/resolver/secara otomatis - Alat pengembangan lokal Kubernetes (minikube, kind, k3d, dll.) untuk resolusi
*.cluster.local
- Pengembang yang menggunakan kombinasi
-
Karena sistem menampilkan konfigurasi resolver sebagai normal di
scutil --dns, pengguna sulit menyadari masalah ini dan tidak ada log maupun pesan error
Solusi sementara dan keterbatasannya
- Satu-satunya metode yang terbukti berfungsi adalah menambahkan pemetaan domain secara manual ke
/etc/hosts- Cara ini sepenuhnya melewati
mDNSResponder - Namun, ini tidak realistis pada Docker atau lingkungan DNS dinamis, dan memerlukan hak
sudosetiap kali ada perubahan
- Cara ini sepenuhnya melewati
Spesifikasi teknis dan lingkungan verifikasi
- macOS 26.3.1 (Build 25D771280a), Apple Silicon (arm64)
dnsmasqdipasang melalui Homebrew dan mendengarkan di 127.0.0.1:53- Perintah
digdanhostmerespons normal, sedangkanping,curl,python3 socket.getaddrinfogagal - Dokumen dan standar terkait:
man 5 resolver— dokumentasi mekanisme/etc/resolver/di macOS- RFC 6761 — definisi domain penggunaan khusus seperti
.test,.localhost,.invalid,.example - RFC 8375 — definisi domain
home.arpa - IETF draft-ietf-dnsop-interneti-mdn — draft domain penggunaan khusus
.internal
3 komentar
Karena ini, saya sudah tidak bisa memakai Tailscale MagicDNS selama beberapa hari..
Saya berharap tailscale akan mengakali masalah ini.
Komentar Hacker News
Saya meninggalkan macOS karena masalah-masalah kecil seperti ini (papercuts)
Menulis bug report dengan LLM masih oke jika memang diasumsikan akan ditinjau, tetapi kalau kesalahan yang jelas seperti “berfungsi di macOS 25” masuk begitu saja, tingkat kepercayaannya turun
Kalau laporan seperti ini makin banyak, sepertinya orang akan langsung membuang laporan yang ditulis AI karena beban verifikasinya
Membiarkan AI menulis atas nama saya memberi kesan tidak sopan, seperti “waktu saya lebih berharga daripada waktu Anda”
Jika situasinya membuat Anda sulit secara terbuka mengakui penggunaan AI, itu sendiri alasan untuk memikirkan ulang tujuan penggunaannya
Di Linux maupun Windows juga bisa ditulis contoh-contoh yang sama menyakitkannya. Pada akhirnya ini soal “memilih racun yang mana”
Microsoft terkenal karena menjaga kompatibilitas mundur, sedangkan Apple terkenal karena berani merusak fitur lama
Belakangan ini Microsoft juga tidak sekonservatif dulu, sementara Apple justru terasa lebih stabil dibanding masa lalu
Di NixOS, cukup pilih versi sebelumnya dari menu boot dan seluruh sistem kembali seperti semula
Di laptop saya memakai macOS, tetapi pekerjaan nyata sebagian besar dilakukan di dalam container Linux
macOS 26 sejauh ini adalah versi yang paling merusak kompatibilitas
Sejumlah perubahan yang disengaja membuat pengembangan aplikasi jadi sangat sulit
Misalnya, aplikasi Lunar tidak lagi bisa menetapkan nilai SDR nits secara bebas sehingga kontrol kecerahan terblokir,
dan aplikasi YellowDot menjadi tak bisa dipakai karena pengaturan kecerahan indikator mikrofon diblokir
Selain itu ada berbagai bug seperti masalah event mouse pada jendela tanpa title, tabel gamma yang tidak bisa diterapkan,
dan hilangnya path file asli saat drag di aplikasi seperti Clop
Semoga macOS 27 juga begitu (sumber)
Filosofi macOS terasa terlalu keras kepala dan sepihak, dan itu membuat frustrasi
Saya tidak memakai macOS secara langsung, tetapi secara teori tampaknya memungkinkan
Untuk sementara sepertinya saya harus pasrah saja
Ini dimaksudkan agar malware tidak bisa menyembunyikan akses kamera atau mikrofon
Selain itu, pembatasan kecerahan SDR juga mungkin bertujuan mencegah lebih awal masalah baterai pada layar OLED yang akan segera hadir
Saya masih menunggu hari ketika Apple terpisah antara hardware dan software
Saya ingin Apple Silicon, tetapi tidak ingin OS mereka
Kalau saya tidak bisa menjalankan kernel dan modul saya sendiri, maka itu bukan perangkat saya
Laptop di sebelah saya boot dengan coreboot, dan itu menunjukkan filosofi saya
Saat melakukan pengembangan web lokal, saya memakai
*.localhostSemua browser modern otomatis mengartikannya sebagai 127.0.0.1, jadi tidak perlu pengaturan DNS atau modifikasi hosts
Namun ini tidak berlaku untuk program di luar browser (python, wget, dll.)
*.*.localhostjuga didukung, jadi sekarang kita bisa menyalin struktur domain production apa adanya ke lokalArchiveBox memakai fitur ini untuk menerapkan isolasi domain per snapshot dan mengurangi risiko keamanan
.localhostagak panjangDulu saya memakai
.local, tetapi bentrok terlalu seringdev.our-root-domain.comyang dipetakan ke 127.0.0.1 di DNS publikDi mesin Yosemite lama, saya sudah lama memakai konfigurasi yang menyediakan beberapa TLD lokal
Metode
/etc/resolversebenarnya sudah direncanakan untuk ditinggalkan sejak sekitar 2014, dan kali ini tampaknya benar-benar dihapusSebagai gantinya, cara yang benar adalah menyimpan konfigurasi langsung dengan
scutilscutilsaja tidak cukupBeberapa lookup di macOS masih lewat mDNSResponder, yang mengabaikan atau menimpa konfigurasi ini
Karena itu, pada akhirnya memakai unbound atau dnsmasq justru lebih sederhana
Saya juga memakai beberapa TLD dengan kombinasi
/etc/resolver/Xdan dnsmasq, dan tidak ada masalahDi file konfigurasi saya selalu menyertakan direktif
domainDalam praktiknya, konfigurasi ini hampir selalu dibutuhkan
Mungkin menambahkan entri
domainbisa menyelesaikan masalahnyaSaya kebanyakan memakai Linux, tetapi saya kurang paham kenapa orang bilang desain macOS buruk
Kalau hanya melihat UX, macOS terasa cukup rapi dan matang
Bahkan banyak tema Gnome yang populer pada dasarnya meniru gaya macOS
Menurut saya, di HN hal ini lebih terasa lagi
Mengubah ukuran sudut jendela memang agak merepotkan, tetapi secara keseluruhan saya puas
Pada akhirnya semua OS punya bug
Dialog notifikasi adalah contoh yang mewakili
Hanya saja kurangnya kustomisasi cukup disayangkan
Mungkin kerinduan pada UI lama seperti Windows 98 memang soal perbedaan generasi
Cara perpindahan ke full-screen memang unik, tetapi nyaman setelah terbiasa
Namun tidak adanya window tiling tetap merepotkan
Meski begitu saya tetap lebih memilih Linux, walau suspend dan manajemen daya sudah jadi masalah selama 8 tahun
Dulu Apple pernah memblokir sertifikat self-signed di iOS sehingga pengembangan HTTPS lokal hampir mustahil
Sulit memahami kenapa mereka perlu menyentuh bagian seperti itu
Saya suka macOS
Secara default sudah dibundel dengan zsh, dan hampir semua hal yang saya lakukan di Linux juga bisa saya lakukan di komputer pribadi saya
*.localhostbekerja secara defaultBahkan tanpa dnsmasq pun kita bisa menghubungkan banyak hostname ke 127.0.0.1
*.example-privatediperlukan untuk membedakan beberapa perangkat lewat IP privatKalau hanya ingin memakai localhost, ya cukup pakai 127.0.0.1
Secara pribadi saya memakai *mDNS .local untuk memanfaatkan konfigurasi otomatis berbasis DHCP