Jak zmusić NetworkManager do dodania serwera DNS na górze /etc/resolv.conf?

11

W tej chwili mój plik /etc/resolv.conf wygląda następująco:

# Generated by NetworkManager
nameserver 10.165.246.33
nameserver 192.135.82.60
nameserver 10.165.74.2

Pierwsze dwa serwery nazw są automatycznie konfigurowane przez DHCP; ostatni to ten, który dodałem ręcznie, w NetworkManager. Jest także najważniejszy, ponieważ rozwiązuje nasze wewnętrzne nazwy domen (np build-server-17.our-company-domain.com.).

Problem polega na tym, NetworkManager dodaje go do dołu z /etc/resolv.conf, więc podczas uzyskiwania dostępu do adresu URL intranet, moi przeglądarka próbuje rozwiązać go za pomocą pierwszych dwóch serwerów, a to trwa wieki.

Jak sprawić, aby NetworkManager dodał ręcznie skonfigurowany serwer DNS przed serwerami skonfigurowanymi automatycznie?

Nowy użytkownik Linux
źródło
1
Ogólnie rzecz biorąc, wszystkie serwery DNS w pliku resolv.conf powinny zwracać te same wyniki. Posiadanie mieszanych serwerów to przepis na sporadyczne awarie i dużo bólu.
Philip Kendall

Odpowiedzi:

3

Nie widzę, do którego systemu należy się konkretnie adresować, ale jeśli Twój używa resolvconf, spróbuj wykonać następujące czynności jako root ( su -lub sudo -i):

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

W pliku tym znajduje się ostrzeżenie, że ręczne zmiany zostaną zastąpione; ale w kontekście wiadomość dotyczy /etc/resolv.conf, a nie /etc/resolvconf/resolv.conf.d/head.

Powinno to umieścić żądany serwer nazw jako pierwszy na liście. Oczywiście, jeśli działa to w twoim systemie operacyjnym, 10.165.74.2 można usunąć z NetworkManager.

Lokalny program rozpoznawania nazw dnsmasqjest również doskonałą ścieżką do przodu. Używając dnsmasq, można wykorzystać znacznie większą kontrolę nad DNS i DHCP. Na przykład w tym scenariuszu dnsmasqmożna wysłać zapytanie do określonego serwera nazw na podstawie określonej nazwy domeny z jego serveropcją. Zobacz fragment, dnsmasq.confktóry może dotyczyć Twojego celu poniżej.

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

Aktualizacja

Dziękujemy za wzmiankę o systemie operacyjnym. W CentOS 7 istnieje wiele metod. W interfejsie GUI kliknij Aplikacje> Narzędzia systemowe> Ustawienia> Sieć. Wybierz połączenie do skonfigurowania.

CentOS 7 NetworkManager - Konfiguruj połączenie

Wyłącz Automatyczny DNS i podaj serwery nazw. Zastosuj konfigurację.

CentOS 7 NetworkManager - Zastosuj ustawienia statycznego DNS

Następnym razem, gdy NetworkManager rozpocznie to połączenie, zapisuje wartości niestandardowe. (Podczas testowania wyłączyłem i ponownie włączyłem sieć, ponieważ miałem dwa połączenia sieciowe).

Zgodnie z dokumentacją ,

  1. Dostępny jest prosty tekstowy interfejs użytkownika oparty na przekleństwach (TUI) dla NetworkManager, nmtui.
  2. Udostępniono narzędzie wiersza polecenia nmcli, aby umożliwić użytkownikom i skryptom interakcję z NetworkManager. Należy pamiętać, że nmcli może być używany w systemach bez GUI, takich jak serwery, do kontrolowania wszystkich aspektów NetworkManager. Jest na równi z narzędziami GUI.

W szczególności nmcli dokumentacja wyglądała bardzo dobrze.

Krzysztof
źródło
1
Przepraszamy, to CentOS, który nie ma resolvconfpakietu. dnsmasqwydaje się jednak dobrym rozwiązaniem.
Użytkownik systemu Linux dla początkujących
9

I przypadkowo stworzył duplikat pytanie tutaj . Odpowiedź jest dostępna, ale zasadniczo musisz utworzyć:

/etc/dhcp/dhclient.conf

jeśli jeszcze nie istnieje, i dodaj:

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

Nie zapomnij o średniku na końcu!

Następnie wystarczy zrestartować komputer i automatycznie przenieść linię „nameserver [adres IP serwera]” w pliku /etc/resolv.conf na sam szczyt!

alfreema
źródło
1
Cudownie! Jest to backend używany przez NetworkManager i jedyny sposób, aby to działało ze wszystkimi połączeniami Wi-Fi (nie statycznymi). dzięki !
Adrien M.
0

Istnieje inny sposób: nie trzeba wyłączać NetworkManager.service. Wystarczy ustawić ifcfg-idevice:

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

Nie musisz ustawiać ustawień /etc/NetworkManager/NetworkManager.conf, takich jak:

[main]
dns=none
użytkownik1437464
źródło