macOS 26 में .internal जैसे custom DNS सेटिंग्स काम नहीं कर रहीं
(gist.github.com/adamamyl)- macOS 26.3.1 में
/etc/resolver/आधारित domain-specific DNS सेटिंग्स non-standard TLDs के लिए निष्क्रिय हो गई हैं, जिससे मौजूदा local development environments रुक गए हैं mDNSRespondercustom TLD requests को सिर्फ mDNS के रूप में हैंडल कर रहा है और निर्दिष्ट unicast nameserver को बिल्कुल refer नहीं कर रहा.internal,.test,.home.arpa,.lanआदि IANA root zone में मौजूद नहीं होने वाले अधिकांश TLDs विफल हो रहे हैं, जबकि standard domains (google.comआदि) सामान्य रूप से काम कर रहे हैं- एकमात्र अस्थायी workaround
/etc/hostsमें मैन्युअल एंट्री जोड़ना है, लेकिन dynamic environments (Docker, Kubernetes आदि) में यह व्यावहारिक नहीं है - macOS developer community में लंबे समय से इस्तेमाल हो रहा पूरा local DNS workflow टूट गया है, जिससे development tools और VPN integration features पर व्यापक असर पड़ा है
macOS 26 में DNS regression समस्या
-
macOS 26.3.1(Darwin 25.3.0, Build 25D771280a) में
/etc/resolver/के जरिए domain-specific DNS configuration की क्षमता टूट गई है- macOS 25.x तक सामान्य रूप से काम करने वाली यह सुविधा 26 version update के बाद बंद हो गई
- Apple के आधिकारिक दस्तावेज़ (
man 5 resolver) में यह capability दर्ज होने के बावजूद, non-standard TLDs पर अब यह काम नहीं करती
-
mDNSResponderसभी custom TLD requests को mDNS के जरिए intercept कर रहा है, और निर्दिष्ट unicast nameserver को नज़रअंदाज़ कर रहा हैgetaddrinfo()का उपयोग करने वाले सभी applications (ping,curl,python3 socket) में “Unknown host” त्रुटि आती हैtcpdumpके परिणाम में local DNS (127.0.0.1:53) की ओर कोई traffic नहीं दिखताdns-sd -G v4कमांड में “No Such Record” response और असामान्य रूप से लंबा TTL (लगभग 108,002 सेकंड) दिखता है
परीक्षण और पुनरुत्पादन प्रक्रिया
-
Homebrew से इंस्टॉल किए गए
dnsmasqको local DNS resolver के रूप में सेट किया गया, और*.internalया*.example-privatedomains को 127.0.0.1 पर map किया गया/etc/resolver/example-privateफ़ाइल मेंnameserver 127.0.0.1सेट किया गयाscutil --dnsकमांड में संबंधित resolver सामान्य रूप से registered दिखता है- लेकिन
ping probe.example-privateचलाने पर “Unknown host” त्रुटि आती है
-
dig @127.0.0.1औरhostकमांड सामान्य response लौटाते हैं, लेकिन system resolver का उपयोग करने वाले सभी apps विफल हो जाते हैं- इसका कारण यह है कि
mDNSResponderअंदरूनी रूप से query को block कर रहा है और unicast DNS को कॉल ही नहीं कर रहा
- इसका कारण यह है कि
प्रभावित TLDs की सूची
| TLD | स्थिति | टिप्पणी |
|---|---|---|
.internal |
विफल | IETF draft का special-use TLD, macOS 25 में सामान्य |
.test |
विफल | RFC 6761 §6.2 के अनुसार local testing के लिए आरक्षित |
.home.arpa |
विफल | RFC 8375 के अनुसार home network के लिए आरक्षित |
.lan |
विफल | अनौपचारिक, लेकिन व्यापक रूप से उपयोग में |
| अन्य unregistered TLDs | विफल | IANA root zone में मौजूद न होने वाले सभी TLDs |
.testके मामले में, RFC 6761 के अनुसार इसे सामान्य DNS के जरिए resolve होना चाहिए, लेकिन macOS 26 इसे केवल mDNS के रूप में हैंडल कर रहा है- इसके विपरीत,
google.com,bbc.co.ukजैसे IANA-registered domains पहले की तरह सामान्य रूप से काम कर रहे हैं
development environment और tools पर प्रभाव
-
पूरा local development DNS workflow टूट गया है
dnsmasq+/etc/resolver/संयोजन के साथ*.test,*.internalआदि का उपयोग करने वाले developers- Docker Desktop और समान tools की container name resolution functionality
/etc/resolver/फ़ाइलों को अपने-आप बनाने वाले Vagrant, Tailscale, VPN clients- Kubernetes local development tools (minikube, kind, k3d आदि) में
*.cluster.localresolution
-
चूंकि
scutil --dnsमें resolver configuration सामान्य दिखाई देती है, users के लिए समस्या पहचानना कठिन है और न logs मिलते हैं न error messages
अस्थायी workaround और सीमाएँ
- काम करने वाला एकमात्र तरीका
/etc/hostsमें मैन्युअल domain mapping जोड़ना है- यह तरीका
mDNSResponderको पूरी तरह bypass करता है - लेकिन Docker या dynamic DNS environments में यह व्यावहारिक नहीं है, और हर बदलाव पर
sudoअनुमति चाहिए
- यह तरीका
technical specs और verification environment
- macOS 26.3.1 (Build 25D771280a), Apple Silicon(arm64)
dnsmasqHomebrew के जरिए इंस्टॉल है और 127.0.0.1:53 पर listen कर रहा हैdigऔरhostकमांड सामान्य response देते हैं,ping·curl·python3 socket.getaddrinfoविफल होते हैं- संबंधित documents और standards:
man 5 resolver— macOS के/etc/resolver/mechanism का documentation- RFC 6761 —
.test,.localhost,.invalid,.exampleआदि special-use domains की परिभाषा - RFC 8375 —
home.arpadomain की परिभाषा - IETF draft-ietf-dnsop-interneti-mdn —
.internalspecial-use domain draft
3 टिप्पणियां
इसी वजह से मैं कई दिनों से Tailscale MagicDNS इस्तेमाल नहीं कर पा रहा हूँ..
उम्मीद है कि tailscale इस समस्या को बायपास कर देगा।
Hacker News की राय
ऐसी छोटी-छोटी परेशानियों (papercuts) की वजह से मैंने macOS छोड़ दिया
LLM से bug report लिखवाना, अगर उसकी समीक्षा की जाए, तो ठीक है; लेकिन “macOS 25 में यह काम करता था” जैसी साफ़ गलतियां अगर वैसे ही चली जाएँ, तो भरोसा कम हो जाता है
अगर ऐसी reports बढ़ती गईं, तो verification के बोझ की वजह से लोग AI द्वारा लिखी reports को सीधे फेंकना शुरू कर देंगे
AI से मेरे नाम पर लिखवाना एक बेअदबी भरा काम है, जो यह असर देता है कि “मेरा समय तुम्हारे समय से ज़्यादा कीमती है”
अगर आप सार्वजनिक रूप से AI इस्तेमाल करने की बात कहने में असहज हैं, तो वही अपने-आप में इस उपयोग के मकसद पर दोबारा सोचने की वजह है
Linux या Windows में भी उतने ही दर्दनाक उदाहरण गिनाए जा सकते हैं। आखिरकार यह “कौन-सा ज़हर चुनना है” वाली बात है
Microsoft backward compatibility बनाए रखने के लिए मशहूर था, जबकि Apple मौजूदा features को बेझिझक तोड़ देने के लिए जाना जाता था
आजकल Microsoft भी पहले जितना conservative नहीं रहा, और Apple उल्टा पहले से कुछ ज़्यादा stable लगा है
NixOS जैसे सिस्टम में boot menu से पुराना version चुनो और पूरा system वापस उसी हालत में आ जाता है
laptop पर मैं macOS चलाता हूँ, लेकिन असली काम ज़्यादातर Linux containers के अंदर करता हूँ
macOS 26 अब तक का सबसे ज़्यादा compatibility तोड़ने वाला version है
कई जानबूझकर किए गए बदलावों ने app development को बहुत मुश्किल बना दिया है
उदाहरण के लिए, Lunar app अब मनचाहे SDR nits value set नहीं कर सकता, इसलिए brightness control रुक गया,
और YellowDot app में mic indicator की brightness control बंद हो गई, जिससे वह बेकार हो गया
इसके अलावा बिना title वाली windows में mouse events की समस्या, gamma table लागू न हो पाना,
और Clop जैसे apps में drag करते समय original file path खो जाने जैसी कई bugs हैं
उम्मीद है macOS 27 भी वैसा ही हो (स्रोत)
macOS की philosophy बहुत जिद्दी और एकतरफ़ा लगती है, जो थका देती है
मैं खुद macOS इस्तेमाल नहीं करता, लेकिन सिद्धांततः यह संभव लगता है
अभी के लिए शायद बस हार माननी पड़ेगी
इसका मकसद यह है कि malware camera या mic access को छिपा न सके
और SDR brightness limit शायद आने वाले OLED displays की battery issues को पहले से रोकने की कोशिश भी हो सकती है
मैं अब भी उस दिन का इंतज़ार कर रहा हूँ जब Apple hardware और software में अलग हो जाएगा
Apple Silicon तो चाहिए, लेकिन उनका OS नहीं
अगर मैं अपना kernel और modules खुद नहीं चला सकता, तो वह मेरा hardware नहीं है
बगल वाला laptop coreboot से boot होता है, और वही मेरी philosophy दिखाता है
local web development के लिए मैं
*.localhostइस्तेमाल करता हूँसभी modern browsers इसे अपने-आप 127.0.0.1 पर resolve कर देते हैं, इसलिए DNS settings या hosts file बदलने की ज़रूरत नहीं पड़ती
हाँ, browser के बाहर के programs (python, wget वगैरह) पर यह लागू नहीं होता
*.*.localhostभी supported है, इसलिए अब production domain structure को ज्यों-का-त्यों local में replicate किया जा सकता हैArchiveBox ने इस feature से snapshot-वार domain isolation लागू करके security risk कम किए
.localhostथोड़ा लंबा लगता हैपहले
.localइस्तेमाल करता था, लेकिन उसमें conflicts बहुत थेdev.our-root-domain.comको public DNS में 127.0.0.1 पर map करके इस्तेमाल करते हैंमैं पुराने Yosemite machine पर कई local TLDs देने वाली configuration इस्तेमाल करता रहा हूँ
/etc/resolverवाला तरीका शायद 2014 के आसपास से ही deprecated था, और अब लगता है कि इसे पूरी तरह हटा दिया गया हैइसकी जगह
scutilको सीधे इस्तेमाल करके settings save करना ही सही तरीका हैscutilकाफ़ी नहीं हैकुछ macOS lookups अब भी mDNSResponder के ज़रिए इन settings को ignore या override कर देते हैं
इसलिए आखिर में unbound या dnsmasq इस्तेमाल करना ज़्यादा आसान पड़ता है
मैं भी
/etc/resolver/Xऔर dnsmasq के साथ कई TLDs इस्तेमाल कर रहा हूँ और कोई समस्या नहीं हैconfig file में मैं हमेशा
domaindirective शामिल करता हूँअसल में लगभग हमेशा इस setting की ज़रूरत पड़ती है
शायद
domainentry जोड़ने से समस्या हल हो जाएमैं ज़्यादातर Linux इस्तेमाल करता हूँ, लेकिन लोग macOS के design को खराब क्यों कहते हैं, यह मुझे ठीक से समझ नहीं आता
सिर्फ UX देखें तो macOS काफ़ी पॉलिश्ड लगा है
Gnome themes में लोकप्रिय कई themes भी macOS style की नकल करते हैं
खासकर HN में तो और भी ज़्यादा, ऐसा मुझे लगता है
window corners resize करना थोड़ा असुविधाजनक है, लेकिन कुल मिलाकर संतोषजनक है
आखिर हर OS में bugs होते हैं
notifications dialog इसका एक अच्छा उदाहरण है
बस customization की कमी खलती है
Windows 98 जैसे पुराने UI को याद करना शायद पीढ़ी का फ़र्क हो सकता है
fullscreen में जाने का इसका तरीका अलग है, लेकिन आदत पड़ जाए तो ठीक लगता है
हाँ, window tiling की कमी असुविधाजनक है
फिर भी मैं Linux को पसंद करता हूँ। suspend या power management पिछले 8 साल से समस्या बने हुए हैं
पहले Apple ने iOS में self-signed certificates को ब्लॉक कर दिया था, जिससे local HTTPS development लगभग असंभव हो गया था
समझना मुश्किल है कि उन्होंने ऐसी चीज़ों से छेड़छाड़ क्यों की
मुझे macOS पसंद है
इसमें default रूप से zsh शामिल है, और Linux पर जो लगभग सब कुछ करता था, वह अपने personal computer पर भी कर सकता हूँ
*.localhostडिफ़ॉल्ट रूप से काम करता हैdnsmasq के बिना भी कई hostnames को 127.0.0.1 से जोड़ा जा सकता है
*.example-privateजैसे domains कई devices को private IPs से अलग-अलग पहचानने के लिए ज़रूरी होते हैंअगर सिर्फ localhost इस्तेमाल करना है, तो सीधे 127.0.0.1 ही इस्तेमाल कर लो
व्यक्तिगत रूप से मैं *mDNS के .local का इस्तेमाल करता हूँ, ताकि DHCP-आधारित auto-configuration का फायदा मिल सके