Як налаштований пошук DNS для OSX Mountain Lion?


33

Якщо я зазначаю свою резолюцію.conf, я бачу це повідомлення:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#

Я намагаюся додати запис DNS. Я відредагував файл хостів і очистив кеш-пам'ять dns, але ім'я не вирішує, якщо я використовую host servername. Я думав, можливо, hostце не налаштовано на перегляд hostsфайлу. Як я можу отримати новий запис для вирішення, і для чого використовується OSX, якщо ні resolv.conf?

Відповіді:


17

Інструмент хосту не просто розв'язує імена (як у, використовуючи розв'язувач імен системи), але насправді запитує сервери dns (як, наприклад, надсилаючи пакети udp / 53 і, можливо, tcp / 53): він не знає і не використовує локальний hostsфайл .

Якщо ви хочете перевірити роздільну здатність операційної системи (як в, gethostbyname () та подібні функції libc), ви можете спробувати ввести ім'я, яке ви додали до цього, /etc/hostsі воно буде шанувати те, що ви помістили у цей файл.

Крім того, як ви вже дізналися, пошук DNS на Mac OSX не використовується /etc/resolv.conf, а правильний спосіб налаштування запитів серверів DNS запитується в інструменті gui та / або в networksetupкомандному рядку . Я, чесно кажучи, не знаю, чи можна налаштувати порядок, у якому перевіряються джерела, але стандартна поведінка - спробувати /etc/hostsспочатку і dns-сервери після цього.


1
Я знайшов обгортку perl для getaddrinfo: search.cpan.org/~pevans/Socket-GetAddrInfo-0.22
— Бен Флінн

26

Розв’язувачі DNS можуть бути додані в OS X за допомогою networksetupкоманди:

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

Введіть назву мережевого з'єднання, якщо це доречно. Ці розділювачі з'являться у reslav.conf, оскільки вони генеруються автоматично, але прямі редагування до resoluv.conf не призведуть до використання цих розділювачів. Я припускаю, що розділювачі зберігаються десь у плісті; Буду шукати та звітувати.

Відредаговано, щоб додати: Схоже, є XML-пліст-файл, що зберігає DNS-сервери /Library/Preferences/SystemConfiguration/preferences.plist.

Файл хосту в / private / etc / hosts повинен працювати для примусового вирішення конкретних імен (/ etc є символьним посиланням на / private / тощо). Чи можете ви перевірити свій синтаксис і редагувати правильний файл?


Тож я міг би скористатися цією командою для додавання файлу хостів?
— Бен Флінн

ви не можете, і вам не потрібно
— Luke404

Ні, якщо ви хочете додати імена до файлу хостів, просто додайте їх безпосередньо. Файл хостів спочатку перевіряється під час вирішення імен, після чого кеш локальної роздільної здатності, а потім налаштовані сервери DNS. Використовуючи команду "host", щоб протестувати її, хоч і не перевірятиме файл локальних хостів. Одним із простих способів тестування було б використання утиліти мережі, наприклад, ping.
— фоеб

1
Іноді інтерфейс отримує ігрові імена, щоб отримати точне ім’я, яке вам потрібно, ви також можете зробити. networksetup -listallnetworkservices Якщо це містить пробіли, вам потрібно навести одну цитату всього імені, тобто:sudo networksetup -setdnsservers 'white space' 8.8.8.8 8.8.4.4
— Marcin

2
Чи можна налаштувати резолютор на використання іншого порту, ніж 53?
— Руна ФС
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.