Як змусити 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-сервери у вашій резолюції.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) для NetworkManager, nmtui.
  2. Інструмент командного рядка, nmcli, надається, щоб дозволити користувачам та сценаріям взаємодіяти з NetworkManager. Зауважте, що nmcli можна використовувати в системах без графічного інтерфейсу, таких як сервери для контролю всіх аспектів NetworkManager. Він нарівні з інструментами графічного інтерфейсу.

Зокрема, nmcli документація виглядала дуже добре.


1
Вибачте, це CentOS, який не має resolvconfпакета. dnsmasqздається, що це хороше рішення.
Новачок Linux користувача

8

Я випадково створив дублікат питання тут . Відповідь є, але по суті, вам потрібно створити:

/etc/dhcp/dhclient.conf

якщо його вже немає, додайте:

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

Не забудьте крапку з комою!

Після цього, просто перезавантажившись, автоматично перемістив рядок 'nameserver [ip адреса сервера]' у рядку '/etc/resolv.conf' доверху!


Чудовий! Це резервний сервіс, який використовується NetworkManager, і єдиний спосіб налагодити цю роботу з усіма підключеннями Wi-Fi (не статичними). Спасибі !
Адріан М.

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.