Cách giải quyết
Giống như những người dùng khác, tôi đang lo lắng về sự phiền toái này nhưng đã tìm thấy một cách giải quyết nửa thỏa đáng:
my_hostname='your-hostname-here'; for key in LocalHostName ComputerName HostName ; do sudo scutil --set $key $my_hostname; done
Sau khi chạy lệnh này, bạn có thể kiểm tra xem tất cả các vị trí nơi lưu trữ tên máy chủ đều giống nhau với lớp lót này:
for key in LocalHostName ComputerName HostName ; do sudo scutil --get $key; done
Nếu Macbook tiếp tục đổi tên ComputerName
trở lại với hậu tố, bạn có thể làm cho nó dừng lại bằng cách tắt Wake for Network Access
.
System Preferences→Energy Saver→Wake for Wi-Fi network access → Unchecked
Sau khi tắt, đổi tên máy của bạn bằng cách sử dụng các lệnh trên để hoàn tất. Bạn cũng có thể thử buộc ComputerName
lại bằng cách sử dụng System Preferences→Sharing→Computer Name
tùy chọn trường văn bản.
Nếu điều này không có ích, hãy thử xóa bộ nhớ cache mDNS của bạn :
# 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
Sau khi xóa bộ đệm mDNS, thử lại đổi tên máy của bạn bằng các lệnh trên.
Nếu điều này vẫn không hoạt động, hãy thử giết mDNSResponder
dịch vụ:
sudo killall -HUP mDNSResponder
Sau đó, thử lại lần nữa để đặt lại tên máy tính của bạn bằng scutil
các lệnh trên .
Nếu bạn thấy rằng không có cái nào trong số này hoạt động tốt, có một số giải pháp được báo cáo khác bao gồm:
- Đảm bảo bạn chỉ có một kết nối với mạng cục bộ
Tắt Bonjour và bật lại
# 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
Tắt và thiết lập lại TẤT CẢ phần cứng mạng
Thảo luận vấn đề
Theo kinh nghiệm của tôi, việc đặt tên máy chủ theo cách này hoặc thông qua tiêu chuẩn System Preferences→Sharing→Computer Name
chỉ kéo dài trong một khoảng thời gian ngắn. Điều này thường là <24 giờ, nhưng đôi khi ComputerName
ngay cả thay đổi ngay lập tức để có một số hậu tố trong ngoặc đơn (N)
. Tôi đã quan sát số này ngay lập tức được đặt thành một (4)
hoặc (5)
gần đây sau khi sử dụng các scutil --set
lệnh trên.
Nguyên nhân của hành vi này là do một số mã daemon đang chạy trong Mac OS cố gắng thêm một hậu tố được đánh số (N)
bất cứ khi nào tìm thấy cùng tên máy chủ trên mạng. Trong TẤT CẢ các thử nghiệm của tôi, tên máy chủ tôi đã chọn KHÔNG BAO GIỜ được sử dụng trước đây trên mạng và ngoài ra KHÔNG BAO GIỜ được sử dụng cho bất kỳ thiết bị Bluetooth nào.
Nguyên nhân thực sự của "tác nhân" của hành vi này là không rõ và chưa được xác minh. Điều đó có nghĩa là: Thông qua tất cả các nghiên cứu và thử nghiệm trực tuyến của tôi, tôi chưa thể xác định rõ ràng lý do tại sao Mac OS quyết định rằng tên này đã được sử dụng khi rõ ràng là KHÔNG và chưa bao giờ.
Lý thuyết của tôi là bằng cách nào đó mDNS
còn được gọi là Bonjour
( Avahi
đối với người dùng Linux hoặc Zero-conf
Mạng với người dùng Windows) có thể là một phần đáng trách. Bằng cách nào đó, tên máy chủ trước của Macbook hoặc thiết bị Apple vẫn tồn tại ở đâu đó mDNS
hoặc có thể là một dạng ARP
bảng + thông tin tên máy chủ được Macbook hoặc thiết bị Apple phát hiện và lưu trữ. Đây có thể là một số loại điều kiện cuộc đua. Bằng cách nào đó, mục nhập được xem là trùng lặp và kích hoạt hành vi đổi tên hậu tố Mac OS.
Số tên máy chủ có hậu tố hiển thị khi sử dụng tiện ích Khám phá Dịch vụ DNS do Apple cung cấp dns-sd
:
Ví dụ: sử dụng tên máy chủ my-mbp-hostname
, nó có thể hiển thị như các mục sau
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...]
Lý thuyết về nguyên nhân thực sự chưa được xác nhận vì rất khó tìm và quan sát những gì đang thực sự xảy ra mà không truy cập vào trạng thái Mac OS nội bộ & các công cụ gỡ lỗi Apple OS cấp thấp. Sự tương tác giữa mdnsd
, mDNSResponder
và mDNSResponderHelper
với các dịch vụ Mac OS khác hoặc daemon Avahi thậm chí khác trên mạng vẫn chưa được ghi hoặc dễ dàng quan sát được. Tình trạng hiện tại của một số hình thức khám phá mạng có thể được xem qua dns-sd
và arp -a
hoặc có lẽ arp -a -n
. Các lý thuyết hoặc địa điểm tiềm năng khác có thể lưu trữ thông tin tên máy chủ này:
- Tên thiết bị Bluetooth được hệ điều hành duy trì ở đâu đó
- Thông tin SMB (chia sẻ tệp windows) được lưu trữ từ mạng theo định kỳ bởi
smbd
( /System/Library/LaunchDaemons/com.apple.smbd.plist
)
- Thông tin chia sẻ AFP được lưu trữ từ mạng (cũng có thể là bởi
smbd
?)
mDNS
/ Avahi
Reflector (hoặc loại phát lại các gói Bonjour / zero-conf khác trên mạng bằng bộ định tuyến hoặc một số thiết bị khác)?
- Có thể được lưu trữ bởi
mDNSResponder
hoặc mdnsd
( /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
)
Giải pháp (giữ chỗ)
Kể từ ngày 6 tháng 10 năm 2017, vẫn chưa có giải pháp đầy đủ từ Apple hoặc biện pháp khắc phục để ngăn chặn vấn đề này tái diễn. Tôi khuyên bạn nên nộp Báo cáo lỗi với Apple mô tả vấn đề này. Bạn cũng có thể muốn liên hệ với bộ phận Hỗ trợ khách hàng của Apple .
Càng nhiều người gây ồn ào về vấn đề gây phiền nhiễu này, các Nhà quản lý sản phẩm của Apple sẽ ưu tiên nhanh hơn để các Kỹ sư có thể khắc phục.
Gỡ lỗi / Dòng điều tra trong tương lai
Đây Diễn đàn thảo luận có một số thông tin hữu ích cũng như thêm một lý thuyết mà Wake for Wi-Fi Network Access
và thiết bị Wake / Sleep có cái gì để làm với vấn đề này. Các lý thuyết khác được đưa ra phải sử dụng nhiều bộ điều hợp mạng (ví dụ: WiFi + Thunderbolt Ethernet), các bộ định tuyến có nhiều Điểm truy cập được quảng cáo trên nhiều băng tần như trên 802.11 b/g/n
(2.4GHz) hoặc 802.11 a/ac
(5GHz). Các kết hợp này có thể tạm thời khiến phiên bản "ma" của thiết bị Apple hiển thị trên mạng, gây ra hành vi đổi tên.
Có không dòng log hữu ích trong /var/log/system.log
đó xuất hiện liên quan đến hành vi đổi tên này được kích hoạt. Giả sử mDNSResponder
có thể được cấu hình để mức nhật ký cao hơn:
- Lỗi - Thông báo lỗi
- Cảnh báo - Hoạt động do khách hàng khởi tạo
- Thông báo - Hoạt động proxy ngủ
- Thông tin - Tin nhắn thông tin
Làm thế nào để thiết lập các mức gỡ lỗi này ngoài có lẽ thông qua tệp /Library/Preferences/com.apple.mDNSResponder.plist
không tồn tại là không rõ ràng. Tôi không có cấu hình ví dụ để sử dụng, vì vậy tôi không thể lấy thêm thông tin đăng nhập mDNSResponder
.
Các công cụ như Wireshark có thể hữu ích để hiển thị các mDNS
gói được phát trên mạng cùng với thông tin gói ARP có khả năng liên quan khác trong các lưu lượng khác.
Trên Mac OS, các công cụ khác như dscacheutil
có thể tồn tại để xem thông tin này. Nó không được ghi chép rõ ràng hoặc rõ ràng làm thế nào để xem bộ đệm chính xác của thông tin này được sử dụng bởi mã đổi tên tên máy chủ. Khi tôi kiểm tra tiện ích này, nó không tạo ra bất kỳ đầu ra hữu ích nào trừ khi sử dụng chế độ truy vấn cho tên máy chủ chính xác (IP được kiểm tra để bảo mật):
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