Преобразователь локального хоста Yosemite и dnsmasq не работают в автономном режиме

Настройте мою локальную среду разработки, аналогичную этот пост, и все работало нормально, но недавно я не могу получить доступ к моим локальным доменам разработки, когда я не в сети. Когда я подключен к Интернету, он работает нормально. Мне интересно, изменилось ли что-то в том, как распознаватель используется в Yosemite. Кажется, что правила распознавателя игнорируются, если я не в сети.

dnsmasq.conf:

address=/.dev/127.0.0.1
listen-address=127.0.0.1

/etc/преобразователь/dev

 nameserver 127.0.0.1

В сети:

ping -c 1 mydomain.dev
PING mydomain.dev (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.038 ms

--- mydomain.dev ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.038/0.038/0.038/0.000 ms

scutil --dns
resolver #1
search domain[0] : nomadix.com
nameserver[0] : 203.124.230.12
nameserver[1] : 202.54.157.36
if_index : 4 (en0)
flags    : Request A records
reach    : Reachable

resolver #2
domain   : dev
nameserver[0] : 127.0.0.1
flags    : Request A records, Request AAAA records
reach    : Reachable,Local Address

в автономном режиме:

ping -c 1 mydomain.dev
ping: cannot resolve mydomain.dev: Unknown host

scutil --dns
No DNS configuration available

person jamesrward    schedule 10.11.2014    source источник


Ответы (3)


Я проверял этот вопрос в течение нескольких месяцев, надеясь получить ответ. Я считаю, что это поможет, когда выйдет 10.10.4: dns-bugs/" rel="nofollow">http://arstechnica.com/apple/2015/05/new-os-x-beta-dumps-discoveryd-restores-mdnsresponder-to-fix-dns-bugs/< /а>

Apple заменяет Discovered на mDNSresponder (как это было раньше)

person Jacob Degeling    schedule 27.05.2015
comment
Очень интересно. Это заставляет меня задуматься, а если эта статья Ars о том, как вручную заменить discoveryd на mDNSresponder, возможно, является единственным доступным в настоящее время решением этой проблемы. Я попробую и доложу. - person jamesrward; 28.05.2015
comment
Я бы тоже попробовал, но у меня нет доступа к файлам 10.9! Мне будет интересно услышать, как вы идете. - person Jacob Degeling; 29.05.2015
comment
Пока это решение для меня. El Capitan устранил проблему без каких-либо изменений в моей настройке. - person jamesrward; 11.11.2015

OSX Yosemite + преобразователь + dnsmasq в автономном режиме === разрешено !!

когда вы не в сети, все интерфейсы на вашем компьютере, кроме 127.0.0.1, перестают работать.

поэтому, если вы хотите иметь разрешение DNS, ваш DNS-сервер должен слушать 127.0.0.1. В моем случае я выбираю dnsmasq, потому что вам не нужно быть системным администратором, чтобы заставить его работать, и он работает!

после этих простых шагов я заработал:

1) варить установить dnsmasq

2) cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf

если, как и я, он неправильно установлен в /usr/local/opt, вы сможете прочитать в строках отладки установки brew что-то вроде этого:

сделать установку PREFIX=/usr/local/Cellar/dnsmasq/2.72

в этом случае выполните следующую команду:

ln -s /usr/local/Cellar/dnsmasq/2.72 /usr/local/opt/dnsmasq

а затем вернуться к шагу 2

3) vi /usr/local/etc/dnsmasq.conf

и добавьте свои домены, например, так:

address=/foo.dev/192.168.56.101

где в этом случае каждый URL-адрес, заканчивающийся на foo.dev (http://www.foo.dev, http://foo.dev, http://what.ever.you.want.foo.dev и т. д...) будет разрешено как 192.168.56.101 (это тип IP-адреса, который вы используете Virtualbox, 192.168 .56.*)

4) sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

5) попробуйте, прежде чем помещать в преобразователь

nslookup foo.dev 127.0.0.1

и ожидайте этого:

Server:  127.0.0.1
Address:     127.0.0.1#53
Name:    foo.dev
Address: 192.168.56.101

6) mkdir -p /etc/resolver

vi /etc/resolver/dev

добавьте эти две строки:

nameserver 127.0.0.1
search_order 1

7) ping foo.dev или подсказка http://foo.dev или http://so.cool.foo.dev в адресной строке браузера, и все готово !!!

8) Будьте счастливы!! Вы можете работать в автономном режиме СНОВА !!!!

person shaft    schedule 07.11.2015
comment
Я больше не на Yosemite, но на El Capitan это работает. Единственное изменение, которое я сделал, это search_order 1 в /etc/resolver/dev. Это прекрасно работает, когда dnsmasq по-прежнему настроен на ответ по адресу 127.0.0.1, поэтому он работает для локального nginx или apache или любого другого веб-сервера, который вы хотите запустить, а не только vagrant/docker/virtualbox. - person jamesrward; 11.11.2015
comment
Видимо, я говорил/принимал слишком рано. Установка в моем вопросе просто работает на El Capitan без изменений. Я посмотрю, смогу ли я найти коробку Yosemite где-нибудь для тестирования или пусть другие вмешаются, если это действительно решение для Yosemite. - person jamesrward; 11.11.2015

Проблема в том, что когда вы не в сети, вы должны указать преобразователь для корневого домена '.': когда мы ищем www.google.com, есть "." (корневой домен) добавляется автоматически в конце, например: www.google.com.

Итак, все, что вам нужно сделать, это:

Установите для всех DNS-серверов сетевого интерфейса значение 127.0.0.1:

networksetup -setdnsservers Ethernet 127.0.0.1

networksetup -setdnsservers Wi-Fi 127.0.0.1

...

Создайте файл /etc/resolver/что угодно:

nameserver 127.0.0.1
domain .

Дополнительные сведения см. в этом вопросе.

person Yahya    schedule 23.02.2015
comment
Это вообще не работает в OS X 10.10. Мало того, он нарушает разрешение DNS, когда сеть снова подключается к сети. - person brianz; 23.02.2015