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
- resolvonf čte pouze část "hlava":část "základna" je nějakým způsobem řízena dnsmasq
- 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
- 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