Penanganan masalah
Seperti pengguna lain, saya terganggu oleh gangguan ini tetapi telah menemukan solusi yang kurang memuaskan:
my_hostname='your-hostname-here'; for key in LocalHostName ComputerName HostName ; do sudo scutil --set $key $my_hostname; done
Setelah menjalankan perintah ini, Anda dapat memeriksa bahwa semua tempat di mana mereka menyimpan nama host sama dengan ini satu-liner:
for key in LocalHostName ComputerName HostName ; do sudo scutil --get $key; done
Jika Macbook terus mengganti nama ComputerName
kembali dengan suffix, Anda mungkin dapat menghentikannya dengan mematikan Wake for Network Access
.
System Preferences→Energy Saver→Wake for Wi-Fi network access → Unchecked
Setelah mati, ganti nama mesin Anda menggunakan perintah di atas untuk menyelesaikan. Anda juga dapat mencoba memaksa ComputerName
kembali dengan menggunakan System Preferences→Sharing→Computer Name
preferensi bidang teks.
Jika ini tidak membantu, coba flushing cache mDNS Anda :
# 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
Setelah memurnikan cache mDNS, coba ganti nama mesin Anda menggunakan perintah di atas.
Jika ini masih tidak berhasil, coba matikan mDNSResponder
layanan:
sudo killall -HUP mDNSResponder
Kemudian, coba lagi untuk mengatur ulang nama komputer Anda menggunakan scutil
perintah di atas .
Jika Anda menemukan bahwa semua ini tidak ada gunanya, ada beberapa solusi lain yang dilaporkan yang meliputi:
- Pastikan Anda hanya memiliki satu koneksi ke jaringan lokal
Matikan Bonjour dan nyalakan kembali
# 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
Matikan dan setel ulang SEMUA perangkat keras jaringan
Diskusi Masalah
Dalam pengalaman saya, mengatur nama host dengan cara ini, atau melalui standar System Preferences→Sharing→Computer Name
hanya berlangsung dalam waktu singkat. Ini biasanya <24 jam, tetapi kadang-kadang ComputerName
bahkan berubah dengan segera untuk memiliki angka suffixed dalam tanda kurung (N)
. Saya telah mengamati nomor ini untuk segera diatur ke salah satu (4)
atau (5)
baru - baru ini setelah menggunakan scutil --set
perintah di atas.
Penyebab perilaku ini adalah karena beberapa kode daemon berjalan di Mac OS yang mencoba untuk menambahkan sufiks bernomor (N)
kapan saja ketika nama host yang sama ditemukan di jaringan. Dalam SEMUA pengujian saya, nama host yang saya pilih tidak pernah digunakan sebelumnya di jaringan dan juga tidak pernah digunakan untuk perangkat Bluetooth.
Penyebab sebenarnya dari "pemicu" perilaku ini tidak diketahui dan tidak diverifikasi. Dengan kata lain: Melalui semua riset dan pengujian online saya, saya belum dapat menentukan secara pasti mengapa Mac OS memutuskan bahwa nama itu sudah digunakan ketika jelas TIDAK dan tidak pernah.
Teori saya adalah bahwa entah bagaimana mDNS
juga dikenal sebagai Bonjour
( Avahi
untuk pengguna Linux, atau Zero-conf
Jaringan untuk pengguna Windows) mungkin sebagian yang harus disalahkan. Entah bagaimana, nama host sebelumnya dari Macbook atau perangkat Apple akan bertahan di suatu tempat di mDNS
, atau mungkin beberapa bentuk ARP
tabel + informasi nama host yang ditemukan dan disimpan oleh perangkat Macbook atau Apple. Ini bisa menjadi semacam kondisi balapan. Entah bagaimana entri tersebut dilihat sebagai duplikat dan memicu perilaku penggantian nama suffix Mac OS.
Jumlah nama host dengan akhiran terlihat saat menggunakan utilitas Discovery Layanan DNS yang disediakan Apple dns-sd
:
Misalnya, menggunakan nama host my-mbp-hostname
, itu mungkin muncul seperti entri berikut
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...]
Teori penyebab sebenarnya belum dikonfirmasi karena sulit untuk menemukan dan mengamati apa yang sebenarnya terjadi tanpa akses ke kondisi internal Mac OS & alat debugging OS Apple tingkat rendah. Interaksi antara mdnsd
,, mDNSResponder
dan mDNSResponderHelper
dengan layanan Mac OS lainnya atau bahkan daemon Avahi lainnya pada jaringan tidak terdokumentasi dengan baik atau mudah diamati. Keadaan saat ini dari beberapa bentuk penemuan jaringan dapat dilihat melalui dns-sd
dan arp -a
atau mungkin arp -a -n
. Teori atau tempat potensial lain tempat informasi hostname ini dapat disimpan adalah:
- Nama-nama perangkat Bluetooth bertahan oleh OS di suatu tempat
- Info SMB (windows file share) di-cache dari jaringan secara berkala oleh
smbd
( /System/Library/LaunchDaemons/com.apple.smbd.plist
)
- Info saham AFP di-cache dari jaringan (mungkin juga oleh
smbd
?)
mDNS
/ Avahi
reflector (atau jenis lain siaran ulang paket Bonjour / zero-conf di jaringan oleh router atau perangkat lain)?
- Dapat di-cache oleh
mDNSResponder
atau mdnsd
( /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
)
Solusi (pengganti)
Pada 6 Oktober 2017, masih belum ada solusi lengkap dari Apple atau solusi untuk mencegah masalah ini terulang kembali. Saya merekomendasikan pengarsipan Laporan Bug dengan Apple yang menjelaskan masalah ini. Anda juga dapat menghubungi Dukungan Pelanggan Apple .
Semakin banyak orang yang membuat kegaduhan tentang masalah yang mengganggu ini, semakin cepat Manajer Produk Apple akan memprioritaskan sehingga Insinyur akan dapat memperbaikinya.
Debugging / Future Investigasi
Diskusi Forum MacRumors ini memiliki beberapa informasi yang berguna serta menambahkan teori bahwa Wake for Wi-Fi Network Access
dan perangkat Bangun / Tidur ada hubungannya dengan masalah ini. Teori-teori lain yang disajikan berkaitan dengan menggunakan beberapa adapter jaringan (misalnya: WiFi + Thunderbolt Ethernet), router yang memiliki beberapa Poin Akses yang diiklankan pada beberapa band seperti pada 802.11 b/g/n
(2.4GHz) atau 802.11 a/ac
(5GHz). Kombinasi ini dapat menyebabkan versi "hantu" perangkat Apple muncul di jaringan entah bagaimana sementara waktu, memicu perilaku penggantian nama.
Ada tidak ada garis log berguna dalam /var/log/system.log
yang muncul terkait dengan perilaku penggantian nama ini dipicu. Seharusnya mDNSResponder
dapat dikonfigurasi ke level log yang lebih tinggi:
- Kesalahan - Pesan kesalahan
- Peringatan - operasi yang dimulai oleh Klien
- Pemberitahuan - Operasi proxy tidur
- Info - Pesan informasi
Cara mengatur level debug ini selain dari mungkin melalui file /Library/Preferences/com.apple.mDNSResponder.plist
yang tidak ada tidak jelas. Saya tidak memiliki contoh konfigurasi plist untuk digunakan, jadi saya tidak dapat memperoleh info logging tambahan mDNSResponder
.
Alat-alat seperti Wireshark dapat berguna untuk menunjukkan mDNS
paket yang disiarkan di jaringan bersama dengan info paket ARP lain yang berpotensi relevan di antara lalu lintas lainnya.
Di Mac OS, alat lain seperti dscacheutil
mungkin ada untuk melihat informasi ini. Tidak terdokumentasi dengan baik atau jelas bagaimana cara melihat cache definitif dari informasi ini yang digunakan oleh kode penggantian nama hostname. Ketika saya menguji utilitas ini, itu tidak menghasilkan output yang berguna kecuali ketika menggunakan mode kueri untuk nama host yang tepat (IP digosok untuk privasi):
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