2 poin oleh GN⁺ 2026-03-21 | 3 komentar | Bagikan ke WhatsApp
  • 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
  • mDNSResponder memproses 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, .lan mengalami kegagalan, sementara domain standar (google.com dll.) 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
  • mDNSResponder mencegat 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 tcpdump menunjukkan 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)

Pengujian dan langkah reproduksi

  • Mengatur dnsmasq yang dipasang via Homebrew sebagai resolver DNS lokal, lalu memetakan domain *.internal atau *.example-private ke 127.0.0.1

    • Menetapkan nameserver 127.0.0.1 di 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”
  • Perintah dig @127.0.0.1 dan host mengembalikan respons normal, tetapi semua aplikasi yang menggunakan resolver sistem gagal

    • Ini karena mDNSResponder memblokir kueri secara internal dan tidak memanggil DNS unicast

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.uk tetap 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
  • 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 sudo setiap kali ada perubahan

Spesifikasi teknis dan lingkungan verifikasi

  • macOS 26.3.1 (Build 25D771280a), Apple Silicon (arm64)
  • dnsmasq dipasang melalui Homebrew dan mendengarkan di 127.0.0.1:53
  • Perintah dig dan host merespons normal, sedangkan ping, curl, python3 socket.getaddrinfo gagal
  • 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

 
lidar 2026-03-22

Karena ini, saya sudah tidak bisa memakai Tailscale MagicDNS selama beberapa hari..

 
minhoryang 2026-03-21

Saya berharap tailscale akan mengakali masalah ini.

 
GN⁺ 2026-03-21
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

    • Menurut saya, penggunaan tanpa secara jelas menyatakan bahwa konten dibuat AI sama sekali tidak bisa diterima
      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
    • Semua OS punya masalah kecil seperti ini
      Di Linux maupun Windows juga bisa ditulis contoh-contoh yang sama menyakitkannya. Pada akhirnya ini soal “memilih racun yang mana”
    • Masalah seperti ini sudah menjadi tradisi Apple selama puluhan tahun
      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
    • Toh Apple sejak dulu terkenal sebagai perusahaan yang tidak benar-benar membaca laporan, jadi meskipun mereka membuang laporan LLM, mungkin tidak banyak yang berubah
    • Saya mengalami masalah kecil seperti ini di semua OS, tetapi rollback di Linux itu mudah
      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

    • Ada rumor bahwa iOS 27 akan menjadi versi stabilisasi bergaya Snow Leopard
      Semoga macOS 27 juga begitu (sumber)
    • Sebagai orang yang menjadikan produksi musik sebagai hobi, indikator mikrofon benar-benar tidak perlu dan mengganggu
      Filosofi macOS terasa terlalu keras kepala dan sepihak, dan itu membuat frustrasi
    • Untuk masalah YellowDot, saya sempat berpikir mungkin bisa diakali dengan LUT untuk memetakan warna titik rekaman menjadi hitam
      Saya tidak memakai macOS secara langsung, tetapi secara teori tampaknya memungkinkan
    • Jadi ini penyebabnya kenapa di M1 bisa sampai 1600 nit, tetapi di M5 tidak bisa lewat 600 nit
      Untuk sementara sepertinya saya harus pasrah saja
    • Pembatasan kecerahan titik mikrofon dibuat untuk tujuan perlindungan privasi
      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

    • Bukankah di Mac Anda tetap bisa menjalankan kernel sendiri? Bukankah masalahnya justru dukungan driver?
    • macOS memang tidak sempurna, tetapi menyebut keseluruhannya “mengerikan” menurut saya adalah penilaian yang berlebihan
    • Saya juga tidak membenci macOS. Hanya saja, menyimpulkan bahwa itu “mengerikan” terasa kurang meyakinkan
  • Saat melakukan pengembangan web lokal, saya memakai *.localhost
    Semua 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.)

    • *.*.localhost juga didukung, jadi sekarang kita bisa menyalin struktur domain production apa adanya ke lokal
      ArchiveBox memakai fitur ini untuk menerapkan isolasi domain per snapshot dan mengurangi risiko keamanan
    • Di Tahoe, ini bekerja dengan baik juga di python maupun wget
    • Saya mengujinya di Chrome, dan sepertinya di Safari juga akan berfungsi sama
    • Saya juga memakai cara ini. Hanya saja .localhost agak panjang
      Dulu saya memakai .local, tetapi bentrok terlalu sering
    • Kami memakai dev.our-root-domain.com yang dipetakan ke 127.0.0.1 di DNS publik
  • Di mesin Yosemite lama, saya sudah lama memakai konfigurasi yang menyediakan beberapa TLD lokal
    Metode /etc/resolver sebenarnya sudah direncanakan untuk ditinggalkan sejak sekitar 2014, dan kali ini tampaknya benar-benar dihapus
    Sebagai gantinya, cara yang benar adalah menyimpan konfigurasi langsung dengan scutil

    • Tetapi scutil saja tidak cukup
      Beberapa 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/X dan dnsmasq, dan tidak ada masalah
    Di file konfigurasi saya selalu menyertakan direktif domain
    Dalam praktiknya, konfigurasi ini hampir selalu dibutuhkan
    Mungkin menambahkan entri domain bisa menyelesaikan masalahnya

  • Saya 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

    • Di internet ada bias karena yang paling terlihat adalah orang-orang yang sangat tidak puas
      Menurut saya, di HN hal ini lebih terasa lagi
    • Versi Tahoe juga kebanyakan baik-baik saja
      Mengubah ukuran sudut jendela memang agak merepotkan, tetapi secara keseluruhan saya puas
      Pada akhirnya semua OS punya bug
    • Karena budaya Apple yang suka menambah fitur terus-menerus (feature creep), UX sering berubah tanpa perlu
      Dialog notifikasi adalah contoh yang mewakili
    • Saya juga suka selera estetika macOS
      Hanya saja kurangnya kustomisasi cukup disayangkan
      Mungkin kerinduan pada UI lama seperti Windows 98 memang soal perbedaan generasi
    • Secara umum saya suka UX-nya
      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

  • *.localhost bekerja secara default
    Bahkan tanpa dnsmasq pun kita bisa menghubungkan banyak hostname ke 127.0.0.1

    • Tetapi kalau perlu memetakan IP privat internal ke alamat lain, cara ini tidak cukup
    • Domain seperti *.example-private diperlukan untuk membedakan beberapa perangkat lewat IP privat
      Kalau hanya ingin memakai localhost, ya cukup pakai 127.0.0.1
      Secara pribadi saya memakai *mDNS .local untuk memanfaatkan konfigurasi otomatis berbasis DHCP