macOS 26'da `.internal` gibi özel DNS ayarları çalışmıyor
(gist.github.com/adamamyl)- macOS 26.3.1'de
/etc/resolver/tabanlı alan adına özel DNS yapılandırmaları standart dışı TLD'lerde geçersiz hale geliyor ve mevcut yerel geliştirme ortamlarını bozuyor mDNSResponder, özel TLD isteklerini yalnızca mDNS olarak işliyor ve tanımlanan unicast ad sunucularına hiç başvurmuyor.internal,.test,.home.arpa,.langibi IANA kök bölgesinde bulunmayan TLD'lerin tamamı başarısız oluyor; standart alan adları (google.comvb.) ise normal çalışıyor- Tek geçici çözüm
/etc/hostsiçine elle kayıt eklemek, ancak bu dinamik ortamlar için (Docker, Kubernetes vb.) pratik değil - macOS geliştirici topluluğunun uzun süredir kullandığı yerel DNS iş akışının tamamı bozulmuş durumda; bunun geliştirme araçları ve VPN entegrasyonları üzerinde geniş çaplı etkisi var
macOS 26'da ortaya çıkan DNS regresyonu
-
macOS 26.3.1'de (Darwin 25.3.0, Build 25D771280a)
/etc/resolver/üzerinden alan adına özel DNS yapılandırma özelliği bozulmuş durumda- macOS 25.x'e kadar normal çalışan bu özellik, 26 sürüm güncellemesinden sonra durdu
- Apple'ın resmi belgelerinde (
man 5 resolver) açıkça belirtilen bu özellik, standart dışı TLD'lerde artık çalışmıyor
-
mDNSResponder, tüm özel TLD isteklerini mDNS olarak yakalıyor ve tanımlanmış unicast ad sunucularını yok sayıyorgetaddrinfo()kullanan tüm uygulamalarda (ping,curl,python3 socket) “Unknown host” hatası oluşuyortcpdumpçıktısına göre yerel DNS'e (127.0.0.1:53) hiç trafik gitmiyordns-sd -G v4komutunda “No Such Record” yanıtı ve anormal derecede uzun bir TTL (yaklaşık 108.002 saniye) görünüyor
Test ve yeniden üretim adımları
-
Homebrew ile kurulan
dnsmasq, yerel DNS çözücüsü olarak yapılandırılıyor ve*.internalveya*.example-privatealan adları 127.0.0.1'e eşleniyor/etc/resolver/example-privatedosyasındanameserver 127.0.0.1tanımlanıyorscutil --dnskomutunda ilgili çözücü doğru şekilde kayıtlı görünüyor- Ancak
ping probe.example-privateçalıştırıldığında “Unknown host” hatası alınıyor
-
dig @127.0.0.1vehostkomutu normal yanıt döndürürken, sistem çözücüsünü kullanan tüm uygulamalar başarısız oluyor- Bunun nedeni
mDNSResponder'ın sorguları içeride engelleyip unicast DNS'i hiç çağırmaması
- Bunun nedeni
Etkilenen TLD listesi
| TLD | Durum | Not |
|---|---|---|
.internal |
Başarısız | IETF taslağındaki özel amaçlı TLD; macOS 25'te çalışıyordu |
.test |
Başarısız | RFC 6761 §6.2 uyarınca yerel test için ayrılmıştır |
.home.arpa |
Başarısız | RFC 8375 uyarınca ev ağı kullanımı için ayrılmıştır |
.lan |
Başarısız | Resmi değil ama yaygın kullanılıyor |
| Diğer kayıtsız TLD'ler | Başarısız | IANA kök bölgesinde olmayan tüm TLD'ler |
.testiçin, RFC 6761'de belirtildiği gibi normal DNS üzerinden çözümlenmesi gerekirken, macOS 26 bunu yalnızca mDNS olarak işliyor- Buna karşılık
google.com,bbc.co.ukgibi IANA kayıtlı alan adları eskisi gibi normal çalışıyor
Geliştirme ortamı ve araçlara etkisi
-
Yerel geliştirme için kullanılan DNS iş akışının tamamı bozuluyor
dnsmasq+/etc/resolver/kombinasyonuyla*.test,*.internalvb. kullanan geliştiriciler- Docker Desktop ve benzeri araçların konteyner adı çözümleme özelliği
/etc/resolver/dosyalarını otomatik oluşturan Vagrant, Tailscale, VPN istemcileri- Kubernetes yerel geliştirme araçlarında (minikube, kind, k3d vb.)
*.cluster.localçözümlemesi
-
scutil --dnsçıktısında çözücü yapılandırması normal göründüğü için, kullanıcıların sorunu fark etmesi zorlaşıyor ve günlüklerde ya da hata mesajlarında bir belirti bulunmuyor
Geçici çözüm ve sınırlamalar
- Çalışan tek yöntem,
/etc/hostsiçine alan adı eşlemelerini elle eklemek- Bu yöntem
mDNSResponder'ı tamamen baypas ediyor - Ancak Docker veya dinamik DNS ortamlarında pratik değil ve her değişiklik için
sudoyetkisi gerekiyor
- Bu yöntem
Teknik özellikler ve doğrulama ortamı
- macOS 26.3.1 (Build 25D771280a), Apple Silicon (arm64)
dnsmasq, Homebrew üzerinden kurulmuş ve 127.0.0.1:53 üzerinde dinliyordigvehostkomutları normal yanıt veriyor;ping,curl,python3 socket.getaddrinfobaşarısız oluyor- İlgili belgeler ve standartlar:
man 5 resolver— macOS'un/etc/resolver/mekanizmasını belgeleyen dokümantasyon- RFC 6761 —
.test,.localhost,.invalid,.examplegibi özel amaçlı alan adlarını tanımlar - RFC 8375 —
home.arpaalan adını tanımlar - IETF draft-ietf-dnsop-interneti-mdn —
.internalözel amaçlı alan adı taslağı
3 yorum
Bu yüzden birkaç gündür Tailscale MagicDNS'i kullanamıyorum..
Umarım tailscale bu sorunu aşmanın bir yolunu bulur.
Hacker News görüşleri
Bu tür ufak tefek sorunlar (papercuts) yüzünden macOS’tan ayrıldım
LLM ile hata raporu yazmak, inceleme yapılması şartıyla sorun değil ama “macOS 25’te çalışıyordu” gibi bariz hatalar aynen girince güven azalıyor
Bu tür raporlar artarsa, doğrulama yükü yüzünden insanların yapay zekanın yazdığı raporları doğrudan çöpe atacağını düşünüyorum
Yapay zekaya benim adıma yazı yazdırmak, “benim zamanım seninkinden daha değerli” izlenimi veren kaba bir davranış
Eğer yapay zeka kullandığını açıkça söylemenin zor olacağı bir durumdaysan, bu bile tek başına kullanım amacını yeniden düşünmen gerektiğini gösterir
Linux ya da Windows için de aynı derecede can sıkıcı örnekler yazılabilir. Sonuçta mesele “hangi zehri seçeceğin”
Microsoft geri uyumluluğu korumakla, Apple ise mevcut özellikleri cesurca bozmakla tanınırdı
Bugünlerde Microsoft da eskisi kadar muhafazakar değil, Apple ise sanki geçmişe kıyasla daha kararlı hale gelmiş gibi
NixOS’ta önyükleme menüsünden önceki sürümü seçtiğinde tüm sistem geri dönüyor
Dizüstünde macOS kullanıyorum ama asıl işlerimin çoğunu Linux container’ları içinde yapıyorum
macOS 26, şimdiye kadar gördüğüm uyumluluğu en çok bozan sürüm
Birçok kasıtlı değişiklik uygulama geliştirmeyi çok zorlaştırdı
Örneğin Lunar uygulamasında SDR nit değerleri artık keyfi olarak ayarlanamıyor ve bu yüzden parlaklık kontrolü engelleniyor,
YellowDot uygulamasında ise mikrofon göstergesinin parlaklığı ayarlanamadığı için uygulama kullanılamaz hale geliyor
Ayrıca başlıksız pencerelerde fare olayları sorunu, gamma tablosunun uygulanamaması,
Clop gibi uygulamalarda sürükleme sırasında kaynak dosya yolunun kaybolması gibi çeşitli hatalar var
Umarım macOS 27 de öyle olur (kaynak)
macOS’in yaklaşımı fazla inatçı ve tek taraflı olduğu için bunaltıcı geliyor
macOS’i doğrudan kullanmıyorum ama teoride mümkün görünüyor
Şimdilik vazgeçmek gerekecek gibi görünüyor
Bu önlem, kötü amaçlı yazılımların kamera ve mikrofon erişimini gizleyememesi için alınmış
Ayrıca SDR parlaklık sınırı, yakında gelecek OLED ekranların pil sorunlarını önceden engelleme amacı da taşıyor olabilir
Apple’ın donanım ve yazılım olarak ayrıldığı günü hâlâ bekliyorum
Apple Silicon istiyorum ama onların işletim sistemini istemiyorum
Kendi kernel’imi ve modüllerimi çalıştıramıyorsam o cihaz benim değildir
Yanımdaki dizüstü coreboot ile açılıyor; bu da benim yaklaşımımı gösteriyor
Yerel web geliştirmede
*.localhostkullanıyorumTüm modern tarayıcılar bunu otomatik olarak 127.0.0.1’e çözümlüyor, dolayısıyla DNS ayarı ya da hosts dosyasını değiştirmek gerekmiyor
Yalnız bu, tarayıcı dışındaki programlarda (python, wget vb.) geçerli değil
*.*.localhostda destekleniyor; böylece artık prodüksiyon alan adı yapısını birebir yerelde kopyalamak mümkünArchiveBox bu özellikle snapshot başına alan adı izolasyonu kurarak güvenlik riskini azalttı
.localhostbiraz uzun geliyorEskiden
.localkullanıyordum ama çok çakışma oluyordudev.our-root-domain.comalan adını genel DNS’te 127.0.0.1’e eşleyerek kullanıyoruzEski bir Yosemite makinede birden fazla yerel TLD sağlayan bir yapılandırma kullanıyordum
/etc/resolveryöntemi zaten 2014 civarından beri kaldırılması planlanan bir şeydi; sanırım bu kez tamamen kaldırılmışBunun yerine yapılandırmayı doğrudan
scutilile kaydetmek asıl yöntemscutiltek başına yetmiyorBazı macOS sorguları hâlâ mDNSResponder üzerinden gidiyor ve bu ayarları yok sayabiliyor ya da ezebiliyor
Bu yüzden sonunda unbound ya da dnsmasq kullanmak daha basit oluyor
Ben de
/etc/resolver/Xile dnsmasq kombinasyonunda birden fazla TLD kullanıyorum ve sorun yaşamıyorumYapılandırma dosyasında her zaman
domainyönergesini ekliyorumPratikte bu ayar neredeyse her zaman gerekli oldu
Muhtemelen
domaingirdisini eklemek sorunu çözebilirBen ağırlıklı olarak Linux kullanıyorum ama insanların neden macOS’in tasarımının kötü olduğunu söylediğini pek anlamıyorum
Sadece UX’e bakınca macOS bana oldukça rafine geliyordu
Gnome için popüler olan temaların çoğu da zaten macOS stilini taklit ediyor
Özellikle HN’de bunun daha belirgin olduğunu düşünüyorum
Pencere köşelerini ayarlamak biraz kullanışsız ama genel olarak memnunum
Sonuçta her işletim sisteminde hata var
Bildirim pencereleri bunun tipik bir örneği
Sadece özelleştirme eksikliği üzücü
Windows 98 gibi eski arayüzleri özlemek belki de kuşak farkıdır
Tam ekran geçiş biçimi farklı ama alışınca rahat
Yalnız pencere döşeme eksikliği can sıkıyor
Yine de hâlâ Linux’u tercih ediyorum; askıya alma ve güç yönetimi 8 yıldır sorunlu olsa bile
Apple’ın bir zamanlar iOS’ta self-signed sertifikaları engelleyip yerel HTTPS geliştirmeyi neredeyse imkansız hale getirdiği olmuştu
Neden böyle bir alana müdahale ettiklerini anlamak zor
macOS’i seviyorum
Varsayılan olarak zsh ile geliyor ve Linux’ta yaptığım şeylerin neredeyse hepsini kişisel bilgisayarımda da yapabiliyorum
*.localhostzaten varsayılan olarak çalışıyordnsmasq olmadan da birden fazla host adını 127.0.0.1’e bağlayabiliyorsunuz
*.example-privategibi alan adları, birden fazla cihazı özel IP’lerle ayırmak için gerekliSadece localhost kullanacaksanız doğrudan 127.0.0.1 kullanabilirsiniz
Ben şahsen DHCP tabanlı otomatik yapılandırmadan yararlanmak için mDNS’in
*.localalanını kullanıyorum