Чому вони зробили цю зміну, я не знаю, але це змусило мене звести з розуму на деякий час.
Я не знаю, чому все працює для хоста, але не пінг, але я думаю, що це пов'язано з характером цих двох утиліт. Пінг - це проста (хоча і дуже корисна) діагностична утиліта для скидання пакетів на дріт, який повинен отримати відповідь. Функція пошуку імен хостів - це лише побічний ефект від роботи і передається рекурсивному резольверу системи (я вважаю, що я не перевірив, перевіривши пов'язані бібліотеки або щось подібне). Основною завданням хосту є розв'язання імені DNS, тому він реалізує власний рекурсивний резольвер.
Рекурсивний резольвер від Apple - це mDNSResponder. З якоїсь причини версія mDNSResponder у Lion потребує опції командного рядка "-AlwaysAppendSearchDomains", щоб вести себе так, як це було у Snow Leopard (принаймні).
Нижче наведено швидкий спосіб її усунення:
sudo sed -i .orig '/ProgramArguments/,/<\/array>/ {
s/\(<string>-launchd<\/string>\)/\1\
<string>-AlwaysAppendSearchDomains<\/string>/
}' /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
(На початку другого-останнього рядка має бути два символи табуляції, але я не міг зрозуміти, як додати цей невеликий редактор до вкладок, тому я додав 16 пробілів. краще підійти до інтервалу вихідного файлу.)
Цей аргумент додасть аргумент "-AlwaysAppendSearchDomains" до файлу запуску PLD mDNSResponder (і збереже резервну копію), але оскільки це контролюється запуск launchd, цій системі потрібно повідомити, щоб перезавантажити mDNSResponder.
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
Тепер, якщо ви перевіряєте запущений процес mDNSResponder, ви повинні побачити його запуск з новим аргументом:
ps auxww | grep mDNSResponder
(Реквізити до http://www.makingitscale.com/2011/fix-for-broken-search-domain-resolution-in-osx-lion.html та http://kavassalis.com/2011/07/wtf-bug -in-os-x-10-7 / , де я знайшов відповіді на цю проблему.)