it-swarm-id.com

Bagaimana cara menghapus cache DNS?

Saya baru saja memperbarui catatan DNS (ns1, ns2, ns3.myhostingcompany.com) untuk situs yang saya host, tetapi saya masih mendapatkan halaman parkir pendaftar domain.

Saya ingin melihat apakah masalahnya adalah catatan DNS cache Ubuntu. Apakah ada cara untuk menghapus cache DNS Ubuntu? (jika hal seperti itu ada?)

189
Jono

Untuk 18,04 dan lebih tinggi

Lihat jawaban Mike Shultz .

Untuk 11.10 dan di bawah

Ubuntu tidak mem-cache catatan dns secara default jadi kecuali Anda sudah menginstal cache dns tidak ada yang perlu dihapus.

Data DNS kemungkinan di-cache oleh server DNS penyedia Anda, jadi jika Anda ingin memeriksa apakah perubahan DNS yang Anda buat berhasil, Anda dapat menginterogasi server DNS dari layanan hosting domain Anda dengan Dig:

Dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Kalau Anda ingin Ubuntu mulai cns dns saya sarankan menginstal pdnsd bersama dengan resolvconf. nscd buggy dan tidak disarankan.

63
Li Lo

12,04

Ubuntu 12.04 menggunakan dnsmasq yang dibangun ke network-manager, tetapi tidak cache dns sehingga tidak perlu membilasnya . Ini adalah contoh baris dari syslog saya untuk membuktikan poin itu:

dnsmasq[2980]: started, version 2.59 cache disabled

Konfigurasi dnsmasq juga tidak diperlukan. Jika Anda menjalankan dengan pengaturan stok, caching dns tidak akan dilakukan, karena untuk melakukannya Anda harus mengaturnya secara eksplisit seperti ini --- artikel Ubunt menjelaskan.

Jika Anda ingin menyegarkan kembali pengaturan Anda, Anda dapat menonaktifkan dan kemudian mengaktifkan jaringan atau menjalankan

Sudo service network-manager restart

Ini me-restart dnsmasq karena ia dibangun di network-manager; periksa syslog Anda untuk bukti untuk ini.

Jika Anda menggunakan koneksi kabel dengan dhcp network manager akan mengambil pengaturan langsung dari router Anda dan koneksi Anda akan dibuat secara otomatis ketika Anda login ke Ubuntu. Anda dapat memeriksa bahwa pengaturan sudah benar di router Anda jika Anda dapat mengaksesnya melalui antarmuka web, dan mungkin reboot jika perlu. Jika ini merupakan masalah umum dengan dns, Anda dapat mencoba menggunakan Google dns alih-alih dns ISP Anda, dan informasi lebih lanjut tentang itu dirinci di sini .

70
user76204

Perhatikan bahwa Ubuntu menggunakan systemd-resol dari 17.04 dan seterusnya sehingga jawaban ini tidak berlaku lagi untuk versi Ubuntu terbaru. Lihat " flush DNS cache di Ubuntu 17.04 dan lebih tinggi (18.04) "

Secara default, DNS tidak di-cache di Ubuntu <17.04 (tetapi mungkin di-cache di jaringan atau aplikasi)

Untuk mengkonfirmasi satu atau lain cara apakah dnsmasq adalah caching, jalankan ps ax | grep dnsmasq dan lihat perintah yang sedang berjalan. Berikut ini rincian mesin 13.10 default saya:

/ 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\
  - ukuran cache = 0 \
 - proxy-dnssec\
 --enable-dbus = org.freedesktop.NetworkManager.dnsmasq\
 --conf-dir =/etc/NetworkManager/dnsmasq.d

/etc/NetworkManager/dnsmasq.d kosong secara default. Jadi tidak ada override yang masuk ke sana dan hanya untuk memeriksa --cache-size=0 berarti apa yang kami pikir artinya (bukan cache tak terbatas ), man dnsmasq menunjukkan:

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

Jadi sementara dnsmasq dapat cache DNS, itu tidak caching kotak. Anda dapat memeriksa mesin Anda dan berbagai direktori konfigurasi untuk memeriksa Anda berada di halaman yang sama.

Jika Anda melihat masalah cache, ini kemungkinan terjadi di salah satu dari beberapa tempat:

  • Hulu dari komputer Anda. Beberapa cache router. Banyak jaringan perusahaan akan melakukan cache DNS. Banyak server DNS yang dijalankan ISP dan akan menggunakan cache mereka sendiri. Satu-satunya cara untuk menjamin terhadap cache jaringan adalah dengan menggunakan cache yang Anda dapat menyegarkan secara manual. Inilah sebabnya saya suka OpenDNS.
  • Dalam aplikasi klien (terutama browser). Aplikasi dapat melakukan segala macam caching mereka sendiri yang tidak berpengaruh pada Ubuntu. Bagaimana Firefox melakukan cache DNS . Cara menghapus cache DNS Chrome . Peramban lain (dan aplikasi) mungkin memiliki mekanisme sendiri.
  • Saya sedang mengais laras di sini, tetapi mungkin Anda telah menginstal server DNS non-standar di Ubuntu alih-alih mengaktifkan caching di dnsmasq. Ada banyak: nscd, DJBDNS dnscache (alias TinyDNS), pdns, pdnsd, Bind9 (dan variannya), dan banyak lagi yang bahkan tidak bisa saya ingat. Ini akan mungkin dibuktikan dalam /etc/resolv.conf (dengan config di/etc/resolvconf/`untuk autogen file itu). Berikut ini menunjukkan permintaan DNS yang dicegat secara lokal:

    $ 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
    

    Jika Anda tidak mencapai 8.8.8.8 (atau apa pun yang Anda harapkan dari server DNS Anda), periksa apa yang Anda pukul. Dalam kasus saya, saya bisa melihat ini hanya dnsmasq yang disetel untuk mencerminkan permintaan DNS kembali untuk LXC, tetapi dalam kasus Anda mungkin melakukan hal-hal cachey yang buruk.

    Jika Anda telah melakukan cache yang terdaftar, proses untuk menghapus masing-masing bervariasi:

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

Pada catatan yang sedikit terkait, lihat ini untuk mengaktifkan caching di dnsmasq .

63
Oli

Ubuntu 17.04 dan lebih tinggi (18.04)

Dari Ubuntu 17.04 dan selanjutnya, systemd-resol digunakan untuk DNS. Anda dapat menghapus cache systemd seperti:

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

Untuk 12,04:

Ubuntu 12.04 melakukan cache DNS menggunakan dnsmasq (lihat man dnsmasq). Gunakan yang berikut ini untuk menghapus cache:

Sudo kill -HUP $(pgrep dnsmasq)
40
zechariah

Sudo /etc/init.d/nscd restart

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

Juga sebagai catatan Anda dapat memeriksa dan melihat apakah perubahan DNS Anda telah disebarkan menggunakan Dig dan mencari orang lain selain server DNS default Anda. Dalam hal ini google DNS.

Dig @8.8.8.8 example.com

16
Mark Davidson

Secara pribadi, saya menggunakan OpenDNS dan menggunakan fungsi mereka Pengecekan Cache untuk memaksa penyegaran hanya untuk memastikan perubahan bekerja tetapi Anda tidak dapat menjamin mereka akan menyegarkan untuk pengguna Anda dalam waktu 48 jam.

DNS adalah binatang yang lambat. Kesabaran akan membuat Anda tetap waras.

11
Oli

Jika Anda menggunakan nscd:

Sudo /etc/init.d/nscd restart

Perlu disebutkan bahwa mungkin bukan OS yang menyimpannya. Semua orang suka cache DNS ... Beberapa tes:

Periksa untuk melihat apakah itu IP baru atau lama. Sebagian besar browser juga cache DNS, jadi jika Anda belum me-restart Chromium atau apa pun yang Anda mungkin tidak melihat yang terbaru.

ping yourdomain.com

Alihkan server nama lokal Anda di /etc/resolv.conf ke penyedia lain, google atau level, contoh:

nameserver 8.8.8.8
nameserver 4.2.2.2

Dan kemudian ping lagi.

Periksa untuk memastikan router Anda tidak melakukan caching DNS dalam bentuk apa pun. (Bervariasi berdasarkan router/firmware/dll)

Akhirnya kesabaran. DNS dapat mengambil sedikit waktu untuk menyebar melalui internet.

7
bikesandcode

Semua jawaban di atas lupa satu hal penting dalam resolusi nama: umumnya server DNS yang Anda minta resolusi namanya bukan yang memegang catatan sendiri (server otoritatif). Karena setiap catatan DNS dilengkapi dengan nilai Time To Live yang akan mewajibkan setiap server DNS dalam rantai resolusi untuk melakukan caching selama jumlah detik yang disebutkan oleh nilai ini. Jadi tidak hanya Anda dapat melakukan cache di mesin Anda, tetapi PASTI hasil pencarian nama akan di-cache di suatu tempat di server yang tidak Anda kontrol.

Satu-satunya solusi untuk segera diberitahu tentang perubahan catatan nama adalah dengan menggunakan nilai TTL dari 0 saat membuat/memperbarui entri di server nama resmi. Tetapi ini berarti bahwa untuk setiap resolusi nama, server akan terkena, biasanya ini tidak diizinkan oleh pendaftar. Misalnya, mereka dapat memberikan daftar nilai TTL yang telah Anda tentukan sebelumnya.

Saya mengelola nama domain yang berbeda dan untuk memastikan bahwa perubahan tersebut diterapkan dengan baik di server nama otoritatif, saya menggunakan alat yang disebut dnstracer yang dapat menunjukkan hasil pencarian pada setiap server dari root DNS.

Kesimpulannya, bahkan tanpa solusi caching DNS, masih akan ada penundaan antara saat Anda mengubah catatan DNS dan perubahan terlihat pada PC. Penundaan ini sangat tergantung pada TTL catatan dan jumlah server DNS antara PC Anda dan server nama resmi.

5
Benoit

Saya menggunakan perintah berikut untuk menyiram cache dns pada kotak ubuntu 12.10 saya dan bekerja dengan sangat baik.

Sudo kill -HUP $(pgrep dnsmasq)

Sinyal bermanfaat lainnya adalah SIGUSR1 yang membuang sedikit statistik ke syslog atau seperti yang dicatat dari man dnsmasq:

Dalam mode --no-daemon atau ketika logging penuh diaktifkan (-q), dump lengkap dari isi cache dibuat.

1
j0inty

Saya juga menemukan kontradiksi, tetapi ini: https://superuser.com/a/521562 wajan untuk saya (Ubuntu 13.10 dengan pembaruan terkini, tidak ada paket jaringan khusus yang diinstal).
Singkatnya, gunakan saja ini
Sudo /etc/init.d/dns-clean

0
Nitz

Di Ubuntu 16.04, saya tidak bisa menghapus cache kecuali saya melakukannya:

Sudo service dnsmasq restart
0
Volomike

Saya merekomendasikan openDNS khusus di server remote Ubuntu, ini memudahkan banyak rasa sakit ...

Bagaimana cara melakukannya? Baik...

cd /etc/dhcp
Sudo nano dhclient.conf

masukkan ini BEFORE baris "request subnet-mask ..."

supersede domain-name-servers 208.67.222.222,208.67.220.220;

ini akan memulai ulang antarmuka dengan sangat cepat sehingga Anda tidak akan kehilangan koneksi SSH Anda

Sudo ifdown eth0 && Sudo ifup eth0

periksa ini untuk melihat apakah openDNS baru Anda diinstal dengan benar

cat /etc/resolv.conf
0
D.Snap