У меня есть проблемы DNS на новой установке Ubuntu 16.04:
kqs@mycomputer:~$ nslookup localserver
Server: 127.0.0.1
Address: 127.0.0.1#53
** server can't find localserver: NXDOMAIN
Но если я указываю сервер DNS (или иногда если я просто ожидаю некоторое время), он работает:
kqs@mycomputer:~$ nslookup localserver 192.168.0.1
Server: 192.168.0.1
Address: 192.168.0.1#53
Name: localserver.localdomain
Address: 192.168.0.24
И это - тот же сервер DNS, который обнаруживается сначала в Администраторе сети:
kqs@mycomputer:~$ nmcli device show
IP4.ADDRESS[1]: 192.168.0.152/24
IP4.GATEWAY: 192.168.0.1
IP4.ROUTE[1]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.DNS[1]: 192.168.0.1
IP4.DNS[2]: 131.215.254.100
IP4.DNS[3]: 131.215.139.100
Это, кажется, та же проблема, как "dnsmasq иногда разрешает вещи, иногда это не делает" и "Определение адресов интранет и dnsmasq", но в том решении они отключают dnsmasq
путем комментирования dns=dnsmasq
строка в /etc/NetworkManager/NetworkManager.conf
.
Однако я хотел бы диагностировать dnsmasq
вместо того, чтобы обходить его полностью.
Таким образом, мои вопросы:
dnsmasq
легкий сервер DNS, работающий на моем компьютере. По-видимому, настройки Network Manager DNS используются для конфигурирования dnsmasq
, но в конечном счете это dnsmasq
это только ответственно за обработку поисков DNS (с помощью восходящих серверов DNS, поскольку она считает необходимым). Это корректно?dnsmasq
действительно ли обработка является конкретным поиском DNS? т.е. это отвечает на это от своего кэша? Какому восходящему серверу DNS это передает его?dnsmasq
использовать конкретный сервер DNS для локального домена?dnsmasq
и Network Manager Будучи самим собой через несколько дней в будущем: ваше понимание верно.
Однако обратите внимание, что Network Manager запускает экземпляр dnsmasq
как дочерний процесс (не отдельный демон) и сохраняет свой собственный набор параметров конфигурации dnsmasq.
dnsmasq
обрабатывает определенный поиск DNS? Извините, я до сих пор не знаю.
dnsmasq
использовать определенный DNS-сервер для локального домена? Да, опция --server
в dnsmasq
(страница руководства здесь ) позволяет вам указывать восходящий DNS серверы для конкретных доменов.
Вы можете передать эту опцию вызову Network Manager dnsmasq
. Я сделал это, создав файл в каталоге /etc/NetworkManager/dnsmasq.d/
с содержимым:
server=//192.168.0.1
Обычно эта строка будет server=/domain/<ipaddr>
; в этом случае пустая спецификация домена означает «только неквалифицированные имена», например, localserver
в вашем примере (в отличие от localserver.domain
).
Вышеуказанное изменение все еще не исправило вещи. Я проверил, что это было загружено (service NetworkManager status
показывает запись в журнале dnsmasq[<pid>]: using nameserver 192.168.0.1#53 for unqualified names
), но он все еще возвращает NXDOMAIN
при поиске. Поэтому я остановился на следующем хаке:
Локальные машины, к которым я подключаюсь, имеют статические IP-адреса, поэтому я вручную указал их в файле в /etc/NetworkManager/dnsmasq.d
с содержимым:
address=/localserver/192.168.0.13
address=/localserve2/192.168.0.14
[...and so on...]
Извините, я немного опоздал сюда, но вы почти были там с вопросом 2! В руководстве для dnsmasq, которое вы связали, есть опция под названием - log-questions
. Так просто:
$ echo "log-queries" > /etc/NetworkManager/dnsmasq.d/log-queries
$ systemctl restart NetworkManager
Затем вы должны увидеть журналы, похожие на:
$ journalctl -f
Jan 21 15:39:15 computor dnsmasq[12345]: query[A] github.com from 127.0.0.1
Jan 21 15:39:15 computor dnsmasq[12345]: forwarded github.com to 8.8.8.8
Jan 21 15:39:15 computor dnsmasq[12345]: forwarded github.com to 8.8.4.4
Jan 21 15:39:15 computor dnsmasq[12345]: reply github.com is 140.82.118.4
(Я использую Debian, а не Ubuntu, но я ожидаю, что это будет работать так же.)
Однако, когда мы вернемся к вашей исходной проблеме, я думаю, логический способ сделать эту работу - добавить эти определения хостов в ваш / etc / hosts
и заставить dnsmasq NetworkManager использовать их (см. этот вопрос или этот ответ ). Именно здесь я ожидал найти определения локальных серверов, а не копаться в /etc/NetworkManager/dnsmasq.d / *
.