СМОТРЕТЬ ОБНОВЛЕНИЕ НИЖЕ!
Мне также нравится использовать Dnsmasq на моей локальной машине, и у меня тоже была эта проблема. Вот решение:
От man 5 resolver
:
The configuration for a particular client may be read from a file
having the format described in this man page. These are at present
located by the system in the /etc/resolv.conf file and in the files
found in the /etc/resolver directory.
/etc/resolver/
нет по умолчанию; Вы должны создать это самостоятельно.
Также со страницы руководства:
domain
Domain name associated with this resolver configuration. This
option is normally not required by the Mac OS X DNS search system
when the resolver configuration is read from a file in the
/etc/resolver directory. In that case the file name is used as the
domain name.
Поэтому, если вы хотите, чтобы все DNS-запросы для домена верхнего уровня dev
перенаправлялись на локальный сервер имен, вы должны:
# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev
configd
не изменяет файлы /etc/resolver/
, поэтому этот параметр будет сохраняться при изменениях и перезагрузках сети.
ОБНОВЛЕНИЕ 17 июля 2012
К сожалению, что касается OS X Lion, верхний распознаватель (как показано scutil
--dns
) исчезает, когда нет активных интерфейсов:
# scutil --dns # Online
DNS configuration
resolver #1
nameserver[0] : 127.0.0.1
...
resolver #8
domain : dev
nameserver[0] : 127.0.0.1
# scutil --dns # Offline
DNS configuration
resolver #1
...
resolver #8
domain : dev
nameserver[0] : 127.0.0.1
Обратите внимание, что распознаватель # 1 пуст, но запись, полученная из / etc / resolver, остается.
Оказывается, поскольку вы можете указать домен резолвера непосредственно в файле / etc / resolver /, указание специального корневого домена Интернета .
вызывает создание глобальной записи резолвера, которая выглядит следующим образом:
resolver #8
nameserver[0] : 127.0.0.1
Теперь все DNS-запросы направляются на локальный хост, даже в автономном режиме.
Конечно, вам все равно придется разрешить выбранные домены как 127.0.0.1, используя что-то вроде опции --address в dnsmasq:
# dnsmasq --address=/dev/127.0.0.1
В итоге:
- Установите все ваши сетевые интерфейсы DNS-серверов на 127.0.0.1:
networksetup -setdnsservers Ethernet 127.0.0.1
networksetup -setdnsservers Wi-Fi 127.0.0.1
...
- Создайте файл / etc / resolver / what:
nameserver 127.0.0.1
домен .
- Настройте локальный DNS-сервер и будьте счастливы.
ср http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c