Vraag Hoe voeg ik regels toe in resolv.conf die bij het opnieuw opstarten niet verloren gaan?


Ik ben eindelijk gemigreerd naar 12.04 vanaf 7.10. Ik heb nog een laatste deel te voltooien, maar ik ben stumped. Ik gebruik Puppet op elke server en in het verleden heb ik een nameserveradres en een zoekdomeinnaam voor de puppetmaster opgenomen in resolv.conf.

search puppetmaster.com
nameserver 192.168.1.XXX

In 12.04 wordt resolv.conf overschreven bij het opnieuw opstarten. Ik kan hiervoor geen statische IP gebruiken, dus het gebruik van de / etc / network / interfaces om me te helpen is een nulpunt.

# 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.0.1

Is er een manier om resolvconf te laten werken, hetzij in het hoofd, de staart of de basis? Als dat het geval is, zijn er voorbeelden die ik kan gebruiken om te tweaken op mijn server.

Alle hulp wordt zeer op prijs gesteld.


148
2018-06-28 13:54


oorsprong




antwoorden:


Het is waarschijnlijk beter om uw DNS-server 'Puppet' naar het juiste adres te laten oplossen en uw DHCP-server het DNS-naamserveradres en de zoeklijst of anders (als u statische IP-adressen heeft) uit te delen om zoiets te hebben het volgende in / etc / network / interfaces.

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

Maar als je het wel wilt doen via de resolvconf configuratiebestanden die je wilt bewerken /etc/resolvconf/resolv.conf.d/base. In dat bestand plaats je je informatie in zoals je zou doen resolv.conf.

nameserver 192.168.1.XXX

Vertel vervolgens resolvconf om te regenereren resolv.conf.

sudo resolvconf -u

120
2018-06-28 15:35



Hoewel dit antwoord stemmen heeft en het eerste deel min of meer correct is, is het tweede deel van het antwoord onjuist. (1) Do niet zet een "zoek" regel in /etc/resolvconf/resolv.conf.d/head. Als u daar een "zoek" -regel plaatst, wordt deze regel genegeerd als resolvconf een "zoekregel" bevat in het dynamische deel van het resolv.conf-bestand. De glibc resolver negeert alle behalve de laatste regel "zoeken" of "domein". Zie resolv.conf (5). (2) Als de resolvconf-configuratie is gewijzigd, moet u de resolvconf-taak niet opnieuw starten, maar voert u alleen een update uit, "resolvconf -u". - jdthood
Ik heb de regel verwijderd. De andere optie zou zijn om de staart te gebruiken in plaats van het hoofd. - tgm4883
base, head of tail (vanaf 12.04) worden allemaal herschreven net als resolv.conf, dus ik kan bevestigen dat @jdthood commentaar waar is. Dus, volledig antwoord zou zeggen - bewerk geen van resolv.conf-bestanden, en voer gewoon uit: sudo /etc/init.d/networking restart In feite zal dat de interface-wijzigingen schrijven naar resolv.conf. - tishma
@tishma: Hallo. Allereerst om misverstanden te voorkomen: niets schrijft naar de base-, head- of tail-bestanden. Niets schrijft naar bestanden in /etc/resolvconf/resolv.conf.d/ tijdens runtime. Deze bestanden worden gelezen door resolvconf, die hun inhoud verzamelt in het bestand dat het schrijft --- /run/resolvconf/resolv.conf --- waarnaar de symlink /etc/resolv.conf verwijst. Ten tweede, wat te doen nadat dns- * opties in / etc / network / interfaces zijn gewijzigd. Do niet voer "/etc/init.d/networking restart" uit; dat is nu verouderd. In plaats daarvan ifdown de interface in kwestie en ifup het opnieuw. - jdthood
In 14.04 deed dit antwoord niets voor mij. - Jay Sullivan


Ik denk dat het antwoord je is /etc/dhcp/dhclient.conf, d.w.z. verzoek niet dns-nameservers van jouw dhcp cliënt.

Update dan uw /etc/network/interfaces

auto eth0
iface eth0 inet dhcp
dns-search google.com
dns-nameservers dnsserverip

Dan is jouw resolv.conf wordt automatisch geconfigureerd zoals u dat wilt.

Toevoegen aan de dns-search en voer dan een uit /etc/init.d/networking restart  (hoewel dit script verouderd is, werkt het nog steeds).


32
2017-11-26 01:58



dhclient regeert over elke resolvconf-instelling, dus dit zou het beste antwoord moeten zijn. - Alex R
/etc/init.d/networking restart werkte niet op mijn machine, maar sudo ifdown -a en dan sudo ifup -a deed. (Ook kostte het me een beetje om te beseffen dat ik moest vervangen dnsserverip met zoiets 8.8.8.8; Ik voel me een beetje dom.) - Jason Gross
proberen systemctl restart networking.service - Pavel Sayekat


Dit wordt waarschijnlijk veroorzaakt door de DHCP-configuratie bij de eerste installatie van Ubuntu. Probeer dit proces in 3 stappen om dit probleem met automatische configuratie aan te pakken.

Eerste

Bewerk uw interfaceconfiguratie, die zich bevindt in: /etc/network/interfaces

Voeg deze regel hieronder toe iface lo inet loopback:

dns-nameservers yourdns youraltdns

Als voorbeeld voor Google DNS, kunt u dit gebruiken:

dns-nameservers 8.8.8.8 8.8.4.4

Tweede

Bewerk uw DHCP-configuratiebestand op:

/etc/dhcp/dhclient.conf

Markeer de syntaxis als een opmerking met # op elke regel of verwijder eenvoudig elke verzoeknaam-server. In 16.04 hoeft u hier misschien geen wijzigingen aan te brengen.

Derde

Start uw netwerk opnieuw met behulp van deze opdracht:

/etc/init.d/networking restart

In 16.04:

sudo ifdown -a
sudo ifup -a

18
2018-06-20 01:50



/etc/init.d/networking restart werkte niet op mijn machine, maar sudo ifdown -a en dan sudo ifup -a deed. - Jason Gross
Dit is eenvoudig en het werkt, ook al is het een beetje hacky! Probleem met dingen als ubuntu heeft 1000 manieren om één ding te doen! - Willa O Ng'wana
En dan kun je dat controleren /etc/resolv.conf bevat die 2 nieuwe DNS-ingangen op de eerste bruikbare regels. - ROMANIA_engineer


Alsjeblieft kijk naar resolvconfmanpagina. U kunt opname van bepaalde DNS-instellingen afdwingen door b.v. /etc/resolvconf/resolv.conf.d/base:

  /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.

Er zijn andere speciale bestanden (kop en staart), deze kunnen je helpen bereiken wat je wilt.


7
2017-09-04 14:26



U kunt regels toevoegen aan /etc/resolvconf/resolv.conf.d/base, maar omdat elke nameserver toegankelijk is via een interface en alleen toegankelijk is als die interface is opgestart, is het het beste om de nameserverinformatie aan die interface te koppelen. Als de interface is geconfigureerd met ifup, betekent dit: zet de informatie op de regels "dns-search" en "dns-nameservers" in de stanzas / etc / network / interfaces. Als de interface via DHCP wordt geconfigureerd, betekent dit: configureer de DHCP-server om zoeknamen en naamserveradressen aan clients te leveren. Enz. Gebruik het "basis" -bestand alleen als een tijdelijke hack of als een laatste redmiddel. - jdthood


Voor mij waren de bovenstaande antwoorden ontoereikend om de volgende redenen:

  • Ik gebruik het niet resolvconf, gewoon simpel /etc/resolv.conf.
  • Gebruik makend van chattr +i om te vergrendelen resolv.conf lijkt te hacky. Ik heb Puppet nodig om wijzigingen aan te brengen wanneer dat nodig is.
  • AFAIK, bewerken /etc/network/interfaces voorkomt niet resolv.conf wordt overschreven; het specificeert eenvoudig de naamservers die moeten worden geschreven. Voor mij was het specificeren van de name-servers niet waar. Ik probeer in te stellen options timeout:1 en options attempts:1 in mijn resolv.conf het dossier.

De beste oplossing Ik vond dat het standaardgedrag van overschreef dhclient met behulp van de gedocumenteerde haken.

Maak een nieuw bestand op /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate met de volgende inhoud:

#!/bin/sh
make_resolv_conf() {
    :
}

Maak vervolgens het bestand uitvoerbaar:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Nu wanneer dhclient wordt uitgevoerd - bij het opnieuw opstarten of wanneer u handmatig uitvoert sudo ifdown -a ; sudo ifup -a - het laadt dit script nodnsupdate. Dit script vervangt een interne functie genaamd make_resolv_conf() dat zou normaal gesproken overschrijven resolv.conf en in plaats daarvan doet niets.

Dit werkte voor mij op Ubuntu 12.04.


4
2018-03-05 22:12



Werkt prima op Debian 8. Elegante oplossing! - Artur Bodera
alleen voor de volledigheid: manpage dhclient-script bevat de informatie over het DHCP-clientconfiguratiescript vermeld en het bovenstaande antwoord. - hecke
Dit werkte niet op 16.04, ik voegde ook dingen toe aan /etc/network/interfaces.d zonder effect, voegde hier een lege overschrijving toe van make_resolv_conf, geen effect .... maar wijzigde niet / etc / dhcp / dhclient.conf - moet ik echt een statisch configuratiebestand wijzigen om dit te repareren? - silverjam


Zoals zoveel andere antwoorden aangeven, heeft dit te maken met resolvconf geïnstalleerd in uw systeem.

Dus de beste manier om iets in te houden resolv.conf die bij het opnieuw opstarten niet verloren gaat, is om het in resolvconf-configuratiebestanden op te nemen die zich in:

/etc/resolvconf/resolv.conf.d/

Daar ga je voor de head het dossier. Wat je daar ook plaatst, staat bovenaan /etc/resolv.conf

Dus alles gaat naar zoiets als dit:

# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head
# resolvconf --enable-updates
# resolvconf -u

3
2017-10-17 13:59





voeg uw nameserver toe aan bestand /etc/resolvconf/resolv.conf.d/head. Het bestand bevat een bericht dat je hebt ontvangen:

dat bestand zou er zo uit moeten zien na het toevoegen van 8.8.8.8

root@hvnatvcc: ~ # 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
nameserver 8.8.8.8

2
2017-10-23 10:43



Het toevoegen van regels aan /etc/resolvconf/resolv.conf.d/head is een slechte oplossing, nog erger dan het toevoegen van regels aan /etc/resolvconf/resolv.conf.d/base. De juiste oplossing voor interfaces die met ifup zijn geconfigureerd, is om "dns-search" en "dns-nameservers" -regels toe te voegen aan stanzas in / etc / network / interfaces. Zie ook mijn opmerkingen over de andere antwoorden. - jdthood
Het is het enige dat echt voor me werkte ... en het lijkt moeilijk in te schatten waarom geen van de "juiste" oplossingen werkt. - silverjam


Dit is misschien een rare gril in mijn machine, maar iemand anders heeft dezelfde hoekzaak.

Ik heb verschillende manieren geprobeerd om mijn ISP-naamservers zonder succes in /etc/resolv.conf te laten opnemen:

  • Ik heb ze opgenomen /etc/network/interfaces en herstartte netwerken. Ze kwamen niet opdagen /etc/resolv.conf.

  • Ik heb ze erin gestopt /etc/resolv.conf expliciet, maar natuurlijk werden ze overschreven. Ze zijn verschenen /run/resolvconf/interface/eth0.inet, maar het is nooit gelukt /etc/resolv.conf.

  • Ik heb geprobeerd resolvconf te configureren voor dynamische updates. Geen verandering.

Eindelijk las ik ergens dat als de lokale machine (127.0.0.1) verschijnt /etc/resolv.conf eventuele andere naamservers zijn niet inbegrepen.

Uit wanhoop heb ik bewerkt /run/resolvconf/interface/lo.named, verwijderde de enige regel erin (nameserver 127.0.0.1) en herstart: ifdown eth0 && ifup eth0.

/etc/resolv.conf bevatte toen mijn ISP-naamservers voor de eerste keer! ik rende service network-manager restart om te zien of het stabiel was en /etc/resolv.conf bevat nog steeds mijn ISP-naamservers. Opnieuw opgestart om zeker te zijn en het is er nog steeds maar  /run/resolvconf/interface/lo.named werd gereset naar: nameserver 127.0.0.1.

Nieuwsgierig opnieuw opstarten werkt nog steeds: /etc/resolv.conf bevat nog steeds mijn ISP-naamservers. Ik kan dit niet uitleggen (kan iemand?) Maar dit kan iemand helpen die op dezelfde plek vastzit.


2
2018-06-26 05:18



Dit wordt waarschijnlijk veroorzaakt door dnsmasq. U kunt het eenvoudig verwijderen met apt-get remove dnsmasq of update config in /etc/dnsmasq.conf. - Tombart


De andere oplossingen werkten niet voor mij op mijn Fedora 20-systeem. Mijn specifieke probleem was dat de regel "zoeken" in /etc/resolv.conf werd overschreven. Dit is wat het heeft gerepareerd. (Dit veronderstelt dat NetworkManager de regel produceert search rn.yourcompany.com  en je wilt het hebben search rn.yourcompany.com yourcompany.com intnet.yourcompany.com:

1.Gebruik de opdracht "ifconfig" om te achterhalen welke interface interessant is:

$ ifconfig
  :
  :

em2:  <this was the one which was connected>

2. Werd root en verander in de directory van de netwerkapparaten van de systeemconfiguratie:

$ sudo su -[sudo] 
password for youruser:
# cd /etc/sysconfig/networking/devices`
  1. Gebruik uw favoriete beschikbare editor om een ​​toe te voegen Domain regel met de aanvullende domeinen om te zoeken:

DOMAIN="yourcompany.com intnet.yourcompany.com"

Sla op, log uit en log weer in. NetworkManager zou nu de lijn moeten hebben \etc\resolve.conf:

search rn.yourcompany.com yourcompany.com intnet.yourcompany.com

1
2017-08-29 14:54



Niet om te regenen op je parade, maar dit is Vraag Ubuntu, en dus is Fedora van het onderwerp. - Flimm


voeg op de laatste regel toe, bijvoorbeeld:

nameserver 8.8.8.8

Open een terminal en typ

sudo chattr +i /etc/resolv.conf

de + i zorgt ervoor dat het bestand niet op een boot wordt hersteld.

Om het bovenstaande ongedaan te maken

sudo chattr -i /etc/resolv.conf

Voor meer

man chattr

0
2018-02-23 17:42





Engelse vertaling:

Mijn opgelost. "slechts 12,4"

Ik heb gemerkt dat als je de dns-nameserver toevoegt in interfaces die niet de naam resolutieserver gebruiken Dankzij de hier gevonden hulp is het probleem opgelost.

http://manpages.ubuntu.com/manpages/lucid/man8/resolvconf.8.html

Als u resolv.conf niet wilt wijzigen wanneer we dit handmatig bewerken, doet u dit in de terminal:

sudo resolvconf –disable-updates

na:

sudo resolvconf -a eth0 # or your network Interfas

vervolgens handmatig /run/resolvconf/resolv.conf bewerken

toevoeging van maximaal twee DNS-servers. bedankt Postscriptum vergeet niet om opnieuw te starten:

sudo /etc/init.d/networking restart

Originele tekst:

solo ubuntu 12.4

Mi solucion.

Hij visto que si agregas los dns-nameserver en interfaces esta no toma los server de resolucion de nombres

Gracias a la ayuda encontrada en esta pagina hij resuelto el problema.

http://manpages.ubuntu.com/manpages/lucid/man8/resolvconf.8.html

Para hacer que resolv.conf no cambie cuando la editamos manualmente hacemos esto en la terminal:

sudo resolvconf –disable-updates

despues:

sudo resolvconf -a eth0 # o tu interfas de red

luego editamos manualmente /run/resolvconf/resolv.conf

agregando un maximo de 2 DNS-servers. saludos P.D. geen olvidar reiniciar:

sudo /etc/init.d/networking restart

0
2017-09-04 14:16



Dit is heel veel niet de juiste manier om het probleem op te lossen. - jdthood
@jdthood als iemand die dit bekijkt, kun je uitleggen waarom dit niet de juiste manier is? Het lijkt me logisch, maar daar weet ik niets van. - ErikPerik