GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavím svůj DNS, když se resolv.conf přepisuje?

Věřím, že pokud chcete přepsat jmenný server DNS, stačí přidat řádek podobný tomuto do vašeho base soubor pod resolv.conf.d .

Příklad

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

Poté vložte svůj seznam jmenných serverů takto:

nameserver 8.8.8.8
nameserver 8.8.4.4

Nakonec aktualizujte resolvconf :

$ sudo resolvconf -u

Pokud se podíváte na manuálovou stránku resolvconf popisuje různé soubory pod /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

I když je v horní části head varování soubor:

$ 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

toto varování je zde proto, že když jsou tyto soubory vytvořeny, varování se nakonec propracuje do výsledného resolv.conf soubor, k jehož vytvoření budou tyto soubory použity. Takže jste mohli stejně snadno přidat nameserver řádky, které jsou popsány výše pro base do souboru head soubor také.

Odkazy

  • Přetrvávat názvový server DNS pro ubuntu 14.04
  • Jak přidám server DNS přes resolv.conf?

Tato otázka mě také zajímá a vyzkoušel jsem navrhované řešení @sim.

Abych to otestoval, vložil jsem

nameserver 8.8.8.8

v /etc/resolvconf/resolv.conf.d/base a

nameserver 8.8.4.4

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

Poté jsem restartoval síť pomocí

sudo service network-manager restart

Výsledkem je /etc/resolv.conf vypadá jako

# 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

a nm-tool uvádí, že dnsserver jsou

DNS:             208.67.222.222
DNS:             208.67.220.220

což jsou ty, které poskytuje můj router. Na druhou stranu vykopání adresy to říká

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

Pokud mám pravdu, z toho všeho usuzuji, že

  1. resolvonf čte pouze část "hlava":část "základna" je nějakým způsobem řízena dnsmasq
  2. dnsserver je ve skutečnosti nucen 8.8.4.4 bez ohledu na server poskytovaný dhcp, ALE ztratíte mezipaměť poskytovanou dnsmasq, protože požadavek je vždy odeslán na 8.8.4.4
  3. dnsmasq stále používá POUZE server dnsserver poskytovaný dhcp.

Celkově vzato to funguje, ale nemyslím si, že je to požadovaný výsledek. Myslím, že bližší řešení je následující. Upravit

sudo vim /etc/dhcp/dhclient.conf

pak přidejte

supersede domain-name-servers 8.8.8.8;

Výsledek je následující:resolv.conf obsahuje pouze 127.0.0.1, což znamená, že je vyvolána mezipaměť dnsmasq a nástroj nm říká

DNS:             8.8.8.8

což znamená, že pokud hledané jméno není v mezipaměti, je požadováno v 8.8.8.8 a ne na serveru poskytovaném dhcp.

Další (možná lepší) možností je použít "prepend" místo "supersede":tímto způsobem, pokud jméno není vyřešeno do 8.8.8.8, požadavek padne zpět na druhý server. Ve skutečnosti, nm-tool říká

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220

Zjistil jsem, že můžete změnit jmenné servery, které dnsmasq používá přidáním následujících řádků do /etc/dnsmasq.conf :

server=8.8.8.8
server=8.8.4.4

Neměl jsem /etc/dnsmasq.conf soubor, protože je nainstalován pomocí balíčku dnsmasq, ale Ubuntu přichází pouze s dnsmasq-base. Spustil jsem sudo apt-get install dnsmasq , poté upraveno /etc/dnsmasq.conf a poté sudo service dnsmasq restart a sudo service network-manager restart .

Spustil jsem sudo tail -n 200 /var/log/syslog zkontrolovat můj syslog a ověřit, že dnsmasq používal jmenné servery, které jsem zadal:

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

Linux
  1. Jak používat typ souboru ve Vimu?

  2. Jak upravím resolv.conf?

  3. Jak použít Systemd k restartování služby, když je vypnutá?

  1. Jak wget soubor se správným názvem při přesměrování?

  2. Jak nastavit soubor jako NENÍ spustitelný?

  3. Jak nastavit konkrétní oprávnění k souboru při přesměrování výstupu?

  1. Jak zjistit, zda je soubor stahován pomocí Wget?

  2. Jak nastavit parametry, když Pipe Bash Script to Bash?

  3. Jak nastavím šifrovaný odkládací soubor v Linuxu?