Come fare in modo che NetworkManager aggiunga un server DNS nella parte superiore di /etc/resolv.conf?


11

In questo momento, il mio /etc/resolv.conf è simile al seguente:

# Generated by NetworkManager
nameserver 10.165.246.33
nameserver 192.135.82.60
nameserver 10.165.74.2

I primi due nameserver sono automaticamente configurati tramite DHCP; l'ultimo è quello che ho aggiunto manualmente, in NetworkManager. È anche il più importante, poiché risolve i nostri nomi di dominio interni (ad es build-server-17.our-company-domain.com.).

Il problema è, NetworkManager aggiunge al fondo di /etc/resolv.conf, in modo che quando si accede a un URL Intranet, i miei tentativi del browser per risolverlo utilizzando i primi due server, e ci vogliono secoli.

Come faccio ad aggiungere a NetworkManager il server DNS configurato manualmente prima di quelli configurati automaticamente?


1
In generale, tutti i server DNS in resolv.conf dovrebbero restituire gli stessi risultati. Avere server misti all'interno è una ricetta per guasti intermittenti e molto dolore.
Philip Kendall,

Risposte:


3

Non vedo quale sistema indirizzare in modo specifico, ma se il tuo sta usando resolvconf, prova quanto segue come root ( su -o sudo -i):

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

C'è un avviso in quel file che afferma che le modifiche manuali verranno sovrascritte; ma, nel contesto, il messaggio si applica a /etc/resolv.confno /etc/resolvconf/resolv.conf.d/head.

Questo dovrebbe posizionare il server dei nomi desiderato per primo nell'elenco. Naturalmente, se funziona sul tuo sistema operativo, 10.165.74.2 può essere rimosso da NetworkManager.

Anche il resolver locale dnsmasqè un eccellente percorso da seguire. Utilizzando dnsmasq, si può utilizzare un controllo molto maggiore su DNS e DHCP. Ad esempio, in questo scenario, è dnsmasqpossibile eseguire una query su un server dei nomi specifico basato su un nome di dominio specificato con la sua serveropzione. Vedi uno snippet dnsmasq.confche potrebbe riguardare il tuo obiettivo di seguito.

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

Aggiornare

Grazie per aver menzionato il sistema operativo. Su CentOS 7, ci sono molti metodi. Nella GUI, fai clic su Applicazioni> Strumenti di sistema> Impostazioni> Rete. Seleziona una connessione da configurare.

CentOS 7 NetworkManager - Configura connessione

Disattiva DNS automatico e fornisci i server dei nomi. Applica la configurazione.

CentOS 7 NetworkManager - Applica le impostazioni DNS statiche

La prossima volta che NetworkManager avvia tale connessione, scrive i valori personalizzati. (Durante il test, ho spento e riacceso la rete perché avevo due connessioni di rete.)

Secondo la documentazione ,

  1. È disponibile una semplice interfaccia utente di testo (TUI) basata su curses per NetworkManager, nmtui.
  2. Viene fornito uno strumento da riga di comando, nmcli, per consentire agli utenti e agli script di interagire con NetworkManager. Si noti che nmcli può essere utilizzato su sistemi senza GUI come i server per controllare tutti gli aspetti di NetworkManager. È su un piano di parità con gli strumenti della GUI.

In particolare, la nmcli documentazione sembrava molto buona.


1
Siamo spiacenti, è CentOS, che non ha un resolvconfpacchetto. dnsmasqsembra una buona soluzione, però.
Utente Newbie Linux

8

Ho creato accidentalmente una domanda duplicata qui . La risposta è lì, ma essenzialmente, è necessario creare:

/etc/dhcp/dhclient.conf

se non esiste già e aggiungi:

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

Non dimenticare il punto e virgola alla fine!

Dopodiché, semplicemente il riavvio ha spostato automagicamente la riga "nameserver [indirizzo IP del server]" in "/etc/resolv.conf" verso l'alto!


Meravigliosa ! Questo è il backend utilizzato da NetworkManager e l'unico modo per farlo funzionare con tutte le connessioni wifi (non statiche). Grazie !
Adrien M.

0

Esiste un altro modo, non è necessario disattivare NetworkManager.service. Basta impostare ifcfg-idevice:

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

Non è necessario impostare le impostazioni /etc/NetworkManager/NetworkManager.conf, come:

[main]
dns=none
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.