Як я можу зупинити ім'я комп’ютера автоматично та неправильно змінюватись?


19

З тих пір, як я оновив свій iMac 2009 року до Mavericks, я часто отримую повідомлення про те, що в цій мережі вже використовується назва вашого комп'ютера "Foo". Ім'я було змінено на "Foo (2)". '. Число в кінці буде постійно збільшуватися з часом, оскільки трапляється та сама помилка.

Досить тривіально перейменувати комп’ютер назад, але чи є спосіб запобігти цьому в майбутньому? У мене був старий Macbook Pro (працює гірський лев), який мав ту саму проблему, але мій ранній 2013 року MBP під управлінням Mavericks, схоже, не страждає від цієї проблеми.


Це ім'я, яке воно говорить, насправді порожній рядок? Якщо це так, що він говорить, якщо змінити ім'я комп'ютера?
0942v8653

Ні, це ім'я мого комп'ютера (лайно, я бачу, що текст, який я набрав, був видалений. Без сумніву через кутові дужки). Наприклад, якщо ім'я мого комп’ютера - «Foo», мій комп'ютер буде названий «Foo (2)».
Cleggy

Я відредагував питання, щоб уточнити, що порожній рядок не відображається.
Cleggy

Це може бути та сама проблема. Також спробуйте бігти scutil --get ComputerNameі hostnameв Терміналі. (Ви, ймовірно, також повинні відслідковувати вашу IP-адресу, щоб побачити, чи вона не змінюється) Я думаю, що це щось із вашим маршрутизатором або DHCP, а імена NetBIOS можуть бути кешовані занадто довго.
0942v8653

1
Ще немає відповіді? Це все ще відбувається з OS X 10.10.4 наприкінці 2011 року MacBook Pro 17 ". Це може мати щось спільне з підключенням до wi-fi та Ethernet одночасно, але яка біль, за якою OS X не розуміє це самостійно
Brent Faust

Відповіді:


5

Обхід

Як і інших користувачів, мене мучить ця неприємність, але я знайшов напівзадовільний спосіб вирішення:

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

Якщо Macbook продовжує негайно перейменовувати 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команд.

Якщо ви виявите, що жодне з цього не приносить користі, є деякі інші повідомлення, які включають:

  • Переконайтеся, що у вас є лише одне підключення до локальної мережі
  • Вимкніть і знову ввімкніть Bonjour

    # 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команд вище.

Причина такої поведінки пов'язана з деяким демоновим кодом, що працює в Mac OS, який намагається додати нумерований суфікс (N)будь-коли, коли те саме ім’я хоста знайдеться в мережі. В УСІМ моїх тестуваннях імена хостів, яких я вибрав, НІКОЛИ не використовувались раніше в мережі, а також НІКОЛИ не використовувалися для будь-яких пристроїв Bluetooth.

Справжня причина «спускового механізму» такої поведінки невідома і не підтверджена. Тобто, через всі мої дослідження в Інтернеті та тестування я не зміг остаточно визначити, чому Mac OS вирішує, що це ім'я вже використовується, коли його явно НЕ і ніколи не було.

Моя теорія полягає в тому, що якимось чином mDNSтакож відомий як Bonjour( Avahiдля користувачів Linux або Zero-confМережі для користувачів Windows) може бути частково винен. Так чи інакше зберігається попереднє ім’я пристрою Macbook або Apple mDNS, або, можливо, якась форма ARPтаблиці + інформація про ім'я хоста, яка виявляється і зберігається пристроєм Macbook або Apple. Це може бути якийсь стан перегонів. Як-небудь запис вважається дублікатом і викликає поведінку суфіксів Mac OS для перейменування.

Імена хостів із суфіксами чисел видно, коли використовується утиліта DNS Service Discovery, надана Apple 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...]

Теорія справжньої причини не підтверджена, оскільки важко знайти та спостерігати за тим, що відбувається насправді без доступу до внутрішнього стану Mac OS та інструментів налагодження Apple OS низького рівня. Взаємодія між mdnsd, mDNSResponderта mDNSResponderHelperіншими службами Mac OS або навіть іншими демонами Avahi в мережі недостатньо добре зафіксована або легко спостерігається. Сучасний стан деяких форм виявлення мережі можна переглянути з допомогою dns-sdі arp -aчи можливо arp -a -n. Іншими теоріями чи потенційними місцями, де може зберігатися інформація про ім’я хоста, можуть бути:

  • Імена пристроїв Bluetooth десь зберігаються в ОС
  • Інформація про SMB (спільний доступ до файлів Windows) періодично кешована з мережі smbd( /System/Library/LaunchDaemons/com.apple.smbd.plist)
  • Інформація про спільний доступ AFP, кешована з мережі (також, мабуть smbd,?)
  • mDNS/ Avahiрефлектор (або інший тип ретрансляції пакетів Bonjour / zero-conf в мережі за допомогою маршрутизатора чи якогось іншого пристрою)?
    • Може кешуватися mDNSResponderабо mdnsd( /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist)

Рішення (заповнювач)

Станом на 6 жовтня 2017 року досі не існує повного рішення від Apple або засобів захисту, щоб запобігти повторному виникненню цієї проблеми. Я рекомендую подати звіт про помилки в Apple, який описує цю проблему. Ви також можете звернутися в службу підтримки Apple .

Чим більше людей шумуватимуть із цієї набридливої ​​проблеми, тим швидше менеджери продуктів Apple нададуть пріоритет, щоб інженери змогли це виправити.

Налагодження / майбутні лінії дослідження

Ця дискусія на форумі MacRumors містить корисну інформацію, а також додає теорію про те, що Wake for Wi-Fi Network Accessі пристрій Wake / Sleep має щось спільне з цим питанням. Інші представлені теорії пов'язані з використанням декількох мережевих адаптерів (наприклад, WiFi + Thunderbolt Ethernet), маршрутизаторів, які мають кілька точок доступу, розміщених у кількох діапазонах, таких як 802.11 b/g/n(2,4 ГГц) або 802.11 a/ac(5 ГГц). Ці комбінації можуть якось тимчасово відображатись у мережі версію пристрою Apple, викликаючи поведінку.

Там не було ніяких корисних ліній журналу в /var/log/system.logтому , що , здавалося , пов'язані з цим поведінка перейменуванням бути викликано. Нібито mDNSResponderможна налаштувати на більш високі рівні журналу:

  • Помилка - повідомлення про помилку
  • Попередження - операції, ініційовані клієнтом
  • Повідомлення - Сонні операції проксі
  • Інформація - Інформаційні повідомлення

Як встановити ці рівні налагодження, крім того, можливо через неіснуючий файл, /Library/Preferences/com.apple.mDNSResponder.plistбуло не ясно. У мене не було прикладу конфігурації плісту для використання, тому мені не вдалося отримати зайву інформацію про реєстрацію mDNSResponder.

Такі інструменти, як Wireshark, можуть бути корисними для показу mDNSпакетів, що транслюються в мережі разом з іншою потенційно відповідною інформацією про пакет ARP серед іншого трафіку.

У Mac OS dscacheutilможуть існувати інші інструменти, такі як перегляд цієї інформації. Недостатньо задокументовано чи зрозуміло, як переглянути остаточний кеш цієї інформації, який використовується кодом перейменування імені хоста. Коли я тестував цю утиліту, вона не дала корисного результату, за винятком випадків, коли використовувався режим запиту для точного імені хоста (IP-адреси, вичищені для конфіденційності):

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

1
Це не рішення, але прихильне для деталей та історії.
jontsai

Я хотів би ознайомитись із деякими чудовими попередніми результатами після тестування! До сих пір я не бачив випуск врожаю знову , так як я змінив цю установку: System Preferences→Energy Saver→Wake for Wi-Fi network access → Unchecked. Я думаю, що мені потрібно перезавантажити систему ще раз і нехай вона працює деякий час, щоб переконати мене повністю ... але у нас може бути рішення!
TrinitronX

Через 26 днів після зміни вищевказаних Wake for Wi-Fi network accessналаштувань мені сумно повідомити, що мій macbook знову змінив ім'я! Здається, що поведінка певним чином пов’язана з Bonjour та AirPlay. Протягом 26 днів я не отримував доступу до багатьох програм, що використовують Bonjour, за винятком, можливо, *.localпошуку DNS-адрес DNS з утиліт командного рядка. Сьогодні я відкрив AirFoilіAirFoil Sattelite програми та одразу помітив, що ім’я хоста змінилося суфіксом (2). Ці програми можуть надати тест на відтворення помилки
TrinitronX

1

Чи використовуєте ви два мережеві пристрої, що знаходяться в одній локальній мережі? Наприклад, wifi та дротовий Ethernet? Спробуйте відключити одну з них. У мене була ця проблема і вирішено її таким чином.


1
Я не був, але я зараз. Пристрої зазвичай підключаються через Wi-Fi або дротову мережу. Але сьогодні я змінив iMac на підключення через wifi та ethernet, намагаючись змусити синхронізувати iTunes wifi. Ця зміна була внесена після останнього інциденту з перейменуванням iMac, тому це не буде причиною в цьому випадку.
Cleggy

1

Тут же проблема. Але здається, що ім'я foo (2) приймається машиною часу, і воно все ще робить резервну копію в тому самому місці (воно, схоже, не переробляє всю резервну копію, вона триває). Так що ніякої шкоди не порушує. Я думаю, що це пов'язано з декількома активними інтерфейсами, я вискочив Ethernet, щоб прискорити резервне копіювання.


Ви вірні, що, мабуть, два мережевих інтерфейси, швидше за все, це станеться. Зрозуміло, що це також трапляється, коли є один інтерфейс, і машина спить протягом часу, близького до часу резервування DHCP на роутері.
bmike

0

Немає хорошого способу зупинити це. Apple повинна буде замінити код на ім'я хоста, щоб користувачі (люди та програми) завжди були представлені з ім'ям хоста, яке встановлюється scutilі виконують усі перейменування / переклади під кришкою.

Оскільки це відбувається у всіх лінійках продуктів Apple (Apple TV, iPhone, Mac і, мабуть, навіть Apple Watch) принаймні з 2012 року, не ясно, що Apple розглядає це як проблему, яку потрібно вирішити.


-2

Це, мабуть, стосується активного користувача, коли ви вперше підключаєтесь до мережі та налаштовуєте апарат. Цілком імовірно, що ви будуєте ці машини, ви завжди робите це як один і той же користувач

Якщо ви створили користувача, наприклад, увімкнувши, наприклад MacBook Pro, машина автоматично налаштує іменування наступним чином:

Назва комп’ютера: MacBook Pro Дейва

локальне ім'я хоста: daves-MacBook-Pro.local

а в Терміналі ім'я хоста відображатиметься як: daves-mbp

Якщо припустити, що наступна машина, на якій ви входите як «Дейв», - це також MacBook Pro, вона встановить точно такі ж деталі - ви підключаєтесь до мережі і отримуєте повідомлення про повторне ім’я.

Де я працюю, ми змінюємо ім'я в Sharing, потім відкриваємо термінал і запускаємо таку команду: sudo scutil –-set HostName new_hostname

(де new_hostname - обране вами ім’я)

Потім вийдіть і перезавантажте термінал, і ви побачите нове ім'я хоста.

Ви також отримаєте цю проблему під час переміщення користувачів на нові машини - помічник міграції / машина час перейменує нову машину

деякі типово слабкі дані про імена - http://support.apple.com/kb/PH13790


Це відбувається з двома машинами, створеними більше року тому, або у випадку з ОП - одна машина
користувач151019

-2

Це відбувається при запуску двох серверів DHCP, що перекриваються. Якщо ви використовуєте більше одного маршрутизатора (мостовий режим), то переконайтеся, що тільки в одному з них працює DHCP без статичного IP.


1
Це не так. Єдиний сервер DHCP, який я маю, це мій маршрутизатор Airport Extreme.
Cleggy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.