it-swarm.dev

Jak vymažu mezipaměť DNS?

Právě jsem aktualizoval záznam DNS (ns1, ns2, ns3.myhostingcompany.com) pro web, který jsem hostil, ale stále dostávám stránku pro registraci registrátora domény.

Chtěl bych zjistit, zda je problém DNS záznamy v Ubuntu v mezipaměti. Existuje způsob, jak vymazat mezipaměť DNS serveru Ubuntu? (pokud taková věc existuje?)

208
Jono

Pro 18.04 a vyšší

Podívejte se na odpověď Mika Shultze .

Pro 11,10 a méně

Ubuntu ve výchozím nastavení neukládá do mezipaměti dns záznamy, takže pokud nemáte nainstalovanou dns mezipaměť, není co vymazat.

DNS servery pravděpodobně ukládají do mezipaměti servery DNS vašeho poskytovatele, takže pokud chcete zkontrolovat, zda provedené změny DNS byly úspěšné, můžete pomocí služby Dig provést dotaz na server DNS z vaší hostitelské služby domény:

Dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Chcete, aby Ubuntu začal ukládat do mezipaměti dns Doporučuji nainstalovat pdnsd společně s resolvconf. nscd je buggy a nedoporučuje se.

71
Li Lo

Ubuntu 17.04 a vyšší (18.04)

Od Ubuntu 17.04 a následujících se pro DNS používá systémové rozlišení. Můžete vyprázdnit cache systému systemd takto:

Sudo systemd-resolve --flush-caches
93
Mike Shultz

12.04

Ubuntu 12.04 používá dnsmasq , který je zabudován do network-manager, ale nemá mezipaměť dns, takže ji není třeba vyplachovat. Zde je ukázkový řádek z mého syslog, který tento bod dokazuje:

dnsmasq[2980]: started, version 2.59 cache disabled

Není také potřeba žádná konfigurace dnsmasq. Pokud běžíte s nastavením zásob, nebude to ukládání do mezipaměti dns, pokud jde o to, musíte to explicitně nastavit tak, jak je to článek Ubunt popisuje.

Pokud chcete obnovit nastavení, můžete deaktivovat a poté povolit vytváření sítí nebo spustit

Sudo service network-manager restart

Tím se restartuje dnsmasq, protože je integrován do network-manager; zkontrolujte, zda syslog obsahuje důkazy.

Pokud používáte drátové připojení s programem dhcp network manager převezme nastavení přímo ze směrovače a vaše připojení bude automaticky navázáno při přihlášení k Ubuntu. Pokud máte přístup prostřednictvím webového rozhraní, můžete zkontrolovat správnost nastavení ve vašem routeru a v případě potřeby jej případně restartovat. Pokud je to obecný problém s dns, můžete zkusit použít Google dns místo vašich ISP dns a další informace o tom jsou podrobně zde .

69
user76204

Všimněte si, že Ubuntu používá systémové rozlišení od 17.04 a dále, takže tato odpověď již neplatí pro nejnovější verze Ubuntu. Viz „ vyprázdnění mezipaměti DNS v Ubuntu 17.04 a vyšší (18.04)) "

Ve výchozím nastavení není DNS v mezipaměti v Ubuntu <17.04 (ale může být uloženo v mezipaměti v síti nebo aplikaci)

Chcete-li potvrdit, zda nebo ne, zda dnsmasq ukládá do mezipaměti, spusťte ps ax | grep dnsmasq a podívejte se na běžící příkaz. Zde je rozpis mého výchozího počítače 13.10:

/ usr/sbin/dnsmasq\
 --no-resolv\
 - udržování v popředí\
 - no-hosts\
 - svázat -interfaces\
 --pid-file =/var/run/NetworkManager/dnsmasq.pid\
 --listen-address = 127.0.1.1\
 --conf-file =/var/run/NetworkManager/dnsmasq.conf\
  - velikost mezipaměti = 0 \
 - proxy-dnssec\
 --enable-dbus = org.freedesktop.NetworkManager.dnsmasq\
 --conf-dir =/etc/NetworkManager/dnsmasq.d

/etc/NetworkManager/dnsmasq.d je ve výchozím nastavení prázdný. Takže tam nepřijdou žádné přepisy a jen zkontrolujeme --cache-size=0 znamená to, co si myslíme, že to znamená (místo mezipaměti neomezeno), man dnsmasq ukazuje:

-c, --cache-size=<cachesize>
  Set the size of dnsmasq's cache. The default is 150 names. 
  Setting the cache size to zero disables caching.

Takže zatímco dnsmasq can mezipaměť DNS, není ukládání do mezipaměti. Můžete zkontrolovat svůj stroj a různé konfigurační adresáře a zkontrolovat, zda jste na stejné stránce.

Pokud narazíte na problémy s mezipamětí, pravděpodobně se to stane na jednom z několika míst:

  • Upstream od počítače. Některé směrovače mezipaměť. Mnoho firemních sítí bude ukládat do mezipaměti DNS. Mnoho serverů DNS provozovaných poskytovatelem ISP bude používat vlastní mezipaměti. Jediným způsobem záruky proti síťové mezipaměti je použití mezipaměti, kterou můžete ručně aktualizovat. Proto se mi OpenDNS líbí.
  • V klientské aplikaci (zejména prohlížečích). Aplikace mohou provádět všechny své vlastní ukládání do mezipaměti, na které nemá Ubuntu žádný vliv. Jak Firefox ukládá DNS . Jak vymazat mezipaměť DNS prohlížeče Chrome . Jiné prohlížeče (a aplikace) mohou mít své vlastní mechanismy.
  • Vyškrabávám tu barel, ale možná jste v Ubuntu nainstalovali nestandardní server DNS místo toho, abyste zapnuli ukládání do mezipaměti v dnsmasq. Existuje mnoho: nscd, DJBDNS dnscache (aka TinyDNS), pdns, pdnsd, Bind9 (a jeho varianty) a další nemůžu dokonce si pamatovat. Tyto budou pravděpodobně budou doloženy v /etc/resolv.conf (s konfigurací v/etc/resolvconf/`pro autogenizaci tohoto souboru). Následující ukazuje lokálně zachycený dotaz DNS:

    $ nslookup askubuntu.com
    Server:     127.0.1.1
    Address:    127.0.1.1#53
    
    Non-authoritative answer:
    Name:   askubuntu.com
    Address: 198.252.206.24
    

    Pokud nenarazíte na 8.8.8.8 (nebo cokoli očekáváte, že váš server DNS bude), zkontrolujte místo toho, co zasáhnete. V mém případě vidím, že je to pouze dnsmasq nastaveno tak, aby zrcadlo DNS dotazy zpět pro LXC, ale ve vašem případě by to mohlo dělat špatné věci cachey.

    Pokud jste provedli z uvedených mezipamětí, postup čištění každého z nich se liší:

    Sudo /etc/init.d/nscd reload    # nscd
    Sudo /etc/init.d/named restart  # bind9
    

Na mírně související poznámce viz toto, chcete-li povolit ukládání do mezipaměti v dnsmasq .

61
Oli

Pro 12.04:

Ubuntu 12.04 provádí mezipaměť DNS pomocí dnsmasq (viz man dnsmasq). Vymazání mezipaměti použijte následující:

Sudo kill -HUP $(pgrep dnsmasq)
39
zechariah

Sudo /etc/init.d/nscd restart

http://www.ubuntugeek.com/howto-clearflush-dns-cache-in-ubuntu.html

Jako poznámku můžete také zkontrolovat a zjistit, zda se vaše změny DNS rozšířily pomocí funkce Dig a vyhledávání proti někomu jinému, než jsou výchozí servery DNS. V tomto případě google DNS.

Dig @8.8.8.8 example.com

15
Mark Davidson

Osobně bych pomocí OpenDNS a pomocí jejich funkce Kontrola mezipaměti vynutil aktualizaci, aby se ujistil, že změny fungují, ale nemůžete záruka , která se uživatelům obnoví do 48 hodin.

DNS je pomalé zvíře. Trpělivost vás udrží.

11
Oli

Pokud používáte nscd:

Sudo /etc/init.d/nscd restart

Stojí za zmínku, že to nemusí být operační systém, který to ukládá do mezipaměti. Všichni ráda cache DNS ... Některé testy:

Zkontrolujte, zda se jedná o novou nebo starou IP. Většina prohlížečů také ukládá do mezipaměti DNS, takže pokud jste Chrome nerestartovali nebo cokoli jiného, ​​možná se vám nezobrazí nejnovější.

ping yourdomain.com

Přepněte lokální jmenný server v souboru /etc/resolv.conf na jiného poskytovatele, google nebo level, příklady:

nameserver 8.8.8.8
nameserver 4.2.2.2

A pak znovu ping.

Zkontrolujte, zda směrovač neukládá do mezipaměti DNS v žádné formě. (Liší se podle routeru/firmwaru/atd.)

Nakonec trpělivost. Šíření DNS po internetu může chvíli trvat.

7
bikesandcode

Všechny výše uvedené odpovědi zapomněly na důležitou věc v rozlišení názvů: DNS servery, které obvykle požadujete, nejsou rozlišení, které drží samotné záznamy (autoritativní server). Protože každý záznam DNS přichází s hodnotou Time To Live, která bude každý server DNS v řetězci rozlišení povinen provádět ukládání do mezipaměti během množství sekund zmíněných touto hodnotou. Takže nejen že můžete ve svém počítači ukládat do mezipaměti, ale VÁSNĚ výsledek vyhledávání jména bude uložen někam na server, který neovládáte.

Jediným řešením, jak být okamžitě informován o změně názvu záznamu, je použít při vytváření/aktualizaci položky na autoritativním serveru názvů hodnotu TTL 0). To však znamená, že pro každé rozlišení jmen server bude zasažen, obvykle to registrátoři nepovolují. Mohou například poskytnout seznam předdefinovaných hodnot TTL, ve kterých si můžete vybrat).

Spravuji různá doménová jména a abych se ujistil, že změna je dobře aplikována na autoritativní jmenné servery, používám nástroj s názvem dnstracer, který může zobrazit výsledky vyhledávání na každém serveru z kořenového adresáře DNS.

Závěrem lze říci, že i když nebude existovat žádné řešení pro ukládání do mezipaměti DNS, bude stále existovat prodleva mezi okamžikem, kdy změníte záznamy DNS a změna je vidět na PC. Toto zpoždění do značné míry závisí na TTL) záznamů a na počtu serverů DNS mezi vámi PC a autoritativním serverem názvů.

5
Benoit

U Ubuntu 14.04 doporučuji tento příkaz:

Sudo service dns-clean
2
alphayax

Na Ubuntu 16.04 se mi nepodařilo vyčistit mezipaměť, pokud:

Sudo service dnsmasq restart
1
Volomike

Použil jsem následující příkaz k vypláchnutí mezipaměti dns v mém 12,10 ubuntu krabici a fungovalo to skvěle.

Sudo kill -HUP $(pgrep dnsmasq)

Dalším užitečným signálem je SIGUSR1, který vypíše malou statistiku do syslogu nebo jako je to poznámka od man dnsmasq:

V režimu - no-daemon nebo pokud je povoleno plné protokolování (-q), dojde k úplnému výpisu obsahu mezipaměti.

1
j0inty

Také jsem našel rozpory, ale toto: https://superuser.com/a/521562 woks pro mě (Ubuntu 13.10 s nejnovějšími aktualizacemi, žádné nainstalované speciální síťové balíčky).
Zkrátka, použijte to
Sudo /etc/init.d/dns-clean

0
Nitz

Doporučuji openDNS speciálně na vzdálených serverech Ubuntu, zmírňuje to velké bolesti ...

Jak to udělat? Studna...

cd /etc/dhcp
Sudo nano dhclient.conf

vložte tento PŘED řádek "maska ​​podsítě žádosti ..."

supersede domain-name-servers 208.67.222.222,208.67.220.220;

tím restartujete rozhraní tak rychle, že byste neměli ztratit ani připojení SSH

Sudo ifdown eth0 && Sudo ifup eth0

zkontrolujte, zda jsou vaše zcela nové openDNS správně nainstalovány

cat /etc/resolv.conf
0
D.Snap