DNS önbelleğini nasıl temizlerim?

153

Barındırdığım bir site için DNS kaydını ( ns1 , ns2 , ns3.myhostingcompany.com ) yeni güncelledim, ancak alan adı kayıt sitelerini hala alabiliyorum.

Sorunun Ubuntu'nun önbelleğe alınmış DNS kayıtları olup olmadığını görmek istiyorum. Ubuntu'nun DNS önbelleğini temizlemenin bir yolu var mı? (eğer böyle bir şey varsa?)

    
sordu Jono 13.08.2010 23:23

13 cevap

52

18.04 ve üstü için

Mike Shultz 'yanıtına bakın.

11.10 ve altı için

Ubuntu, dns kayıtlarını varsayılan olarak önbelleğe almaz, böylece bir dns önbelleği yüklemediyseniz, temizlenecek bir şey yoktur.

DNS kayıtları sağlayıcınızın DNS sunucuları tarafından önbelleğe alınabilir. Bu nedenle, yaptığınız DNS değişikliklerinin başarılı olup olmadığını kontrol etmek isterseniz, etki alanı barındırma hizmetinizden bir DNS sunucusunu kazı ile sorgulayabilirsiniz:

dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Ubuntu'nun dns'i önbelleğe almaya başlamasını istiyorsanız pdnsd 'yi resolvconf ile birlikte yüklemenizi öneririz. nscd buggy ve tavsiye edilmez.

    
verilen cevap Li Lo 14.08.2010 02:13
69

12.04

Ubuntu 12.04, dnsmasq biçiminde yerleşik olan network-manager kullanıyor, ancak değil önbelleklerini boşaltın, böylece temizlemeye gerek yoktur. İşte bu noktayı kanıtlamak için syslog değerinden bir örnek satır:

dnsmasq[2980]: started, version 2.59 cache disabled

Ayrıca dnsmasq yapılandırmasına da gerek yoktur. Stok ayarlarıyla çalışıyorsanız, bunun için önbelleğe alınmayacaktır, çünkü bunu olarak açıkça ayarlamanız gerekir. Ubuntu makalesinde açıklanmaktadır.

Ayarlarınızı yenilemek isterseniz, devre dışı bırakabilir ve ardından ağ bağlantısını etkinleştirebilir veya

çalıştırabilirsiniz.
sudo service network-manager restart

Bu, dnsmasq dizininde oluşturulduğundan network-manager 'yi yeniden başlatır; Bunun kanıtı için syslog 'nizi kontrol edin.

Eğer dhcp network manager ile kablolu bağlantı kullanıyorsanız, ayarları yönlendiricinizden doğrudan alacaksınız ve Ubuntu'ya giriş yaptığınızda bağlantınız otomatik olarak kurulacaktır. Eğer web arayüzünden erişebiliyorsanız ve belki de gerekirse yeniden başlatırsanız, ayarların yönlendiricinizde doğru olup olmadığını kontrol edebilirsiniz.  Dns ile genel bir sorunsa, isp dns yerine Google dns'i kullanmayı deneyebilirsiniz ve bu konuda daha fazla bilgi burada ayrıntılı olarak .

    
verilen cevap user76204 14.09.2012 22:39
59

Ubuntu'nun 17.04 ve sonraki sürümlerde systemd çözümünü kullandığını ve bu yanıtın artık Ubuntu sürümlerine artık uygulanmadığını unutmayın. Bkz. " DNS önbelleğini Ubuntu 17.04 ve sonraki sürümlerde (18.04) temizleyin "

Varsayılan olarak, DNS Ubuntu & lt; 17.04 (ancak ağda veya uygulamada önbelleğe alınmış olabilir)

Bir yolu veya diğerini dnsmasq 'nin önbelleğe alındığını onaylamak için, ps ax | grep dnsmasq dosyasını çalıştırın ve koşu komutuna bakın. İşte benim varsayılan 13.10 makinemin bir dökümü:

/usr/sbin/dnsmasq \
  --no-resolv \
  --keep-in-foreground \
  --no-hosts \
  --bind-interfaces \
  --pid-file=/var/run/NetworkManager/dnsmasq.pid \
  --listen-address=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 , varsayılan olarak boş. Bu nedenle, herhangi bir geçersiz kılma yok ve yalnızca% co_de yüzdesini kontrol etmek için olduğunu düşündüğümüz anlamına gelir ( sınırsız önbellek yerine), --cache-size=0 şunu gösterir:

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

Dolayısıyla, man dnsmasq , DNS'yi önbelleğe alırken, kutunun önbelleğe alınması mümkün değildir. Aynı sayfada olup olmadığınızı kontrol etmek için makinenizi ve çeşitli yapılandırma dizinlerini kontrol edebilirsiniz.

Önbellek sorunlarını görüyorsanız, bunun birkaç yerden birinde gerçekleşmesi olasıdır:

  • Bilgisayarınızdan akış yukarı. Bazı yönlendiriciler önbellek. Birçok şirket ağı DNS'yi önbelleğe alır. Birçok ISS çalıştıran DNS sunucusu ve kendi önbelleklerini kullanır. Bir ağ önbelleğine karşı güvence vermenin tek yolu elle yenileyebileceğiniz bir önbellek kullanmaktır. İşte bu yüzden OpenDNS'yi seviyorum.
  • İstemci uygulamasında (özellikle tarayıcılarda). Uygulamalar, Ubuntu'nun hiçbir etkisi olmayan kendi önbelleğe alma işlemlerini yapabilir. Firefox, DNS'yi nasıl önbelleğe alır . Chrome’un DNS önbelleği nasıl temizlenir . Diğer tarayıcıların (ve uygulamaların) kendi mekanizmaları olabilir.
  • Buradaki varili kazıyorum ama belki dnsmasq 'de önbelleğe almak yerine Ubuntu'da standart olmayan bir DNS sunucusu kurdunuz. Çok var: dnsmasq , DJBDNS nscd (aka TinyDNS), dnscache , pdns , Bind9 (ve türevleri) ve daha fazla hatırlayamıyorum. Bunlar <%> pdnsd dosyasında muhtemelen olacaktır (bu dosyayı otomatikleştirmek için / etc / resolvconf / 'dizininde). Aşağıda yerel olarak yakalanmış bir DNS sorgusu gösterilmektedir:

    $ 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
    

    8.8.8.8 (veya DNS sunucunuzun olmasını beklediğiniz her ne olursa) isabet etmiyorsanız, bunun yerine ne yaptığınızı kontrol edin. Benim durumumda, bunun sadece /etc/resolv.conf 'nin LXC için DNS sorgularını yansıtması için ayarlandığını görebiliyorum, ancak sizin durumunuzda kötü bir cachey işi yapıyor olabilir.

    Listelenen önbellekleri tamamladıysanız, temizleme işleminin her biri değişir:

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

Hafifçe ilgili bir notta, bkz. Bu, dnsmasq dizininde önbelleğe almayı etkinleştirmek için .

    
verilen cevap Oli 17.03.2014 11:40
40

12.04 için:

Ubuntu 12.04, dnsmasq kullanarak DNS'yi önbelleğe alır (bkz. man dnsmasq ). Önbelleği temizlemek için aşağıdakileri kullanın:

sudo kill -HUP $(pgrep dnsmasq)
    
verilen cevap zechariah 21.07.2012 23:32
16

sudo /etc/init.d/nscd restart

İşte

Ayrıca, bir not olarak, DNS değişikliklerinizi kazı yaparak ve varsayılan DNS sunucularınızdan başka birisine bakıp bakmadığında kontrol edip edemeyeceğinizi kontrol edebilirsiniz. Bu durumda google DNS.

dig @8.8.8.8 example.com

    
verilen cevap Mark Davidson 13.08.2010 23:25
12

Ubuntu 17.04 ve üstü (18.04)

Ubuntu 17.04'ten itibaren ve daha sonra, DNS için systemd-resol kullanılır. Systemd'nin önbelleklerini şu şekilde temizleyebilirsiniz:

sudo systemd-resolve --flush-caches
    
verilen cevap Mike Shultz 27.06.2017 06:09
11

Şahsen, OpenDNS’yi kullanıyorum ve Önbellek Denetimi işlevi, değişikliklerin yalnızca çalıştığından emin olmak için yenilemeyi zorunlu kılar, ancak garanti edemezsiniz onlar için yenilenir 48 saat içinde kullanıcılar.

DNS yavaş bir canavardır. Sabır seni korusun.

    
verilen cevap Oli 13.08.2010 23:26
7

nscd kullanıyorsanız:

sudo /etc/init.d/nscd restart

Önbelleğe almayı deneyen işletim sistemi olmayabilir. Herkes DNS'yi önbelleğe almayı seviyor ... Bazı testler:

Yeni veya eski IP olup olmadığını kontrol edin. Çoğu tarayıcı da DNS'i de önbelleğe alır. Bu nedenle, Chromium'u yeniden başlatmamışsanız veya en son ne görüyorsanız bulunsun.

ping yourdomain.com

Yerel ad sunucunuzu /etc/resolv.conf dosyasında başka bir sağlayıcıya, google veya düzeye geçirin, örnekler:

nameserver 8.8.8.8
nameserver 4.2.2.2

Ve sonra tekrar ping.

Yönlendiricinizin herhangi bir biçimde DNS'yi önbelleğe almadığından emin olun. (Router / firmware / etc'ye göre değişir)

Sonunda sabır. DNS, İnternet'te yayılmak için biraz zaman alabilir.

    
verilen cevap bikesandcode 13.08.2010 23:33
5

Yukarıdaki tüm cevaplar, ad çözümlemesinde önemli bir şeyi unuttu: genellikle ad çözümlemesini istediğin DNS sunucuları, kayıtları kendileri (yetkili sunucu) tutan kişi değil. Her bir DNS kaydı, bu değer tarafından belirtilen süreler boyunca önbellekleme yapmak için her bir DNS sunucusunu çözümleme zincirinde zorunlu kılan bir Time To Live değeriyle birlikte gelir. Bu nedenle, yalnızca makinenizde önbellekleme yapamazsınız, ancak BEKLEYİCİ isminin sonucunun sonucu, kontrol etmediğiniz bir sunucuda önbelleğe alınacaktır.

Bir ad kaydı değişikliğinden hemen haberdar edilecek tek çözüm, yetkili ad sunucusundaki girdiyi oluştururken / güncellerken 0 değerinin TTL değerini kullanmaktır. Ancak bu, her ad çözümlemesi için sunucunun vurulacağı, genellikle kayıt şirketlerinin buna izin verilmediği anlamına gelir. Örneğin, seçebileceğiniz önceden tanımlanmış TTL değerlerinin bir listesini sağlayabilirler.

Farklı alan adlarını yönetmek ve ben adında bir araç dnstracer DNS kökünden her sunucularında arama sonucu göstermek edebiliriz.

Sonuç olarak, herhangi bir DNS önbellekleme çözümü olmadan bile, DNS kayıtlarını değiştirdiğiniz ve bir PC'de değişikliğin görüldüğü an arasında hala bir gecikme olacaktır. Bu gecikme büyük ölçüde kayıtların TTL'sine ve PC ile yetkili ad sunucusu arasındaki DNS sunucularının sayısına bağlıdır.

    
verilen cevap Benoit 18.03.2014 11:07
2

Ubuntu 14.04 için bu komutu tavsiye ediyorum:

sudo service dns-clean
    
verilen cevap alphayax 02.06.2016 16:33
1

12.10 ubuntu kutumdaki dns önbelleğini temizlemek için aşağıdaki komutu kullandım ve harika çalıştı.

sudo kill -HUP $(pgrep dnsmasq)

Diğer yararlı bir işaret SIGUSR1'dir, bu da syslog için biraz istatistik yükler veya man dnsmasq 'si notunda olduğu gibi:

  

--no-daemon modunda veya tam günlük kaydı etkinleştirildiğinde (-q), tamamlandı   önbellek içeriğinin dökümü yapılır.

    
verilen cevap j0inty 25.02.2013 22:41
0

Ayrıca çelişkiler de buldum, ama bu: İşte Benim için (son güncellemeler ile Ubuntu 13.10, özel ağ paketleri yüklü değil) çalışır. Kısaca, sadece bunu kullan sudo /etc/init.d/dns-clean

    
verilen cevap Nitz 23.03.2014 10:39
0

openDNS'yi uzak Ubuntu sunucularında özel olarak öneririm, bu çok acı çeker ...

Nasıl yapmalı? Eh ...

cd /etc/dhcp
sudo nano dhclient.conf

şunu ekleyin ÖNCE "alt ağ maskesi iste ..." satırı

supersede domain-name-servers 208.67.222.222,208.67.220.220;

Bu, arayüzü çok hızlı bir şekilde yeniden başlatacak ve SSH bağlantınızı bile kaybetmemelisiniz

sudo ifdown eth0 && sudo ifup eth0

yepyeni openDNS'nizin doğru kurulup kurulmadığını görmek için bunu kontrol edin

cat /etc/resolv.conf
    
verilen cevap D.Snap 23.03.2016 20:49

Etiketlerdeki diğer soruları oku