it-swarm-tr.com

DNS önbelleğini nasıl temizlerim?

Barındığım bir site için DNS kaydını (_ns1_, _ns2_, _ns3.myhostingcompany.com_) güncelleştirdim, ancak alan adı kayıt defteri park sayfasını yine de alıyorum.

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?)

192
Jono

18.04 ve üstü için

Mike Shultz'in cevabına bakın.

11.10 ve altı için

Ubuntu, varsayılan olarak dns kayıtlarını önbelleğe almaz; bu nedenle, bir dns önbelleği yüklemediğiniz sürece temizlenecek bir şey yoktur.

DNS kayıtları büyük olasılıkla sağlayıcınızın DNS sunucuları tarafından önbelleğe alınır, bu nedenle yaptığınız DNS değişikliklerinin başarılı olup olmadığını kontrol etmek istiyorsanız, bir DNS sunucusunu Dig ile alan barındırma hizmetinizden sorgulayabilirsiniz:

Dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Ubuntu’nun önbelleğe alma işlemini başlatmasını istiyorsanız, pdnsd ile birlikte resolvconf kurmanızı tavsiye ederim. nscd buggy ve tavsiye edilmez.

64
Li Lo

12.04

Ubuntu 12.04, dnsmasq 'i kullanır [network-manager içine yerleştirilmiş, fakat onu yok önbellek dns, yıkamak gerekir. İşte bu noktayı ispatlamak için syslog adresinden örnek bir satır:

dnsmasq[2980]: started, version 2.59 cache disabled

dnsmasq konfigürasyonuna da gerek yoktur. Hisse senedi ayarlarıyla çalışıyorsanız, dns'i önbelleğe almayacaksınız, bunun için olduğu gibi açıkça ayarlamanız gerekir buntu article tanımlandığı gibi.

Ayarlarınızı yenilemek istiyorsanız, devre dışı bırakıp ardından ağ kurmayı veya çalıştırmayı etkinleştirebilirsiniz.

Sudo service network-manager restart

Bu, dnsmasq işlevini yeniden başlatır çünkü network-manager; Bunun için kanıt için syslog kontrol edin.

Eğer dhcp network manager ile kablolu bir 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. Web arayüzü üzerinden erişebiliyorsanız, ayarların doğru olup olmadığını kontrol edebilir ve gerekirse yeniden başlatabilirsiniz. Eğer dns ile ilgili genel bir problemse, isp dns'niz yerine Google dns'i kullanmayı deneyebilirsiniz ve bununla ilgili daha fazla bilgi burada ayrıntılı .

70
user76204

Ubuntu 17.04 ve üstü (18.04)

Ubuntu 17.04 ve sonrasında, DNS için systemd resolve kullanılır. Sistemin önbelleklerini şu şekilde temizleyebilirsiniz:

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

Ubuntu’nun 17.04 ve sonrasında sistemd-çözümünü kullandığını ve bu yanıtın artık en son Ubuntu sürümleri için geçerli olmadığını unutmayın. Bkz. " , Ubuntu 17.04’te DNS önbelleğini temizleme ve daha üstü (18.04) "

Varsayılan olarak, DNS Ubuntu <17.04’te önbelleğe alınmamıştır (ancak ağda veya uygulamada önbelleğe alınmış olabilir)

Bir yol veya diğerini dnsmasq önbelleğe alınıp alınmadığını onaylamak için ps ax | grep dnsmasq komutunu çalıştırın ve running komutuna bakın. İşte benim varsayılan 13.10 makinemin bir dökümü:

/ usr/sbin/dnsmasq\
 - no-resolv\
 - ön planda tutma\
 - no-hosts\
 - ciltleme -interfaces\
 --pid-file =/var/run/NetworkManager/dnsmasq.pid\
 --listen-address = 127.0.1.1\
 --conf dosyası =/var/run/NetworkManager/dnsmasq.conf\
  - önbellek boyutu = 0 \
 - proxy-dnssec\
 --enable-dbus = org.freedesktop.NetworkManager.dnsmasq\
 --conf-dir =/etc/NetworkManager/dnsmasq.d

/etc/NetworkManager/dnsmasq.d varsayılan olarak boştur. Bu yüzden oraya gelip geçersiz kılma yok ve sadece kontrol etmek için --cache-size=0 ne demek istediğimizi ifade ediyor (bir sınırsız önbellek yerine), man dnsmasq 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.

dnsmasq DNS'yi önbelleğe alabilirken kutuyu önbelleğe almaz. Aynı sayfada olup olmadığınızı kontrol etmek için makinenizi ve çeşitli konfigürasyon dizinlerini kontrol edebilirsiniz.

Önbellek sorunları görüyorsanız, bu durum birkaç yerden birinde olabilir:

  • Bilgisayarınızdan yukarı doğru. Bazı yönlendiriciler önbelleklenir. Birçok kurumsal ağ DNS'i önbelleğe alır. Birçok ISS işletmesi yapan DNS sunucuları ve kendi önbelleklerini kullanacaklar. Bir ağ önbelleğine karşı garanti vermenin tek yolu, elle yenileyebileceğiniz bir önbellek kullanmaktır. Bu yüzden OpenDNS'yi seviyorum.
  • İstemci uygulamasında (özellikle tarayıcılar). Uygulamalar, Ubuntu'nun üzerinde hiçbir etkisi olmadığı kendi önbellekleme işlemlerini yapabilir. Firefox DNS’i nasıl önler? . Chrome'un DNS önbelleği nasıl temizlenir . Diğer tarayıcıların (ve uygulamaların) kendi mekanizmaları olabilir.
  • Namluyu buraya kazıyorum ama belki de önbelleklemeyi dnsmasq işlevini açmak yerine Ubuntu'da standart olmayan bir DNS sunucusu kurdunuz. Çok var: nscd, DJBDNS dnscache (aka TinyDNS), pdns, pdnsd, Bind9 (ve varyantları) ve daha fazlasını hatırlayamıyorum. Bunlar muhtemelen /etc/resolv.conf içinde kanıtlanacaktır (bu dosyayı autogen için/etc/resolvconf/`dizininde bulunan). Aşağıda yerel olarak ele alınan 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'e ulaşmıyorsanız (veya DNS sunucunuzun ne olmasını beklerseniz beklemeyin), bunun yerine ne attığınızı kontrol edin. Benim durumumda bunun sadece dnsmasq olduğunu görüyorum, LXC için DNS sorgularını yansıtmak için ayarlanmış, ancak sizin durumunuzda kötü önbellek işleri yapıyor olabilir.

    Listelenen önbellekleri yaptıysanız, her birini temizleme işlemi değişiklik gösterir:

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

Biraz ilgili bir notta, , dnsmasq içinde önbelleğe almayı etkinleştirmek için buna bakın.

62
Oli

12.04 için:

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

Sudo kill -HUP $(pgrep dnsmasq)
39
zechariah

Sudo /etc/init.d/nscd restart

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

Ayrıca bir not olarak, DNS değişikliklerinizin Dig kullanarak ve varsayılan DNS sunucularınızdan başka birine bakıp bakmadığını kontrol edip edemeyeceğinizi kontrol edebilir ve görebilirsiniz. Bu durumda google DNS.

Dig @8.8.8.8 example.com

15
Mark Davidson

Şahsen, ben OpenDNS kullanın ve değişikliklerin işe yaradığından emin olmak için bir yenilemeyi zorlamak için Cache Check işlevi kullanın, ancak yapamazsınız garanti kullanıcılarınız için 48 saat içinde yenileyeceklerini garanti eder.

DNS yavaş bir canavardır. Sabır aklı başında tutar.

11
Oli

Eğer nscd kullanıyorsanız:

Sudo /etc/init.d/nscd restart

Önbelleğe alan işletim sistemi olamayacağından bahsetmeye değer. Herkes DNS’yi önbelleğe almayı sever ... Bazı testler:

Yeni veya eski IP olup olmadığını kontrol edin. Çoğu tarayıcı, DNS’yi de önbelleğe alır; bu nedenle Chromium'u yeniden başlatmadıysanız veya en son ne göremiyorsanız.

ping yourdomain.com

Yerel ad sunucunuzu /etc/resolv.conf dosyasındaki başka bir sağlayıcıya, google veya seviyeye çevirin, örnekler:

nameserver 8.8.8.8
nameserver 4.2.2.2

Ve sonra tekrar ping.

Yönlendiricinizin DNS’i herhangi bir biçimde önbelleğe almadığından emin olun. (Yönlendirici/ürün yazılımı/vb. İle değişir)

Sonunda sabır. DNS’in İnternet’te yayılması biraz zaman alabilir.

7
bikesandcode

Yukarıdaki tüm cevaplar isim çözümünde önemli bir şeyi unuttu: genellikle isim çözümlemesini talep ettiğiniz DNS sunucuları kayıtları tutan kişi değil (yetkili sunucu). Her bir DNS kaydının bir Time To Live değeri ile birlikte gelmesi, bu çözüm zincirinde her DNS sunucusunu bu değer tarafından belirtilen saniye boyunca önbellekleme yapmak zorunda bırakacaktır. Bu nedenle, yalnızca makinenizde önbellekleme yapabilirsiniz, ancak kesin olarak ad aramanın sonucu kontrol etmediğiniz bir sunucuda bir yere önbelleğe alınır.

Bir ad kaydı değişikliğinden hemen haberdar edilecek tek çözüm, yetkili ad sunucusundaki girişi oluştururken/güncellerken 0 TTL değerini kullanmaktır. Ancak bu, her ad çözümlemesi için, sunucuya isabet edeceği, genellikle bu kayıtcılar tarafından izin verilmediği anlamına gelir. Örneğin, seçebileceğiniz önceden tanımlanmış TTL değerlerin bir listesini sağlayabilirler.

Farklı etki alanı adlarını yönetiyorum ve değişikliğin yetkili ad sunucularında iyi uygulandığından emin olmak için, DNS sunucusundaki her sunucuda arama sonucunu gösterebilecek dnstracer adlı bir araç kullanıyorum.

Sonuç olarak, herhangi bir DNS önbelleğe alma çözümü olmasa bile, DNS kayıtlarını değiştirdiğiniz an ile değişiklik bir PC'de göründüğü an arasında bir gecikme yaşanacaktır. Bu gecikme büyük ölçüde kayıtların TTL değerine ve bilgisayarınız ile yetkili ad sunucusu arasındaki DNS sunucusu sayısına bağlıdır.

5
Benoit

Ubuntu 14.04 için bu komutu öneriyorum:

Sudo service dns-clean
2
alphayax

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)

Bir başka yararlı sinyal, slog'a veya man dnsmasq 'in notunda olduğu gibi, biraz istatistikle uğraşan SIGUSR1'dir:

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

1
j0inty

Ayrıca çelişkiler de buldum, fakat bu: https://superuser.com/a/521562 benim için woks (en son güncellemeler ile Ubuntu 13.10, özel ağ paketleri kurulu değil).
Kısacası, sadece bunu kullanın
Sudo /etc/init.d/dns-clean

0
Nitz

Ubuntu 16.04'te, yapmadığım sürece önbelleği alamadım:

Sudo service dnsmasq restart
0
Volomike

OpenDNS'yi özellikle uzak Ubuntu sunucularında öneriyorum, çok daha fazla acı ...

Nasıl yapılır? İyi...

cd /etc/dhcp
Sudo nano dhclient.conf

şunu ekle ÖNCE "request subnet-mask ..." satırı

supersede domain-name-servers 208.67.222.222,208.67.220.220;

bu, arayüzü o kadar hızlı yeniden başlatır ki SSH bağlantınızı bile kaybetmemelisiniz

Sudo ifdown eth0 && Sudo ifup eth0

yeni openDNS'inizin doğru takılıp takılmadığını görmek için bunu kontrol edin.

cat /etc/resolv.conf
0
D.Snap