Я использую CentOS 7.4, пытаюсь настроить dnsmasq для кэширования DNS и DNS-серверы для каждой зоны для работы Consul. По сути, конфигурация dnsmasq сводится к следующему:
# filter everything with consul in the name and send to local consul resolver
server=/consul/127.0.0.1#8600
Проблема, с которой я столкнулся, заключается в том, чтобы локальный преобразователь в /etc/resolv.conf
без замены каких-либо других преобразователей в файле.
Раньше я мог делать это с помощью dhclient
конфигурация такая:
prepend domain-name-servers 127.0.0.1;
Поскольку теперь все является NetworkManager, я обнаружил, что способ использования dnsmasq - это добавить следующую строку в [main]
раздел /etc/NetworkManager/NetworkManager.conf
:
dns=dnsmasq
Перед перезапуском NetworkManager я вижу, что мой /etc/resolv.conf
содержит сетевой DNS-сервер, полученный DCHP:
# Generated by NetworkManager
search nowhere
nameserver 10.0.2.3
options single-request-reopen
После перезапуска NetworkManager с указанным выше изменением конфигурации он заменяет мой сетевой DNS-сервер на 127.0.0.1:
# Generated by NetworkManager
search nowhere
nameserver 127.0.0.1
options single-request-reopen
Поскольку dnsmasq использует /etc/resolv.conf
для обнаружения локальных преобразователей я хотел бы оставить преобразователь (-ы) в /etc/resolv.conf
чтобы dnsmasq мог их обнаружить.
Есть ли способ достичь предыдущей функциональности, если вместо этого NetworkManager просто добавит локальный преобразователь?
По-видимому, несмотря на то, что CentOS 7.4 не поставляется с апстримом /etc/dhclient.conf
, это все еще действительный путь. Я просто создал этот файл со следующим содержанием:
prepend domain-name-servers 127.0.0.1;
И вуаля!
# Generated by NetworkManager
search nowhere
nameserver 127.0.0.1
nameserver 10.0.2.3
options single-request-reopen