Поиск и устранение неисправностей dnsmasq

У меня есть проблемы 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 вместо того, чтобы обходить его полностью.

Таким образом, мои вопросы:

  1. Мое понимание - это dnsmasq легкий сервер DNS, работающий на моем компьютере. По-видимому, настройки Network Manager DNS используются для конфигурирования dnsmasq, но в конечном счете это dnsmasq это только ответственно за обработку поисков DNS (с помощью восходящих серверов DNS, поскольку она считает необходимым). Это корректно?
  2. Я могу видеть как dnsmasq действительно ли обработка является конкретным поиском DNS? т.е. это отвечает на это от своего кэша? Какому восходящему серверу DNS это передает его?
  3. Я могу сообщить dnsmasq использовать конкретный сервер DNS для локального домена?
3
задан 14 April 2017 в 01:18

2 ответа

1. dnsmasq и Network Manager

Будучи самим собой через несколько дней в будущем: ваше понимание верно.

Однако обратите внимание, что Network Manager запускает экземпляр dnsmasq как дочерний процесс (не отдельный демон) и сохраняет свой собственный набор параметров конфигурации dnsmasq.

2. Могу ли я увидеть, как dnsmasq обрабатывает определенный поиск DNS?

Извините, я до сих пор не знаю.

3. Могу ли я поручить 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...]
3
ответ дан 1 December 2019 в 16:19

Извините, я немного опоздал сюда, но вы почти были там с вопросом 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 / * .

2
ответ дан 21 January 2020 в 16:02

Другие вопросы по тегам:

Похожие вопросы: