Wie stelle ich meinen DNS ein, wenn die resolv.conf überschrieben wird?

279

Die meisten Informationen, die ich online sehe, sagen, dass sie bearbeitet werden müssen /etc/resolv.conf, aber alle Änderungen, die ich dort vornehme, werden einfach überschrieben.

$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- 
#     YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1

Es scheint, dass 127.0.1.1 eine lokale Instanz von ist dnsmasq. Die dnsmasqDokumente sagen zu bearbeiten /etc/resolv.conf. Ich habe versucht, benutzerdefinierte Nameserver /etc/resolv.conf.d/baseeinzurichten, aber die Änderungen wurden /etc/resolv.confnach dem Ausführen nicht angezeigt sudo resolvconf -u.

Zu Ihrer Information, ich möchte DNS nicht für jede Verbindung einzeln ändern. Ich möchte Standard-DNS-Einstellungen festlegen, die für alle Verbindungen verwendet werden, wenn nichts anderes angegeben ist.

AKTUALISIEREN:

Ich habe diese Frage selbst beantwortet: https://unix.stackexchange.com/a/163506/67024

Ich denke, es ist die beste Lösung seit:

  1. Es klappt.
  2. Es erfordert die geringste Menge an Änderungen und
  3. Es funktioniert weiterhin in Verbindung mit dem DNS-Cache von dnsmasq, anstatt ihn zu umgehen.
Seán Hayes
quelle
Beantworten Sie Ihre Frage besser, anstatt Ihre Frage zu aktualisieren. Ich denke, es wird einfacher sein, die richtige Antwort auf Ihr Problem zu finden
Philippe Gachoud,
Es scheint, dass die meisten Antworten Ubuntu-orientiert und zu kompliziert sind. Eine universelle Lösung für Network Benutzer einfach hinzufügen dns=nonein /etc/NetworkManager/NetworkManager.conf(siehe Details in meiner Antwort unten).
Skippy le Grand Gourou
Ich denke, diese Antwort verdeutlicht, warum die resolve.conf überschrieben wird, dann wissen Sie, wie Sie es konfigurieren.
Frau

Antworten:

250

Ich glaube, wenn Sie den DNS-Nameserver überschreiben möchten, fügen Sie einfach eine ähnliche Zeile in Ihre baseDatei unter resolv.conf.d.

Beispiel

$ sudo vim /etc/resolvconf/resolv.conf.d/base

Dann stelle deine Nameserver-Liste so ein:

nameserver 8.8.8.8
nameserver 8.8.4.4

Endlich Update resolvconf:

$ sudo resolvconf -u

Wenn Sie einen Blick auf die Manpage werfen resolvconf, werden die verschiedenen Dateien unter beschrieben /etc/resolvconf/resolv.conf.d/.

   /etc/resolvconf/resolv.conf.d/base
          File  containing  basic  resolver  information.  The lines in this 
          file are included in the resolver configuration file even when no
          interfaces are configured.

   /etc/resolvconf/resolv.conf.d/head
          File to be prepended to the dynamically generated resolver 
          configuration file.  Normally this is just a comment line.

   /etc/resolvconf/resolv.conf.d/tail
          File to be appended to the dynamically generated resolver 
          configuration file.  To append nothing, make this  an  empty  
          file.   This file is a good place to put a resolver options line 
          if one is needed, e.g.,

              options inet6

Auch wenn oben in der headDatei eine Warnung angezeigt wird:

$ cat /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

Diese Warnung ist vorhanden, damit die Warnung beim Erstellen resolv.confdieser Dateien in die resultierende Datei eingeht, für deren Erstellung diese Dateien verwendet werden. Sie hätten also genauso gut die nameserveroben für die baseDatei beschriebenen Zeilen zur Datei hinzufügen können head.

Verweise

slm
quelle
21
Ubuntu 14.04 - Als ich die Nameserver einfügte baseund startete resolvconf -u, wurden die Nameserver nicht in die resolv.conf eingefügt - Als ich die Nameserver head
einfügte
7
Ubuntu 14.04 - /run/resolvconf/interface/NetworkManager
Musste auch
3
Typ nslookup google.comund die erste IP in der Liste sollte Ihr neuer Nameserver sein, wenn nicht, haben Sie es falsch gemacht
frazras
6
Ubuntu 16.04: Funktioniert, wenn nur angehängt /etc/resolvconf/resolv.conf.d/head, nicht mit base. Bestätigt mit nslookup google.com.
Acumenus
3
Zunächst müssen Sie resolvconfinstalliert haben. Sie können es installieren, indem Sie tun sudo apt-get install resolvconf.
MAChitgarha
79

Diese Frage interessiert mich auch und ich habe die vorgeschlagene Lösung @sim ausprobiert.

Um es zu testen, habe ich gesetzt

nameserver 8.8.8.8

in /etc/resolvconf/resolv.conf.d/baseund

nameserver 8.8.4.4

im /etc/resolvconf/resolv.conf.d/head

Dann habe ich das Netzwerk mit neu gestartet

sudo service network-manager restart

Das Ergebnis /etc/resolv.confsieht so aus

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 127.0.1.1

und nm-toolgibt an, dass die dnsserver sind

DNS:             208.67.222.222
DNS:             208.67.220.220

Welche werden von meinem Router bereitgestellt? Andererseits sagt das Graben einer Adresse das aus

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

Wenn ich recht habe, schließe ich daraus folgendes

  1. nur der "head" -Teil wird von resolvonf gelesen: der "base" -Teil wird irgendwie von dnsmasq gesteuert
  2. der dnsserver wird unabhängig von dem von dhcp bereitgestellten Server tatsächlich zu 8.8.4.4 gezwungen, ABER Sie verlieren das von dnsmasq bereitgestellte Caching, da die Anforderung immer an 8.8.4.4 gesendet wird
  3. dnsmasq verwendet NUR den von dhcp bereitgestellten dnsserver.

Alles in allem funktioniert es, aber ich glaube nicht, dass es das gewünschte Ergebnis ist. Eine engere Lösung, denke ich, ist die folgende. Bearbeiten

sudo vim /etc/dhcp/dhclient.conf

dann füge hinzu

supersede domain-name-servers 8.8.8.8;

Das Ergebnis ist folgendes: resolv.conf enthält nur 127.0.0.1, was bedeutet, dass der dnsmasq-Cache aufgerufen wird und nm-tool sagt

DNS:             8.8.8.8

Das heißt, wenn der gesuchte Name nicht im Cache ist, wird er am 8.8.8.8 und nicht auf dem von dhcp bereitgestellten Server abgefragt.

Eine andere (vielleicht bessere) Option ist die Verwendung von "prepend" anstelle von "supersede": Wenn der Name in 8.8.8.8 nicht aufgelöst wird, wird die Anforderung auf den anderen Server zurückgesetzt. Tatsächlich sagt nm-tool

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220
Brad
quelle
4
Eine viel bessere Antwort als das Hacken in die NS-Configs. Vor allem die Möglichkeit, einen Server vor den von dhcp bereitgestellten zu stellen. Scheint das perfekte Gleichgewicht zu sein, um das Problem zu lösen, ohne neue zu schaffen!
Steve Midgley
2
So viel Klarheit und Gedanken in die Antwort und nicht nur ein Befehl.
Igaurav
3
Yo Mann! "Ersetzen Sie Domain-Name-Server 8.8.8.8." ist die Antwort
Jack
Es ist erwähnenswert, dass nm-tool durch nmcli ersetzt wurde
Fiddy Bux
59

Ich habe herausgefunden, dass Sie die verwendeten Nameserver ändern können, dnsmasqindem Sie die folgenden Zeilen hinzufügen /etc/dnsmasq.conf:

server=8.8.8.8
server=8.8.4.4

Ich hatte zwar keine /etc/dnsmasq.confDatei, da sie vom dnsmasq-Paket installiert wurde, aber Ubuntu wird nur mit dnsmasq-base geliefert. Ich lief sudo apt-get install dnsmasq, dann bearbeitete /etc/dnsmasq.conf, dann sudo service dnsmasq restartund sudo service network-manager restart.

Ich sudo tail -n 200 /var/log/sysloghabe mein Syslog überprüft und festgestellt, dass dnsmasqdie angegebenen Nameserver verwendet wurden:

Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53
Seán Hayes
quelle
4
Es gibt einen Grund, warum dies als die beste Antwort markiert ist ... weil es tatsächlich so ist! vielen Dank! Ich würde hinzufügen, dass nach all den Schritten, die Sie erwähnt haben, ein Neustart des Netzwerks notwendig sein könnte, damit alles reibungslos funktioniert (es war für mich ... sudo service network-manager restart)
Clint Eastwood
3
Auf Ubuntu 14.04 Server würde etwa die Hälfte der Zeit, in der ein Kaltstart zu keiner Internetverbindung über eine URL führen würde, eine IP-Adresse jedoch funktionieren. Ich habe viel Zeit vergeblich versucht, das Problem zu beheben, monatelang aufgegeben und dann diese Lösung gefunden. Ich denke auch, dass es die beste Antwort ist.
Nate Lockwood
Es ist faszinierend, dass dnsmasq installiert werden muss. Dies hat in der Tat mein DNS in einer normalen Situation
repariert
22

In statischen IP-Situationen wird im Ubuntu Server-Handbuch empfohlen, die Datei / etc / network / interfaces zu ändern. Dies kann folgendermaßen aussehen:

iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10

Sie ändern die IPs 192.168.3.45 192.168.8.10 für diejenigen, die Sie möchten, wie z. B. 8.8.8.8

https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Page 38

Rodolpho
quelle
Das sieht sicherlich richtig aus, aber wie kann ich jetzt die resolv.conf neu generieren ?!
Joel Berger
3
@ JoelBerger ifdown eth0; ifup eth0.
Dzamo Norton
17
  1. Suche nach 'Netzwerkverbindung'
  2. Öffne es

                        Bildbeschreibung hier eingeben

  3. Wählen Sie dann entweder WiFi oder Ethernet oder was auch immer Sie verwenden, und klicken Sie auf Bearbeiten. Du bekommst folgendes:

                  Bildbeschreibung hier eingeben

  4. Wählen Sie in den Registerkarten ipv4 aus

  5. Adressen nur in Methode auswählen
  6. Geben Sie unten Ihren DNS-Namen ein und speichern Sie ihn

  7. Sie sind fertig

pa1pal
quelle
Das müsste ich allerdings für jede Netzwerkverbindung machen. In der Vergangenheit konnten Sie die Standardeinstellungen für alle Verbindungen ändern. Dies wollte ich hier tun.
Seán Hayes
2
Ich liebe dich! Diese UI-Einstellung hat meinen Arsch vor Sudo und Vim-Chaos bewahrt: '(
Luke
Wenn Sie Mint (unter Ubuntu 14.04) verwenden, dies jedoch auch unter KDE, hat das Festlegen von DNS-Servern im GUI-Netzwerk-Manager aus irgendeinem Grund keine Auswirkungen auf die in einem Terminal verwendeten DNS-Einstellungen
HorusKol
2
Beste Antwort imho. Unter Ubuntu 14.04 habe ich 2 externe IP-Adressen für DNS erhalten, die Clients in meinem Heimnetzwerk nicht erkennen. Verläßt Methode auf ‚Automatisch (DHCP)‘ für die Kabelverbindung hinzugefügt meinen Router des IP-Adresse an die bestehenden Liste. Für die drahtlose Verbindung über wlan0 hat das nicht funktioniert, aber die Methode "Nur automatische (DHCP) Adressen" hat die externen Adressen durch die IP meines Routers ersetzt, und das hat dann auch funktioniert. Änderungen übernehmen mit sudo service network-manager restart, etwas warten, bestätigen mit nmcli d list | grep 'DNS\|IP-IFACE'. Und pingen Sie Ihren internen Client mit dem Namen.
RolfBly
13

Eine schnelle und unsaubere Lösung, die noch nicht erwähnt wurde, besteht darin, das unveränderliche Flag für die resolv.confDatei direkt nach der Bearbeitung zu setzen.

$ sudo nano /etc/resolv.conf

Füge dies hinzu und speichere:

nameserver 8.8.8.8

Dann:

$ sudo chattr +i /etc/resolv.conf

Das sollte den Trick machen. Das mache ich auch auf meinem System.

YouniS Bensalah
quelle
18
Immer wenn Ihre Lösung Chattr beinhaltet, ist es nicht wirklich eine Lösung.
Jeff Jirsa
1
Dies ist, was ich auf Systemen mache, auf denen ich aus irgendeinem Grund das DNS vorübergehend ändern muss und die Konfiguration nicht ändern möchte. Als dauerhafte Lösung würde ich es nicht empfehlen.
Hochl
3
"schnelle und schmutzige
Problemumgehung
10
Das ist nicht schmutzig. Programme, die die lokale Konfiguration zerstören, weil sie glauben, dass sie es besser wissen, sind schmutzig.
11

DNS-Konfiguration unter Linux

Die DNS-Nutzung unter Linux erfolgt über eine Reihe von Routinen in der C-Bibliothek, die den Zugriff auf das Internet Domain Name System (DNS) ermöglichen. Die Resolver-Konfigurationsdatei ( resolv.conf) enthält Informationen, die von den Resolver-Routinen gelesen werden, wenn sie zum ersten Mal von einem Prozess aufgerufen werden. Kurz gesagt, jeder Prozess, der DNS anfordert, liest /etc/resolv.confdie Bibliothek. Das NSS ist darüber geschichtet und wird von konfiguriert /etc/nsswitch.conf.

Die Linux-DNS-Konfiguration befindet sich in der Datei, /etc/resolv.conf ABER es gibt eine Reihe von Programmen / Diensten, die die DNS-Konfigurationsdatei unter automatisch verwalten und verwalten möchten /etc/resolv.conf. In einigen Situationen möchten Sie diese Datei möglicherweise selbst verwalten. Jedes Programm / Dienst, der DNS verwaltet, hat seine eigenen Konfigurationsdateien wie /etc/dnsmasq.conf(für den DNSMASQ-Dienst) und hängt die DNS-Konfiguration an, wenn sich die Verbindung ändert und / oder wenn andere Ereignisse eintreten. Eine schnelle Lösung besteht darin, die DNS-Konfigurationsdatei mit zu sperren. chattr +i /etc/resolv.confDies wird jedoch nicht empfohlen In bestimmten Fällen ist es eine bessere Lösung, alle Programme / Dienste mithilfe des DNS korrekt einzurichten (dnsmasq / network-manager / resolvconf / etc.)

Die Kontrolle über DNS zurückerhalten

Hier finden Sie eine vollständige Liste der Setups, mit denen Sie die Steuerung von resolv.conf wiederherstellen und ein Überschreiben vermeiden können ( Deaktivieren / Einrichten von DNS von einem anderen Ort als resolv.conf ). Beachten Sie, dass resolvconf auch ein unabhängiges Programm von resolv.conf ist Abhängig von Ihrem System / Ihrer Konfiguration verfügen Sie möglicherweise nicht über eines oder mehrere der hier aufgeführten Programme.

1. Resolvconf:

Konfigurationsdateien

cat /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.4.4
cat /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.4.4

Aktualisiere die Konfiguration

sudo resolvconf -u

Deaktivieren Sie resolvconf

systemctl disable --now resolvconf.service 

2. Dnsmasq Service:

Konfigurationsdateien

cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4

Aktualisiere die Konfiguration

sudo systemctl restart dnsmasq.service

3. Netzwerkmanager:

Konfigurationsdateien

/etc/NetworkManager/*

DNS deaktivieren

$ cat /etc/NetworkManager/conf.d/no-dns.conf
[main]
dns=none

DNS aktivieren

$ cat /etc/NetworkManager/conf.d/dns.conf
[main]
dns=default

[global-dns]
searches=example.com

[global-dns-domain-*]

Verwenden Sie den aufgelösten Dienst

$ cat /usr/lib/NetworkManager/conf.d/resolved.conf 
[main]
dns=systemd-resolved

Benutze resolvconf

$ cat /usr/lib/NetworkManager/conf.d/resolvconf.conf 
[main]
rc-manager=resolvconf

Aktualisiere die Konfiguration

systemctl restart NetworkManager.service

4. Netzwerkschnittstellen:

Konfigurationsdateien

$ cat /etc/network/interfaces
#nameservers
# or dns-search like so
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Aktualisieren Sie die Konfiguration

reboot

5. DHCP-Client:

Konfigurationsdateien

$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

Aktualisieren Sie die Konfiguration

reboot

6. Rdnssd Service:

Deaktivieren Sie rdnssd

systemctl disable --now rdnssd.service

7. Gelöster Dienst:

Deaktivieren Sie gelöst

systemctl disable --now systemd-resolved.service

8. Netconfig:

Konfigurationsdateien

/etc/sysconfig/network/config

Deaktivieren Sie netconfig

cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""

Aktualisieren Sie die Konfiguration

reboot

Einstellen des DNS-Servers

Beispiel einer /etc/resolv.confKonfiguration

#Cloudflare
nameserver 1.0.0.1

#Google
#nameserver 8.8.8.8
#nameserver 8.8.4.4

#Cloudflare 
#nameserver 1.1.1.1

#Classic Config
#nameserver 192.168.1.1
#search lan
intika
quelle
10

Mein Problem war ein bisschen anders, ich wollte die DNS-Server meines Routers überschreiben. Ich habe diesen Link von Ubuntu gefunden: https://wiki.ubuntu.com/OverrideDNSServers

Es heißt: Wenn Sie die von einem DHCP-Server bereitgestellten DNS-Einstellungen überschreiben möchten, öffnen Sie

/etc/dhcp3/dhclient.conf

und füge die folgende Zeile hinzu:

supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

<dns_ip_address*>Elemente durch den richtigen Inhalt ersetzen .

Ryan
quelle
Dies ist die Antwort, die mein Problem gelöst hat.
Michael
Perfekt. Fügen Sie einfach hinzu, dass Sie den Netzwerk-Neustart des sudo-Dienstes durchführen sollten, um die Änderungen zu aktivieren.
Nick Triantafillou
Was ist, wenn wir diesen dhcp3Ordner nicht haben ? Ich habe Xubuntu 17.10, ist es /etc/dhcpeinfach umgezogen ?
PlasmaBinturong
4

Möglicherweise fehlt mir etwas, aber gemäß den Konfigurationsanweisungen unter https://help.ubuntu.com/14.04/serverguide/network-configuration.html müssen Sie nur Folgendes aktualisieren. Ich verwende keinen Proxy - nur einen Computer hinter einer Firewall und lokalem DNS (Beispiel zeigt Google, aber stellen Sie ihn auf das ein, was Sie benötigen).

nano /etc/network/interfaces

Standard:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
auto eth0
iface eth0 inet dhcp

AKTUALISIERT:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
#iface eth0 inet dhcp
iface eth0 inet static
address x.x.x.x
netmask 255.255.255.0
gateway x.x.x.x

#nameservers
# you may not need dns-search
# I use it because I'm running this on a Windows network 
# so its useful to have
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Starten Sie neu, wenn Sie können.

TooIgnorantToNotBeAnonymous
quelle
3

Versuchen Sie, dns-nameservers XXX.XXX.XXX.Xin Ihre /etc/networking/interfacesDatei einzufügen.

Mike
quelle
Hinterlassen Sie bitte einen Kommentar, wenn Sie abstimmen. Dies ist die im Handbuch auf Seite 38 beschriebene Methode .
Zook,
1
Das nicht erwähnte Handbuch zeigt alle IPs in einer Zeile. Diese Antwort scheint das Hinzufügen einer Zeile nahezulegen. Und warum ist die letzte Zahl nur ein X breit? Ich denke, es war hauptsächlich das äußerst informelle und unsichere, kurze Schreiben im Chat-Stil, das die Ablehnung hervorgerufen hat, @Zook.
Cees Timmerman
2

Einige der Antworten hier funktionieren einwandfrei. Allerdings war ich mit der Tatsache nicht glücklich , dass ich manuell müssen nur Konfigurationsdateien gehen durch die „richtige“ zu setzen , DNSdie ich bereits am Empfang über DHCPmit NetworkManager.

Ich habe ein wenig gegraben und festgestellt, dass es sich bei der /etc/resolv.confDatei tatsächlich um einen Link handelt, auf den verwiesen wird /run/systemd/resolve/stub-resolv.conf. Nach einigen Experimenten scheint das /run/systemd/resolve/Verzeichnis eine andere Datei mit dem Namen zu enthalten, resolv.confdie bereits die Einstellungen enthält, die Sie über erhalten haben DHCP. Anstatt Konfigurationsdateien manuell überschreiben / erstellen zu müssen /etc/, können Sie einfach eine neue Verknüpfung erstellen /etc/resolv.conf, um auf die /run/systemd/resolve/resolv.confDatei zu verweisen, und alles sollte in Ordnung sein:

# sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Sie sollten nun in der Lage sein, die Einstellungen auch über den Netzwerkmanager in Gnome zu bearbeiten. :)

Ich bin nicht sicher, ob dies auf älteren Ubuntu-Versionen funktioniert, aber auf Ubuntu 17.10.

tftd
quelle
Wenn wir systemd-resolve --flush-cachedie ursprüngliche verknüpfte Datei ausführen, wird anscheinend die Antwort oben abgetrennt, um die ursprüngliche Funktionalität wiederherzustellen
hafizhanindito
1

EDIT MAI 6,2016

Ich habe ein Skript geschrieben, um alle Einstellungen für Systemverbindungen im /etc/Network-Manager/system-connections/Verzeichnis zu aktualisieren . Die GUI, mit der Sie einzelne Verbindungen bearbeiten, bearbeitet eine bestimmte Datei in diesem Verzeichnis. Das Skript aktualisiert alle Dateien - es sucht nur nach denen, die keine DNS mit grep gesetzt haben und setzt sie mit awk.

Da für den Zugriff auf diese Dateien ein sudoZugriff erforderlich ist , führen Sie dieses Skript mit dem folgenden sudoBefehl aus: - Starten Sie den Netzwerkmanager neu

#!/bin/bash
# Author: Serg Kolo
# Date: May 6, 2015
# Description: this script checks all settings for connections in 
# /etc/NetworkManager/system-connections/ , and if there's no custom
# dns set , this script sets it;
# NOTE: run sudo service network-manager restart after running this script

set -x

for file in /etc/NetworkManager/system-connections/* ; do
        grep 'dns=208.67.220.220;' "$file"  || ( awk '{print;if ($1=="[ipv4]"){getline; print "method=auto\ndns=208.67.220.
220;\nignore-auto-dns=true"}}' "$file" > .tmpfile && ( cat .tmpfile > "$file") )
done

Skript in Aktion:

Bildbeschreibung hier eingeben

ORIGINAL POST Einige Benutzer hier wiesen darauf hin, dass DNS irgendwie von gesteuert wird dnsmasq. Das stimmt in der Tat. Ich habe eine etwas kleinere Problem konfrontiert, wo , egal wie ich mich verändert headoder bodyin /etc/resolvconf/resolv.conf.d, könnte mein Computer nicht tatsächlich Zugriff von Domain - Namen interniert - nur mit IP - Adressen arbeiten.

Ich habe die /etc/NetworkManager/NetworkManager.confDatei bearbeitet . Ursprünglich hieß es dns=dnsmasqaber habe ich es zu: dns=208.67.222.222. Obwohl auf diese Weise nm-tool208.67.222.222 nicht erwähnt wird, konnte ich immer noch Domänennamen verwenden, nicht nur IP-Adressen.

So sieht meine NetworkManager.confDatei jetzt aus:

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
dns=208.67.222.222

[ifupdown]
managed=false

HINWEIS: Weitere Details zu meinem Problem und dieser Lösung finden Sie in meinem Beitrag auf askubuntu.com .

UPDATE # 1

Nachdem ich heute von der Universität nach Hause zurückgekehrt war, stellte ich fest, dass ich keine Verbindung zu meinem Heim-WLAN herstellen konnte. Ich habe ein wenig nachgelesen man NetworkManager.confund es stellte sich heraus, dass dns=in [main]eigentlich eine Zeile für Plug-Ins ist, also dns=dnsmasqfügt line anscheinend tatsächlich das dnsmasq- Plug- In zum NetworkManager hinzu.

Meine Lösung funktionierte also immer noch nicht so, wie ich es erwartet hatte. Hier ist ein Auszug aus der Manpage:

dns=plugin1,plugin2, ... List DNS plugin names separated by ','. 

DNS-Plug-ins werden verwendet, um Nameserver-Funktionen für die lokale Zwischenspeicherung bereitzustellen (wodurch DNS-Abfragen beschleunigt werden) und DNS-Daten an Anwendungen zu senden, die sie verwenden.

Durch die Einstellung habe dns=208.67.222.222ich NetworkManager möglicherweise daran gehindert, dieses Plugin zu verwenden, das ansonsten den lokalen DNS-Server verwendet (was anscheinend nicht funktioniert).

Sergiy Kolodyazhnyy
quelle
1

Es gibt zwei Methoden

Methode 1

Der zu verwendende DNS-Server kann geändert werden, indem die headDatei unter aktualisiert wirdresolv.conf.d

$ echo 'nameserver 1.1.1.1' | sudo tee /etc/resolvconf/resolv.conf.d/base

und dann rennen

$ sudo resolvconf -u

Das Obige generiert eine generische resolv.confDatei im /etcVerzeichnis. Alle Ihre Auflösungsanfragen werden an den oben genannten Nameserver gesendet. Gelöst

Dies hat jedoch Auswirkungen. Bei resolvconfder direkten Abfrage 1.1.1.1von Adressauflösungen entfällt die Caching-Fähigkeit von dnsmasq. Jede Anfrage geht an1.1.1.1

Methode 2

Wenn dies nicht der Fall sein soll und Sie dnsmasq für DNS-Auflösungen verwenden, lesen Sie diese Antwort. Die Antwort wird hier einfach beschrieben.

Fügen Sie den folgenden Inhalt in die /etc/dnsmasq.confDatei ein.

server = 1.1.1.1

Starten Sie dann den dnsmasq-Dienst neu

$ sudo systemctl restart dnsmasq.service

Die Dinge werden gut funktionieren. Gelöst

Pragathees
quelle
0

Der einfache Weg, DNS zu ändern:

$ sudo nano /etc/network/interfaces

Wenn Probleme auftauchen, installieren Sie nano:

$ sudo apt-get install nano -y

dann ..

  1. finde das: dns-nameservers
  2. Wenn Sie es nicht finden, geben Sie es einfach dort ein
  3. Mir hat das gefallen: dns-nameservers 199.85.126.10 199.85.127.10

Ich hoffe, das ist der beste Weg, ich habe es übrigens auf einem VPS so gemacht.

Saif Salim
quelle
0

auf root:

  1. Kommentar dns=dnsmasqzu/etc/NetworkManager/NetworkManager.conf
  2. supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;am Ende von hinzufügen/etc/dhcp/dhclient.conf
  3. sudo service network-manager restart

Folgendes nimmt die oben gezeigten Änderungen vor:

$ sudo sed -i 's/dns\x3Ddnsmasq/\x23dns\x3Ddnsmasq/' \
   /etc/NetworkManager/NetworkManager.conf

$ echo 'supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;' | \
   sudo tee --append /etc/dhcp/dhclient.conf

$ sudo service network-manager restart

Warten Sie 7/10 Sekunden, bis der Neustart abgeschlossen ist. Überprüfen Sie Ihre Konfiguration mit "nslookup nist.gov". Funktioniert gut auf Ubuntu LTS 14.04.

Sebastien Willemijns
quelle
0

NB: Wie bei den meisten Antworten wird hier die Verwendung von NetworkManager vorausgesetzt. Doch im Gegensatz zu den meisten anderen Antworten, ist es nicht die Verwendung von übernehmen resolvconf, dhclientoder irgendetwas anderes - passen Sie auf , können sie übernehmen, wenn auch (siehe Update).

In Anbetracht der Anzahl der Ansichten dieser Frage ist es ziemlich unglaublich , dass diese 8 Zeichen Lösung wurde noch nicht bekannt gegeben worden: nach man NetworkManager.conf,

dns: […] none: NetworkManager ändert die resolv.conf nicht. Dies impliziert, dass der RC-Manager nicht verwaltet wird

Deshalb addieren

dns=none

im [main]Abschnitt /etc/NetworkManager/NetworkManager.confdann Network neu starten und es wird nicht ändern /etc/resolv.confmehr.

Beachten Sie, dass die Einstellung rc-manager=unmanagedgleichbedeutend mit sein dns=nonesollte und dass die Einstellung rc-manager=symlinkzusammen mit der /etc/resolv.confsymbolischen Verknüpfung eine bessere Idee sein kann (siehe oben genannte Hilfeseite).

Update:

Nachdem NetworkManager das Überschreiben gestoppt hatte /etc/resolv.conf, stellte ich fest, dass beim Booten dhcpcdbereits /etc/resolv.confeine nutzlose leere Datei vorhanden war. Die Manpage von hat dhcpcd.confgeholfen, es genügt hinzuzufügen

nohook resolv.conf

in deinem dhcpcd.conf(meins ist in /etc/dhcpcd.conf).

Skippy le Grand Gourou
quelle
0

Auf meinem Linux-Centos7-Server konnte ich diese Option am besten ändern, indem ich sie verwendete

nmtui

Befehl, der hier in keiner Antwort vorgeschlagen wird. Sie können Nameserver in diesem Tool bearbeiten. Wenn Sie die Optionen des Netzwerkmanagers von diesem Dienstprogramm aus ändern, werden sie /etc/resolv.confnach dem Neustart automatisch angewendet . Hier finden Sie weitere Informationen .

Mojtaba Rezaeian
quelle