वैकल्पिक हल
अन्य उपयोगकर्ताओं की तरह, मैं इस झुंझलाहट से त्रस्त हूं, लेकिन एक अर्ध-संतोषजनक समाधान पाया गया है:
my_hostname='your-hostname-here'; for key in LocalHostName ComputerName HostName ; do sudo scutil --set $key $my_hostname; done
इस कमांड को चलाने के बाद, आप जाँच सकते हैं कि वे सभी स्थान जहाँ वे होस्टनाम स्टोर करते हैं, इस वन-लाइनर के साथ समान हैं:
for key in LocalHostName ComputerName HostName ; do sudo scutil --get $key; done
यदि मैकबुक तुरंत ComputerName
एक प्रत्यय के साथ वापस नाम रखता है , तो आप इसे बंद करके बंद करने में सक्षम हो सकते हैंWake for Network Access
।
System Preferences→Energy Saver→Wake for Wi-Fi network access → Unchecked
एक बार बंद करने के बाद, समाप्त करने के लिए ऊपर दिए गए आदेशों का उपयोग करके अपनी मशीन का नाम बदलें। आप पाठ फ़ील्ड वरीयता ComputerName
का उपयोग करके वापस मजबूर करने का भी प्रयास कर सकते System Preferences→Sharing→Computer Name
हैं।
अगर इससे मदद नहीं मिली, तो अपने mDNS कैश को फ्लश करने का प्रयास करें :
# El Capitan (10.11) and later
# check if you have dscacheutil command with: which dscacheutil
sudo dscacheutil -flushcache
# Yosemite (10.10) and ealier
# check if you have discoveryutil command with: which discoveryutil
sudo discoveryutil mdnsflushcache
sudo discoveryutil mdnsrestartquestions
sudo discoveryutil mdnsrestartregistrations
sudo discoveryutil udnsflushcache
sudo discoveryutil udnsrestartquestions
MDNS कैश फ्लश करने के बाद, ऊपर दिए गए आदेशों का उपयोग करके अपनी मशीन का नाम बदलकर पुन: प्रयास करें।
यदि यह अभी भी काम नहीं किया, तो mDNSResponder
सेवा को मारने का प्रयास करें :
sudo killall -HUP mDNSResponder
फिर, ऊपर दिए गए scutil
आदेशों का उपयोग करके अपने कंप्यूटर का नाम रीसेट करने के लिए फिर से प्रयास करें ।
यदि आप पाते हैं कि इनमें से कोई भी अच्छा नहीं कर रहा है, तो कुछ अन्य रिपोर्ट किए गए समाधान हैं:
- सुनिश्चित करें कि आपके पास स्थानीय नेटवर्क से केवल एक कनेक्शन है
बोंजोर को बंद करें और वापस चालू करें
# Yosemite (10.10) (and other versions with discoveryd?)
# Check for discoveryd with: ps auxww | grep -i discoveryd
sudo killall discoveryd
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist
# Mac OS versions without discoveryd
# Check for mDNSResponder with: ps auxww | grep -i mDNSResponder
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
शट डाउन करें और सभी नेटवर्किंग हार्डवेयर रीसेट करें
समस्या चर्चा
मेरे अनुभव में, होस्टनाम को इस तरह सेट करना, या मानक के माध्यम से System Preferences→Sharing→Computer Name
केवल कुछ समय तक चलता है। यह आमतौर पर <24 घंटे है, लेकिन कभी-कभी ComputerName
यहां तक कि तुरंत कोष्ठकों में एक प्रत्यय संख्या होने के लिए भी बदल जाता है (N)
। मैंने देखा है कि यह संख्या तुरंत (4)
या तो या (5)
हाल ही में scutil --set
ऊपर दिए गए आदेशों का उपयोग करने के बाद सेट की गई है।
इस व्यवहार का कारण मैक ओएस में चल रहे कुछ डेमन कोड के कारण है जो (N)
किसी भी समय एक प्रत्यय को जोड़ने का प्रयास करता है जो नेटवर्क पर एक ही होस्टनाम पाया जाता है। में सभी मेरे परीक्षण के, होस्ट नामों मैं चुन लिया है कभी नेटवर्क पर पहले से इस्तेमाल किया गया है और इसके अलावा था कभी नहीं के रूप में अच्छी तरह से किसी भी ब्लूटूथ डिवाइस के लिए इस्तेमाल किया गया।
इस व्यवहार के "ट्रिगर" का असली कारण अज्ञात और असत्यापित है। यह कहना है: मेरे सभी शोध ऑनलाइन और परीक्षण के माध्यम से मैं निश्चित रूप से यह निर्धारित करने में सक्षम नहीं हूं कि मैक ओएस यह क्यों तय करता है कि नाम पहले से ही उपयोग में है जब यह स्पष्ट रूप से नहीं है और कभी नहीं किया गया है।
मेरा सिद्धांत यह है कि किसी mDNS
भी तरह Bonjour
( Avahi
लिनक्स उपयोगकर्ताओं के लिए, या विंडोज उपयोगकर्ताओं के लिए Zero-conf
नेटवर्किंग ) के रूप में जाना जाता है , आंशिक रूप से दोष हो सकता है। किसी भी तरह, मैकबुक या एप्पल डिवाइस का पूर्व होस्टनाम कहीं न कहीं लगातार बना रहता है mDNS
, या शायद ARP
टेबल + होस्टनाम जानकारी का कुछ रूप जिसे मैकबुक या एप्पल डिवाइस द्वारा खोजा और संग्रहीत किया जाता है। यह किसी प्रकार की दौड़ की स्थिति हो सकती है। किसी तरह प्रविष्टि को डुप्लिकेट के रूप में देखा जाता है और मैक ओएस प्रत्यय का नाम बदलने वाले व्यवहार को ट्रिगर करता है।
Apple द्वारा दी गई DNS सेवा डिस्कवरी उपयोगिता का उपयोग करते समय नंबर प्रत्यय होस्टनाम दिखाई देते हैं dns-sd
:
उदाहरण के लिए, होस्टनाम का उपयोग करते हुए my-mbp-hostname
, यह निम्नलिखित प्रविष्टियों की तरह दिखाई दे सकता है
dns-sd -Z _ssh._tcp
; To direct clients to browse a different domain, substitute that domain in place of '@'
lb._dns-sd._udp PTR @
; In the list of services below, the SRV records will typically reference dot-local Multicast DNS names.
; When transferring this zone file data to your unicast DNS server, you'll need to replace those dot-local
; names with the correct fully-qualified (unicast) domain name of the target host offering the service.
_ssh._tcp PTR my-mbp-hostname\032(5)._ssh._tcp
my-mbp-hostname\032(5)._ssh._tcp SRV 0 0 22 my-mbp-hostname.local. ; Replace with unicast FQDN of target host
my-mbp-hostname\032(5)._ssh._tcp TXT ""
[...SNIP...]
[...OTHER SSH HOSTS HERE...]
[...SNIP...]
सही कारण का सिद्धांत अपुष्ट है क्योंकि आंतरिक मैक ओएस राज्य और निम्न स्तर के एप्पल ओएस डिबगिंग टूल तक पहुंच के बिना वास्तव में क्या हो रहा है, इसे खोजना और निरीक्षण करना मुश्किल है। के बीच संपर्क mdnsd
, mDNSResponder
और mDNSResponderHelper
अन्य मैक ओएस सेवाओं या नेटवर्क पर भी अन्य Avahi डेमॉन के साथ अच्छी तरह से प्रलेखित नहीं कर रहे हैं या आसानी से दिखाई। नेटवर्क खोज के कुछ रूपों की वर्तमान स्थिति को इसके माध्यम से dns-sd
और arp -a
शायद देखा जा सकता है arp -a -n
। अन्य सिद्धांत या संभावित स्थान जहाँ यह होस्टनाम जानकारी संग्रहीत की जा सकती है:
- ब्लूटूथ डिवाइस नाम ओएस द्वारा कहीं कायम है
- SMB (विंडोज़ फ़ाइल शेयर) नेटवर्क द्वारा समय-समय पर कैश की गई जानकारी
smbd
( /System/Library/LaunchDaemons/com.apple.smbd.plist
)
- AFP नेटवर्क से साझा की गई जानकारी साझा करें (संभवतः इसके द्वारा भी
smbd
?)
mDNS
/ Avahi
परावर्तक (या अन्य प्रकार के बॉनजोर / शून्य-कॉन्फिड पैकेट के राउटर या किसी अन्य डिवाइस द्वारा नेटवर्क पर पुनः प्रसारण)?
mDNSResponder
या mdnsd
( /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
) द्वारा कैश किया जा सकता है
समाधान (प्लेसहोल्डर)
6 अक्टूबर 2017 तक, इस समस्या को फिर से आने से रोकने के लिए अभी भी Apple या कोई उपाय नहीं है। मैं इस समस्या का वर्णन करते हुए Apple के साथ बग रिपोर्ट दर्ज करने की सलाह देता हूं । आप Apple ग्राहक सहायता से संपर्क करना चाह सकते हैं ।
अधिक लोग जो इस कष्टप्रद मुद्दे के बारे में शोर करते हैं, तेजी से Apple उत्पाद प्रबंधक प्राथमिकता देंगे, ताकि इंजीनियर्स इसे ठीक करने में सक्षम होंगे।
डिबगिंग / भविष्य की जांच की लाइनें
इस MacRumors फोरम चर्चा में कुछ उपयोगी जानकारी के साथ-साथ एक सिद्धांत भी जोड़ा गया है कि Wake for Wi-Fi Network Access
डिवाइस और वेक / स्लीप का इस मुद्दे से क्या लेना-देना है। प्रस्तुत अन्य सिद्धांतों को कई नेटवर्क एडेप्टर (जैसे: वाईफाई + थंडरबोल्ट ईथरनेट) का उपयोग करना पड़ता है, ऐसे राउटर जिनके पास कई बैंड 802.11 b/g/n
( जैसे 2.4GHz) या 802.11 a/ac
(5GHz) पर कई एक्सेस पॉइंट्स होते हैं । ये संयोजन अस्थायी रूप से नेटवर्क पर दिखाने के लिए Apple डिवाइस के "भूत" संस्करण का कारण हो सकता है, नाम बदलने वाले व्यवहार को ट्रिगर करता है।
थे कोई उपयोगी लॉग लाइनों में /var/log/system.log
है कि इस नाम व्यवहार ट्रिगर हो रहा से संबंधित दिखाई दिया। माना जाता है कि mDNSResponder
उच्च लॉग स्तरों में कॉन्फ़िगर किया जा सकता है:
- त्रुटि - त्रुटि संदेश
- चेतावनी - क्लाइंट-आरंभ किए गए ऑपरेशन
- नोटिस - नींद प्रॉक्सी ऑपरेशन
- जानकारी - सूचनात्मक संदेश
गैर-मौजूद फ़ाइल के माध्यम से इन डिबग स्तरों को कैसे सेट /Library/Preferences/com.apple.mDNSResponder.plist
किया जाए, यह स्पष्ट नहीं था। मेरे पास उपयोग करने के लिए एक उत्कृष्ट उदाहरण कॉन्फ़िगरेशन नहीं था, इसलिए मैं किसी भी अतिरिक्त लॉगिंग जानकारी को प्राप्त करने में असमर्थ था mDNSResponder
।
अन्य ट्रैफ़िक के बीच संभावित रूप से प्रासंगिक ARP पैकेट जानकारी के साथ नेटवर्क पर प्रसारित किए जा रहे पैकेट दिखाने के लिए Wireshark जैसे उपकरण उपयोगी हो सकते हैं mDNS
।
मैक ओएस पर, dscacheutil
इस जानकारी को देखने के लिए अन्य उपकरण जैसे मौजूद हो सकते हैं। यह अच्छी तरह से प्रलेखित या स्पष्ट नहीं है कि इस जानकारी के निश्चित कैश को कैसे देखें, जिसका उपयोग होस्टनाम पुनर्नामकरण कोड द्वारा किया जाता है। जब मैंने इस उपयोगिता का परीक्षण किया, तो यह सटीक होस्टनाम के लिए क्वेरी मोड का उपयोग करने के अलावा किसी भी उपयोगी आउटपुट का उत्पादन नहीं किया (आईपी गोपनीयता के आधार पर स्क्रब किया गया):
sudo dscacheutil -cachedump -entries host
Unable to get details from the cache node
sudo dscacheutil -cachedump
Unable to get details from the cache node
dscacheutil -cachedump
Unable to get details from the cache node
dscacheutil -cachedump -entries host
Unable to get details from the cache node
dscacheutil -q host -a name my-mbp-hostname.local
name: my-mbp-hostname.local
ipv6_address: fe80:4::1a:1234:abcd:ef01
ipv6_address: 2601:280:1b00:1234:567:abcd:ef01:1234
name: my-mbp-hostname.local
ip_address: 192.168.1.123