Зачем dig сообщает о DNS-сервере как 127.0.0.1, когда я использую внешний DNS?


12

Я использую unbound и обычно использую openDNS в качестве своего DNS-сервера.

Когда я бегу, dig google.comговорю, я получаю SERVER: 127.0.0.1#53(127.0.0.1). Что именно эта штука слушает на порту № 53? это не связано или это как-то связано с dnsmasq (у меня вообще установлен dnsmasq, как dnsmasq.confбудто его нет /etc?)

В resolv.conf есть, nameserver 127.0.0.1но затем в сетевом менеджере у меня есть DNS-серверы, указывающие на два адреса openDNS. и так, что здесь происходит? локальный сервер имен указывает на dnsmasq, который затем использует значения из сетевого менеджера? или это несвязанное, что на самом деле слушает?


Что вы пытаетесь достичь ?
Рахул Патил

3
просто понимание действительно
fpghost

это версия Ubuntu Server или как?
Рахул Патил

не просто рабочий стол
fpghost

Ответы:


15

По умолчанию NetworkManager использует Dnsmasq в качестве распознавателя DNS, если он установлен. Это значение по умолчанию в системах на основе Debian, поэтому Dnsmasq работает в конфигурации по умолчанию, где он разрешает имена только на основе вышестоящих серверов, указанных в параметрах командной строки (плюс содержимое /etc/hosts). У вас нет, /etc/dnsmasq.confпотому что этот файл присутствует только в дополнительном пакете dnsmasq .

Чтобы увидеть, использует ли ваша система Dnsmasq или Unbound для DNS-запросов, запустите netstat -ulnp | grep ":53 ".

В Ubuntu 12.04 NetworkManager не очень хорошо работает с другими распознавателями DNS (см. Ошибку 959037 - резюме Томаса Гуда охватывает все это). Чтобы продолжать работу Unbound вместе с NetworkManager, лучше всего указывать NetworkManager не запускать Dnsmasq (он не нужен вам, кроме Unbound, если только вы не используете функции Dnsmasq, которые NetworkManager не использует). Для этого:

  1. Изменить, /etc/NetworkManager/NetworkManager.confчтобы закомментировать строку, содержащую dns=dnsmasq(добавить #в начале этой строки).
  2. Перезапустите NetworkManager с помощью service network-manager restart.

как в настоящее время Ubuntu знает, как использовать Unbound? (похоже, он его использует); что я понимаю, почему мне не нужно что-то вроде dns=unboundв /etc/NetworkManager/NetworkManager.conf? и учитывая, что у меня в данный момент есть dns=dnsmasqэтот файл, почему Ubuntu на самом деле использует unbound?
fpghost

@fpghost То, что вы получите, зависит от того, кто начал первым. Если вы загрузитесь без сети, вы получите Unbound, потому что он запустится первым. Если вы загружаетесь с сетевым подключением, я думаю, что это сбой.
Жиль "ТАК - перестань быть злым"

Хорошо, но что меня действительно удивило, так это вместо того, чтобы полностью закомментировать dns=...строку, чтобы прекратить использование dnsmasq, что, если я заменит строку на dns=unbound? Иначе как NetworkManager узнает, что unbound будет локальным распознавателем?
fpghost

1

В Ubuntu 12.04 dnsmasq теперь работает по умолчанию из-за жесткого кодирования в network-manager. Использование dnsmasq в качестве локального распознавателя по умолчанию в настольных системах Это второе большое изменение в этом выпуске. При установке на рабочем столе ваш DNS-сервер будет иметь значение «127.0.0.1», которое указывает на сервер dnsmasq, управляемый NetworkManager.

SERVER: 127.0.0.1#53(127.0.0.1)

это означает, что вы получаете ANS вашего запроса от локальных DNS, то есть DNSMASQ.

Если вам не нужен локальный распознаватель, вы можете отключить его DNSMASQ, используя следующую процедуру.

Вам нужно отредактировать /etc/NetworkManager/NetworkManager.confфайл

gksudo gedit /etc/NetworkManager/NetworkManager.conf

и закомментируйте следующую строку из

dns=dnsmasq

в

#dns=dnsmasq

Сохраните файл и выйдите.

Теперь вам нужно перезапустить, network-managerиспользуя следующую команду

sudo systemctl restart network-manager

Ссылка ссылка


1
Хорошо, но что, если у меня также установлен Unbound, имеет ли это преимущество над dnsmasq в качестве локального распознавателя? оба слушают на # 53? как они уживаются вместе?
fpghost

и почему /etc/dnsmasq.confотсутствует?
fpghost

@fpghost dnsmasq прослушивает 127.0.1.1, тогда как unbound прослушивает 127.0.0.1, оба на порту 53. Вы можете установить dns = unbound в конфигурации сетевого менеджера, чтобы использовать unbound.
talonx

0

Чтобы увидеть, какой фактический DNS-сервер использовался для разрешения вашего адреса, при использовании DNSMasq нельзя использовать, DIGпотому что 127.0.0.1вместо этого он только сообщает :

Включить ведение журнала в DNSMasq:

sed -i 's/\#log-queries/log-queries/' /etc/dnsmasq.conf
systemctl restart dnsmasq

Записать DNSMasq и отслеживать вывод:

journalctl --unit dnsmasq.service -f

Пинг хоста:

ping google.ca

Затем вы можете увидеть, что мой вышестоящий DNS-сервер (192.168.1.1) разрешает его:

: query[A] google.ca from 127.0.0.1
: forwarded google.ca to 192.168.1.1
: query[AAAA] google.ca from 127.0.0.1
: forwarded google.ca to 192.168.1.1
: reply google.ca is 172.217.1.3
: reply google.ca is 2607:f8b0:400b:80f::2003
: query[PTR] 3.1.217.172.in-addr.arpa from 127.0.0.1
: forwarded 3.1.217.172.in-addr.arpa to 192.168.1.1
: reply 172.217.1.3 is iad23s25-in-f3.1e100.net
: reply 172.217.1.3 is yyz10s14-in-f3.1e100.net

Пинг хост за компанией VPN (во время разделенного туннеля) для * .company.com

ping box.company.com

Результаты:

: query[A] box.company.com from 127.0.0.1
: forwarded box.company.com to vpn.ser.ver.ip
: query[AAAA] box.company.com from 127.0.0.1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.