обеспечить порядок поиска DNS в dnsmasq, управляемый сетевым менеджером?

888
Wang

У меня есть какое-то DN, у которого нет записи на DNS-сервере. Xxxx может быть разрешен только сервером yyyy, а некоторые DN будут неправильными в yyyy, но корректными в xxxx. В традиционном linux я просто вставил 2 строки /etc/resolv.conf.

x.x.x.x y.y.y.y  

Таким образом, программа сначала отправит запрос в xxxx. Если у него нет этой записи, она вернется к yyyy. Таким образом, все будет хорошо.

В современном дистрибутиве Linux обычно используется dnsmasq. Я все еще могу дать несколько DNS-серверов по сетевому менеджеру. nmcli dev list iface eth0показать это:

IP4.DNS[1]: x.x.x.x IP4.DNS[2]: y.y.y.y 

Однако поиск DNS не соответствует порядку, который я даю. Поскольку yyyy - это локальный сервер, он всегда реагирует быстрее, dnsmasq всегда использует ответ от yyyy и никогда не использует ответ от xxxx. Есть ли в любом случае, что я могу добавить порядок поиска в dnsmasq?

Я знаю, что мог бы сделать что-то вроде strict-orderв dnsmasq.conf. Однако в Ubuntu 14.04 такого файла нет и файл resolv.conf генерируется автоматически.

[Обновить]

Я добавляю "строгий порядок" к /etc/NetworkManager/dnsmasq.d/dnsorder.conf. Перезапустите сеть и NetworkManager, пока это не имеет никакого эффекта. команда dnsmasq, запускаемая networkmnager, выглядит следующим образом:

/usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/run/sendsigs.omit.d/network-manager.dnsmasq.pid --listen-address=127.0.1.1 --conf-file=/var/run/NetworkManager/dnsmasq.conf --cache-size=0 --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq –conf-dir=/etc/NetworkManager/dnsmasq.d 

/var/run/NetworkManager/dnsmasq.confпустой. Не resolv.confнайти в /etc/NetworkManager.

0

1 ответ на вопрос

0
Pavel Šimerda

На мой взгляд, это неправильный способ мышления. Хотя библиотека libc несколько ограничена последовательными попытками использовать DNS-серверы, глобальный список DNS-серверов должен содержать все записи, которые равны, и поведение dnsmasq совершенно корректно.

Если вы хотите настроить определенные поддеревья DNS для обработки различными DNS-серверами в качестве исключения для корневого дерева, вам следует сделать именно это.

Насколько я знаю, вы можете настроить предоставляемые NetworkManager экземпляры dnsmasq, в /etc/NetworkManager/dnsmasq.d/которых уже есть ответы на другие вопросы.

Также dnsmasq не единственный вариант для современного дистрибутива. Вы по-прежнему можете использовать старый добрый /etc/resolv.confфайл конфигурации libc во всех дистрибутивах, где есть NetworkManager, включая Ubuntu. Или вы можете использовать Unbound в некоторых дистрибутивах. В современных дистрибутивах есть все виды подходов к локальной конфигурации DNS.

NetworkManager очень гибкий, поэтому я хотел бы использовать его. dnsmasq может кэшировать записи поиска, которые могут сделать мою сеть намного быстрее, поэтому я также хотел бы использовать ее. Мне просто нужно, чтобы менеджер сети управлял dnsmasq и выбирал строгий порядок. До сих пор я не могу найти ни одного рабочего решения на основе dnsmasq.d. Если вы можете поделиться более подробной информацией и указать мне правильное направление, я приму ваш ответ. Wang 6 лет назад 1