Vraag Hoe wis ik de DNS-cache?


Ik heb net het DNS-record bijgewerkt (ns1, ns2, ns3.myhostingcompany.com) voor een site die ik heb gehost, maar ik krijg nog steeds de parkeerlocatie voor de registrar van het domein.

Ik zou willen zien of het probleem de DNS-records in de cache van Ubuntu is. Is er een manier om de DNS-cache van Ubuntu te wissen? (als zoiets bestaat?)


153
2017-08-13 21:23


oorsprong


Controleer ook /etc/hosts. Ik ben er net zeker van dat het oude IP-adres van mijn domein in de cache is opgeslagen, maar alleen strace ping example.com onthulde dat ik vergat het te verwijderen /etc/hosts record dat ik een tijd geleden heb toegevoegd vanwege het gebrek aan geduld voor DNS-propagatie. - ulidtko
veel van deze antwoorden suggereren dat caching standaard is uitgeschakeld, maar ze verwijzen ook naar oudere versies. Het lijkt zeker standaard aan te staan ​​in mijn machine (18.04) en verschillende antwoorden hieronder laten je zien hoe je het kunt spoelen, gewoon naar beneden scrollen - Madivad


antwoorden:


Voor 18.04 en hoger

Kijk naar Het antwoord van Mike Shultz.

Voor 11.10 en lager

Ubuntu slaat standaard geen dns-records in de cache op, tenzij je een dns-cache hebt geïnstalleerd, is er niets dat je kunt wissen.

DNS-records worden waarschijnlijk in de cache opgeslagen door de DNS-servers van uw provider, dus als u wilt controleren of de DNS-wijzigingen die u hebt aangebracht, succesvol waren, kunt u een DNS-server ondervragen bij uw domeinhostingservice met dig:

dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Als u wilt dat Ubuntu gaat cachen dns, raad ik aan om te installeren pdnsd samen met resolvconf. nscd is buggy en niet aan te raden.


52
2017-08-14 00:13



Om het even welke verwijzingen waarom nscd met fouten is? Is het vandaag nog steeds buggy (2012-10)? - jjmontes
Kun je je antwoord bijwerken - ATM het klinkt als Ubuntu-versies 11.10+ cache DNS-records. - Martin Konecny


12.04

Ubuntu 12.04 gebruikt dnsmasq welke is ingebouwd network-manager, maar het niet cache dns dus er is geen noodzaak om het door te spoelen. Hier is een voorbeeldregel van mijn syslog om dat punt te bewijzen:

dnsmasq[2980]: started, version 2.59 cache disabled

Er is ook geen configuratie van dnsmasq. Als u met stock-instellingen werkt, zal cns dns niet in cache worden geplaatst, want daarvoor moet u het expliciet instellen als dit Ubuntu-artikel beschrijft.

Als u uw instellingen wilt vernieuwen, kunt u deze uitschakelen en vervolgens netwerken inschakelen of uitvoeren

sudo service network-manager restart

Dit wordt opnieuw gestart dnsmasq omdat het is ingebouwd in network-manager; controleer je syslog voor het bewijs hiervoor.

Als u een bekabelde verbinding gebruikt met dhcp network manager neemt de instellingen rechtstreeks van uw router en uw verbinding wordt automatisch tot stand gebracht wanneer u zich aanmeldt bij Ubuntu. U kunt controleren of de instellingen correct zijn in uw router als u deze via de webinterface kunt openen en misschien indien nodig opnieuw kunt opstarten.  Als het een algemeen probleem met dns is, kunt u Google dns gebruiken in plaats van uw isp dns, en meer informatie hierover is hier gedetailleerd.


69
2017-09-14 20:39



sudo service network-manager restart heeft het voor mij gedaan met Debian - Pierre de LESPINAY


Merk op dat Ubuntu systemd-resolve gebruikt vanaf 17.04 en later, dus dit antwoord is niet meer van toepassing op recente Ubuntu-versies. Zien "flush DNS cache in Ubuntu 17.04 en hoger (18.04)"

Standaard staat DNS niet in de cache in Ubuntu <17.04 (maar het kan in het cachegeheugen in het netwerk of in de applicatie worden opgeslagen)

Om op de een of andere manier te bevestigen of dnsmasq is cachen, rennen ps ax | grep dnsmasq en bekijk de lopende opdracht. Hier is een overzicht van mijn standaard 13.10-machine:

/ usr / sbin / dnsmasq \
  --no-resolv \
  - keep-in-voorgrond \
  --no-hosts \
  - binding-interfaces \
  --pid-file = / var / run / NetworkManager / dnsmasq.pid \
  --listen-adres = 127.0.1.1 \
  --conf-file = / var / run / NetworkManager / dnsmasq.conf \
   --cache-size = 0 \
  --proxy-dnssec \
  --enable-dbus = org.freedesktop.NetworkManager.dnsmasq \
  --conf-dir = / etc / NetworkManager / dnsmasq.d

/etc/NetworkManager/dnsmasq.d is standaard leeg. Er komen dus geen opheffingen binnen en alleen om te controleren --cache-size=0betekent wat we denken dat het betekent (in plaats van een onbeperkt cache), man dnsmasq shows:

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

Dus terwijl dnsmasq  kan cache DNS, het caching niet uit de doos. U kunt uw machine en verschillende configuratiemappen raadplegen om te controleren of u zich op dezelfde pagina bevindt.

Als u cacheproblemen ziet, gebeurt dit waarschijnlijk op een van de volgende plaatsen:

  • Stroomopwaarts van uw computer. Sommige routers cachen. Veel bedrijfsnetwerken cachen DNS. Veel ISP-run DNS-servers en zullen hun eigen caches gebruiken. De enige manier om te garanderen tegen een netwerkcache is om een ​​cache te gebruiken die u handmatig kunt vernieuwen. Dit is waarom ik OpenDNS leuk vind.
  • In de clienttoepassing (met name browsers). Applicaties kunnen allerlei eigen caching doen waar Ubuntu geen effect op heeft. Hoe Firefox DNS archiveert. Hoe de Chrome-cache van Chrome te wissen. Andere browsers (en applicaties) kunnen hun eigen mechanismen hebben.
  • Ik schraap het vat hier, maar misschien heb je een niet-standaard DNS-server in Ubuntu geïnstalleerd in plaats van caching in te schakelen in dnsmasq. Er zijn veel: nscd, DJBDNS dnscache (ook bekend als TinyDNS), pdns, pdnsd, Bind9 (en zijn varianten), en meer kan ik het zelfs niet herinneren. Deze zullen waarschijnlijk wordt aangetoond in /etc/resolv.conf (met config in / etc / resolvconf / `om dat bestand automatisch te genereren). Het volgende toont een lokaal onderschepte DNS-zoekopdracht:

    $ 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
    

    Als je 8.8.8.8 niet raakt (of wat je ook van je DNS-server verwacht), controleer dan in plaats daarvan wat je raakt. In mijn geval kan ik zien dat dit rechtvaardig is dnsmasq opgezet om DNS-query's terug te spiegelen voor LXC, maar in jouw geval doet het misschien slechte cachey-dingen.

    Als u de vermelde caches hebt gedaan, varieert het proces voor het wissen van elke:

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

Op een enigszins gerelateerde opmerking, zie dit om caching in te schakelen dnsmasq.


59
2018-03-17 10:40



Mijn uitvoer van ps aux | grep is hetzelfde als die van u, maar iets IS zeker caching van DNS's op mijn machine. Als het geen dnsmasq is, is het iets anders. Bewijs: ik heb een subdomein gemaakt op mijn server, maar ik kon het niet pingen, host onbereikbaar. Ik heb op downforeveryoneorjustme.com gekeken en deze stond op, dus het probleem met de propagatie is weggegooid. Niet mijn router, noch mijn ISP, omdat ik de 8.8.8.8 van Google gebruik. Toen startte ik de computer opnieuw op (en NIET de router) en kon ik het domein bereiken. Ik had al een dozijn keer geprobeerd om opnieuw te rebooten zonder geluk. Probeer eerst nadat de host opnieuw is opgestart. - matteo
En dit was trouwens niet de eerste keer dat ik hetzelfde meemaakte. Maanden geleden gebeurde hetzelfde en de enige manier om het domein te bereiken was het herstarten van de computer, maar toen had ik een oudere Ubuntu-versie. - matteo
@matteo De browser? - Oli♦
nee, zoals ik al zei heb ik getest met ping, niet (alleen) de browser (s). - matteo
@matteo Ik heb er meer aan toegevoegd, maar ik heb geen ideeën meer. Er zijn gewoon niet zoveel meer plaatsen, iemand kon cache DNS :) - Oli♦


Voor 12.04:

Ubuntu 12.04 cache DNS met behulp van dnsmasq (zie man dnsmasq). Gebruik het volgende om de cache leeg te maken:

sudo kill -HUP $(pgrep dnsmasq)

40
2017-07-21 21:32



Dank je! U bent de eerste die ik iets heb zien noemen over de standaard caching van 12.04! - Tarka
12.04 cns dns niet standaard in cache - controleer je syslog na opnieuw opstarten van network-manager; het zal een invoer hebben die laat zien dnsmasq begint met cache-uitgeschakeld.
Ik weet niet of de cache standaard is ingeschakeld, maar dit antwoord werkte voor mij. - jeyk
Waarom niet gewoon sudo killall -HUP dnsmasq? - James Haigh
gebruik pkill in plaats van kill en pgrep - Robert Siemer


sudo /etc/init.d/nscd restart

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

Ook als een opmerking kunt u controleren en zien of uw DNS-wijzigingen zijn gepropageerd met behulp van graven en kijken tegen iemand anders anders dan uw standaard DNS-servers. In dit geval google DNS.

dig @8.8.8.8 example.com


16
2017-08-13 21:25



Het is opmerkelijk dat nscd niet standaard is geïnstalleerd. - Scaine


Ubuntu 17.04 en hoger (18.04)

Vanaf Ubuntu 17.04 en later wordt systemd-resolve gebruikt voor DNS. Je kunt systemd's caches als volgt doorspoelen:

sudo systemd-resolve --flush-caches

12
2018-06-27 04:09



OMG, wil je met me trouwen? Mijn probleem opgelost met 18.04 too \ o / - NiKo
Dit werkte niet voor mij op 16.04 LTS - maar het was nuttig om nog een andere manier te zien om cache te hebben: sudo systemd-resolve --statistics - Phil


Persoonlijk zou ik dat doen gebruik OpenDNS en gebruik hun Cache Check-functie om een ​​vernieuwing te forceren om er zeker van te zijn dat de wijzigingen werken, maar dat kan niet garantie ze worden binnen 48 uur vernieuwd voor uw gebruikers.

DNS is een langzaam beest. Geduld houdt je gezond.


11
2017-08-13 21:26



+1 Ik gebruik OpenDNS en ook clear cache is erg handig. - Mark Davidson
Ik ben achterdochtig voor OpenDNS. Ik was er aanvankelijk blij mee, maar toen begon ik argwaan te krijgen; hoewel ik denk dat als het een keuze is tussen ISP en OpenDNS, ik beter af ben met OpenDNS, toch? - Jono
Ik zou zeggen dat OpenDNS het minste kwaad is. Ze willen graag inkomsten genereren met uw verkeer, maar alleen op slechte domeinhits. - Oli♦


Als u nscd gebruikt:

sudo /etc/init.d/nscd restart

Het is de moeite waard te vermelden dat het misschien niet het OS is dat het in de cache opslaat. Iedereen vindt het leuk om DNS te cachen ... Enkele tests:

Controleer om te zien of dit het nieuwe of oude IP is. De meeste browsers cachen DNS ook, dus als u Chromium niet opnieuw heeft opgestart of wat u misschien niet het nieuwste ziet.

ping yourdomain.com

Schakel uw lokale nameserver in het /etc/resolv.conf naar een andere provider, google of niveau, voorbeelden:

nameserver 8.8.8.8
nameserver 4.2.2.2

En dan opnieuw pingen.

Controleer om er zeker van te zijn dat uw router DNS in geen enkele vorm in de cache opslaat. (Varieert per router / firmware / etc)

Eindelijk, geduld. DNS kan wat tijd kosten om door het internet te verspreiden.


7
2017-08-13 21:33



Als u NetworkManager en DHCP gebruikt /etc/resolve.conf wordt doorgespoeld wanneer de DHCP-lease verloopt, dus u moet een statisch IP-adres instellen in NetworkManager om dit voor langere tijd te laten werken. - LassePoulsen
+1 Ik wist niet dat Firefox DNS in de cache opsloeg, dit hielp enorm. - wavemode
+1 voor het schakelen tussen lokale nameserver en google - Bibek Sharma


Alle bovenstaande antwoorden vergaten een belangrijke zaak in de naamresolutie: in het algemeen zijn de DNS-servers die u de naamomzetting aanvraagt ​​niet degene die de records zelf vasthoudt (de gezaghebbende server). Omdat elk DNS-record wordt geleverd met een Time To Live-waarde die elke DNS-server in de resolutieketen verplicht tot caching gedurende het aantal seconden dat door deze waarde wordt genoemd. U kunt dus niet alleen de cache in uw machine opslaan, maar ZEKER dat het resultaat van de naamopzoeking ergens in de cache wordt opgeslagen op een server die u niet beheert.

De enige oplossing om onmiddellijk op de hoogte te worden gebracht van een naamrecordwijziging, is om een ​​TTL-waarde van 0 te gebruiken bij het maken / bijwerken van de invoer in de gezaghebbende naamserver. Maar dit betekent dat voor elke naamomzetting de server wordt geraakt, meestal is dit niet toegestaan ​​door de registrars. Ze kunnen bijvoorbeeld een lijst met vooraf gedefinieerde TTL-waarden opgeven die u kunt kiezen.

Ik beheer verschillende domeinnamen en om er zeker van te zijn dat de wijziging goed wordt toegepast in de gezaghebbende naamservers, gebruik ik een tool genaamd dnstracer die het opzoekresultaat op elke server van de DNS-root kan weergeven.

Kortom, zelfs als er geen DNS-cachingoplossing is geïnstalleerd, zal er nog steeds een vertraging zijn tussen het moment dat u de DNS-records wijzigt en de wijziging op een pc wordt weergegeven. Deze vertraging is in grote mate afhankelijk van de TTL van de records en van het aantal DNS-servers tussen uw pc en de gezaghebbende naamserver.


5
2018-03-18 10:07



Natuurlijk, maar als dat het probleem was, zou het opnieuw opstarten van de computer het niet repareren. - matteo