Порядок роздільної здатності лева та імені


9

(ця проблема пішла для мене з оновленням 10.7.1 - / etc / hosts зараз працює як завжди)

Я оновив свій Mac на Lion, і тепер я помічаю, що / etc / hosts проводиться остання консультація, навіть після DNS. Це дуже дратує, оскільки у мене там багато імен хостів, які я використовую для розробки.

Де налаштований порядок вирішення імені? Я можу перевірити це за допомогою dscacheutil, ось ось що мені говорить машина Snow Leopard:

pilif@tali ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default
    /BSD/local

Settings:
AAAA Queries  - Disabled (link-local IPv6 addresses)
Default TTL   - 3600
Policy Flags  - 0

І ось що мені розповідає Лев

pilif@kosmos ~ % dscacheutil -configuration
DirectoryService Cache search policy:
    /Local/Default

Unable to get details from the cache node
Unable to get cache configuration information

окрім двох помилок, я вважаю, що / BSD / Local - це те, що змушує його читати / etc / hosts раніше.

Хтось має уявлення, де зберігається ця "політика пошуку кешу" і як її змінити?

Я знаю, що я можу створювати записи імені хоста за допомогою dcsl, але я дуже хотів би зберігати свої / etc / hosts, якими я користуюся на різних машинах.

Оновлення: Порядок роздільної здатності, очевидно, може бути налаштований у каталозі Утиліта. На жаль, ця програма Directroy Utility більше не перераховує файли BSD на вкладці Послуги.

Ця функція пішла від Лева? Або ця установка шлангова?

Відповіді:


5

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

Файли BSD справді не перелічені в утиліті Directory, ні в dscacheutil, але принаймні / etc / hosts все ще читається, але існує проблема в тому, що кілька імен хостів за IP-адресою більше не підтримуються або принаймні, вони не працюють правильно банкоматами.

Коли ваш старий / etc / hosts міг виглядати так

127.0.0.1 localhost foo foobar

Це спричинить час очікування ~ 10 секунд для вирішення будь-якого з цих імен хоста.

Але якщо використовувати

127.0.0.1 localhost
127.0.0.1 foo
127.0.0.1 foobar

Дозвіл буде миттєвим.

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

Щоб відповісти і на всі мої запитання (тепер мені все зрозуміло):

  • Порядок роздільної здатності кешу, який ви налаштовуєте в утиліті каталогу, де ви можете вказати, який із включених каталогів ви хочете переглянути в якому порядку.
  • Для налаштування каталогів також використовуйте утиліту каталогу
  • Утиліта каталогів запускається у розділі Налаштування системи> Облікові записи> Опції входу> Каталог приєднань> Утиліта каталогу
  • У Lion "каталог" файлів BSD вже недоступний, хоча файл довідки все ще посилається на нього
  • Як я вже сказав, / etc / hosts все ще читається, але є помилка, яку я описав вище.

Якщо розмістити кожен запис у своєму рядку, це не вирішило для мене. Чи можете ви відвідувати "foo" та "foobar" в Chrome і Safari? Для мене це працює лише в Chrome. Чи можете ви замінити існуючий веб-сайт, наприклад, "127.0.0.1 www.google.com"? Для мене це не працює ні в Chrome, ні в Safari.
richardkmiller

Це вирішило 10-х років чекати мене. Дякую, що мене зводило з розуму.
Josh Bleecher Snyder

Вирішили це для мене 10.7.3 річного дня!
Еміллер

3

Справа в тому, що Лев обробляє .local TLD по-різному, тому що він зарезервований для деяких функцій багатоадресної DNS (використовується Bonjour). Єдиний спосіб, який я знайшов вирішити цю проблему, - це використовувати інший TLD для хостів розробки (тобто: .dev). Для мене це добре працює, сподіваюся, що це буде корисно для інших!


це було абсолютно те, що відбувалося на моїй коробці. thx
slf

1

Як я думаю, ви знаєте, традиційний спосіб Unix вирішити це за допомогою використання hostresorderабо orderдирективи в /etc/resolv.conf. OS X (чи може бути зроблено для цього) читати та використовувати ці файли, але в OS X є окрема система, що управляється через мережеві налаштування, які, я вважаю, перезаписує ці файли конфігурації під час завантаження.

http://hints.macworld.com/article.php?story=20070223050607406

http://docs.info.apple.com/article.html?path=ServerAdmin/10.6/uk/od4939886e.html

https://discussions.apple.com/thread/2493759

http://blog.daemon.com.au/go/blog-post/managing-the-host-file-on-leopard

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


Я знаю про dscl, але я спеціально хотів використовувати файл хостів, який більше не можна вмикати та вимикати у Lion. Це завжди читається, але з іншими правилами розбору, ніж раніше, - дивіться мою відповідь на моє запитання.
pilif

1

Можна усунути цю проблему, використовуючи dnsmasq як локальний DNS і додаючи туди записи, або використовуючи dnsmasq для використання /etc/hosts.

Для встановлення порядку DNS-сервера можна використовувати сценарій:

Filename: setdsn
-------------------------------------------------
#!/bin/bash

# Script is used to set the Nameserver Lookup under Max OS X 10.4 with the Console
# Script by Stephan Oeste

if [ $# -lt 2 ] ; then
echo "Use: $0 [2.Nameserver]"
echo "Example Use: $0 example.tld 1.2.3.4 1.2.3.5"
exit 1
fi

PSID=$( (scutil | grep PrimaryService | sed -e 's/.*PrimaryService : //')<< EOF
open
get State:/Network/Global/IPv4
d.show
quit
EOF
)

scutil << EOF
open
d.init
d.add ServerAddresses * $2 $3
d.add DomainName $1
set State:/Network/Service/$PSID/DNS
quit
EOF
-------------------------------------------------

Створіть файл:

chmod +x setdns

А потім використовуйте ist з (Приклад): setdns domain.com 12.23.34.45
(Опублікував emzy на http://hints.macworld.com/article.php?story=20050621051643993 )

Якщо ви хочете, щоб сценарій автоматично завантажувався при зміні мережі, вам слід створити .plist, ввести його /Library/LaunchDaemonsта використовувати:

sudo launchctl load -w /LibraryLaunchDaemons/name.your.plist

1

Я зіткнувся з цією проблемою у Snow Leopard, намагаючись налаштувати прозорий сервер оновлення програмного забезпечення. Зараз я вже працюю над Левом. Сам сервер оновлення програмного забезпечення перебуває на півдорозі між злом і хитрістю, але це питання було вирішено досить елегантно. Ось що я знаю:

  • / etc / hosts існує в Lion і подібно до останніх версій OS X встановлюється для читання після DNS.
  • /etc/resolv.conf існує в Леві, але є символьним посиланням на /var/run/resolv.conf.
  • /var/run/resolv.conf переписується щоразу, коли ваша мережна конфігурація оновлюється. Це може бути пов'язано з перезавантаженням, поновленням оренди DHCP тощо.

Я створив наступний сценарій. / usr / local / hostsЗв’язати:

mv /var/run/resolv.conf /var/run/resolv.conf.new
echo order hosts, bind > /var/run/resolv.conf
cat /var/run/resolv.conf.new >> /var/run/resolv.conf

це резервне копіювання поточного головного файлу resolutionv.conf, створює новий з потрібним порядком хостів перед BIND і з'єднує попередній файл до кінця.

Я називаю цей скрипт, переглядаючи головний файл resolutionv.conf із наступним запущеним завданням за адресою /Library/LaunchDaemons/com.domain.hostsBind.plist (ви можете змінити com.domain на те, що має для вас сенс):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.domain.hostsBind</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/hostsBind</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/var/run/resolv.conf</string>
    </array>
</dict>
</plist>

Це працює для нашої організації з сервером оновлення програмного забезпечення Lion.

Останнє, що слід зазначити, це працює чудово і з Snow Leopard, якщо ви зміните шлях для resol.conf на /etc/resolv.conf. Лев просто кинув криву кулю символьного посилання на / var / run / замість / etc /.

PS: Джерело для сценарію: http://forums.macrumors.com/showthread.php?p=6742920


коли я спробував це, завдання продовжувало передбачувати замовлення на файл, оскільки зміна файлу викликала нове оновлення.
harmanjd

1

З апаш-сервером, який постачається з OSX Lion, є багато речей.

  1. Багато модулів завантажуються за замовчуванням.
    Відкрийте /etc/apache2/httpd.confта перегляньте список включених модулів (усі вони включені за замовчуванням). Можливо, ви можете вимкнути їх багато, поставивши #перед рядком.

    Ось які я відключив:

#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
#LoadModule authn_default_module libexec/apache2/mod_authn_default.so
#LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
#LoadModule authz_user_module libexec/apache2/mod_authz_user.so
#LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
#LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
#LoadModule authz_default_module libexec/apache2/mod_authz_default.so
#LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
#LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
#LoadModule dbd_module libexec/apache2/mod_dbd.so
#LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
#LoadModule unique_id_module libexec/apache2/mod_unique_id.so
#LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
#LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
#LoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so
#LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
#LoadModule dav_module libexec/apache2/mod_dav.so
#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
#LoadModule bonjour_module libexec/apache2/mod_bonjour.so
#LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so
  1. Файл hosts - не ідеальний.
    Тепер відкрийте файл хостів, розташований за адресою /etc/hosts. Тут ви побачите цей рядок (та деякі коментарі):

127.0.0.1 macbook-pro-van-bart.local

(інше ім’я комп’ютера поза курсом). Додайте наступний рядок (змініть ім'я комп'ютера):

fe80::1%lo0 macbook-pro-van-bart.local
  1. Погляньте на свій конфігурацію apache.
    Переконайтеся, що ви vhostsне покладаєтесь на IP-адреси. Змініть їх так:

NameVirtualHost 127.0.0.1:80

Стає:

NameVirtualHost *: 80

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