Як налаштований пошук 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.