Как заставить NetworkManager добавить DNS-сервер в начало /etc/resolv.conf?


11

Прямо сейчас мой /etc/resolv.conf выглядит так:

# Generated by NetworkManager
nameserver 10.165.246.33
nameserver 192.135.82.60
nameserver 10.165.74.2

Первые два сервера имен автоматически настраиваются через DHCP; последний - тот, который я добавил вручную, в NetworkManager. Это также самый важный, поскольку он разрешает наши внутренние доменные имена (например build-server-17.our-company-domain.com).

Беда в том, NetworkManager добавляет его в нижней части /etc/resolv.conf, поэтому при обращении к URL интрасети, мой браузер пытается решить ее с помощью первых двух серверов, и он принимает возрастов.

Как заставить NetworkManager добавить настроенный вручную DNS-сервер перед автоматически настроенным?


1
Как правило, все DNS-серверы в вашем resolv.conf должны возвращать одинаковые результаты. Наличие смешанных серверов - это рецепт для периодических сбоев и большого количества боли.
Филипп Кендалл

Ответы:


3

Я не вижу, к какой системе обращаться конкретно, но если ваша использует resolvconf, попробуйте следующее как root ( su -или sudo -i):

echo 'nameserver 10.165.74.2' >> /etc/resolvconf/resolv.conf.d/head
resolvconf -u

В этом файле есть предупреждение о том, что ручные изменения будут перезаписаны; но в контексте сообщение относится /etc/resolv.conf, а не /etc/resolvconf/resolv.conf.d/head.

Это должно поместить желаемый сервер имен первым в списке. Конечно, если это работает в вашей операционной системе, то 10.165.74.2 можно удалить из NetworkManager.

Локальный распознаватель, dnsmasqтакже отличный путь вперед. Используя dnsmasq, можно использовать гораздо больше контроля над DNS и DHCP. Например, в этом сценарии dnsmasqможно запросить конкретный сервер имен на основе указанного доменного имени с его serverопцией. Посмотрите фрагмент, dnsmasq.confкоторый может относиться к вашей цели ниже.

# Add other name servers here, with domain specs if they are for
# non-public domains.
server=/our-company-domain.com/10.165.74.2

Обновить

Спасибо за упоминание операционной системы. На CentOS 7 есть много методов. В графическом интерфейсе выберите Приложения> Системные инструменты> Настройки> Сеть. Выберите соединение для настройки.

CentOS 7 NetworkManager - Настройка соединения

Отключите автоматический DNS и поставьте серверы имен. Примените конфигурацию.

CentOS 7 NetworkManager - Применение статических настроек DNS

В следующий раз, когда NetworkManager запускает это соединение, он записывает пользовательские значения. (Во время тестирования я выключил и снова включил сеть, потому что у меня было два сетевых подключения.)

Согласно документации ,

  1. Доступен простой текстовый пользовательский интерфейс (TUI) на основе curses для NetworkManager, nmtui.
  2. Средство командной строки, nmcli, позволяет пользователям и сценариям взаимодействовать с NetworkManager. Обратите внимание, что nmcli может использоваться в системах без GUI, таких как серверы, для управления всеми аспектами NetworkManager. Это наравне с инструментами GUI.

В частности, nmcli документация выглядела очень хорошо.


1
Извините, это CentOS, в котором нет resolvconfпакета. dnsmasqкажется хорошим решением, хотя.
Новичок в Linux User

8

Я случайно создал дубликат вопроса здесь . Ответ есть, но по сути, вам нужно создать:

/etc/dhcp/dhclient.conf

если он еще не существует, добавьте:

prepend domain-name-servers [ip address of server];

Не забывайте точку с запятой в конце!

После этого простая перезагрузка автоматически переместила строку «nameserver [ip address of server]» в «/etc/resolv.conf» вверх!


Чудесный! Это бэкэнд, используемый NetworkManager, и единственный способ заставить его работать со всеми соединениями wifi (не статично). Благодарность !
Адриен М.

0

Есть еще один способ, не нужно отключать NetworkManager.service. Просто установите ifcfg-idevice:

PEERDNS=no
DNS1=10.165.74.2
DNS2=OTHERDNS
DOMAIN=DEMO.COM

Вам не нужно устанавливать параметры /etc/NetworkManager/NetworkManager.conf, например:

[main]
dns=none
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.