Pertanyaan Bagaimana cara menghapus cache DNS?


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

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


153
2017-08-13 21:23


asal


Juga, periksa /etc/hosts. Saya baru saja yakin bahwa alamat IP lama dari domain saya sedang di-cache, tetapi hanya strace ping example.com mengungkapkan bahwa saya lupa menghapus /etc/hosts catatan yang saya tambahkan beberapa waktu lalu karena kurang sabar untuk propagasi DNS. - ulidtko
banyak dari jawaban-jawaban ini menunjukkan bahwa cache dinonaktifkan secara default, tetapi mereka juga merujuk versi yang lebih lama. Ini tentu saja nampak secara default di mesin saya (18.04) dan berbagai jawaban di bawah ini menunjukkan kepada Anda cara menyiramnya, hanya gulir ke bawah - Madivad


Jawaban:


Untuk 18.04 dan lebih tinggi

Melihat Jawaban Mike Shultz.

Untuk 11.10 dan di bawah

Ubuntu tidak menyimpan catatan dns secara default, jadi kecuali Anda telah menginstal cache dns, tidak ada yang perlu dikosongkan.

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

dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Itu Anda ingin Ubuntu untuk memulai cache dns Saya sarankan menginstal pdnsd bersama dengan resolvconf. nscd adalah buggy dan tidak dianjurkan.


52
2017-08-14 00:13



Referensi apa pun tentang mengapa nscd adalah buggy? Apakah masih buggy hari ini (2012-10)? - jjmontes
Dapatkah Anda memperbarui jawaban Anda - ATM kedengarannya seperti Ubuntu versi 11.10+ lakukan rekam DNS cache. - Martin Konecny


12.04

Ubuntu 12.04 digunakan dnsmasq yang dibangun menjadi network-manager, tetapi tidak cache dns sehingga tidak perlu menyiramnya. Berikut ini contoh baris dari saya syslog untuk membuktikan hal itu:

dnsmasq[2980]: started, version 2.59 cache disabled

Juga tidak diperlukan konfigurasi apa pun dnsmasq. Jika Anda menjalankan dengan pengaturan stok tidak akan caching dns, karena untuk melakukannya Anda harus secara eksplisit mengaturnya karena ini Artikel Ubuntu menjelaskan.

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

sudo service network-manager restart

Ini dimulai ulang dnsmasq karena itu dibangun untuk network-manager; periksa Anda syslog untuk bukti ini.

Jika Anda menggunakan koneksi kabel dengan dhcp network manager akan mengambil pengaturan langsung dari router Anda dan koneksi Anda akan secara otomatis ditetapkan saat Anda masuk ke Ubuntu. Anda dapat memeriksa apakah pengaturannya sudah benar di router Anda jika Anda dapat mengaksesnya melalui antarmuka web, dan mungkin reboot jika perlu.  Jika ini adalah masalah umum dengan dns, Anda dapat mencoba menggunakan Google dns, bukan dns ISP Anda, dan informasi lebih lanjut tentang itu adalah rinci di sini.


69
2017-09-14 20:39



sudo service network-manager restart melakukan trik untukku dengan Debian - Pierre de LESPINAY


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

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

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

/ usr / sbin / dnsmasq \
  --no-resolv \
  --ke-dalam-latar depan \
  --no-host \
  --bind-interface \
  --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 kosong secara default. Jadi tidak ada penggantian yang masuk ke sana dan hanya untuk memeriksa --cache-size=0berarti apa yang kami pikirkan artinya (bukan tak terbatas cache), 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 sebentar dnsmasq  bisa cache DNS, bukan caching di luar kotak. Anda dapat memeriksa mesin Anda dan berbagai direktori konfigurasi untuk memeriksa Anda berada di halaman yang sama.

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

  • Hulu dari komputer Anda. Beberapa cache router. Banyak jaringan perusahaan akan meng-cache DNS. Banyak server DNS yang dijalankan oleh ISP dan akan menggunakan cache mereka sendiri. Satu-satunya cara untuk menjamin terhadap cache jaringan adalah menggunakan cache yang dapat Anda perbarui secara manual. Inilah mengapa saya suka OpenDNS.
  • Di aplikasi klien (terutama browser). Aplikasi dapat melakukan berbagai macam caching mereka sendiri yang tidak berpengaruh pada Ubuntu. Bagaimana Firefox menyimpan DNS. Cara menghapus cache DNS Chrome. Browser lain (dan aplikasi) mungkin memiliki mekanisme mereka sendiri.
  • Saya menggores tong di sini, tetapi mungkin Anda telah menginstal server DNS non-standar di Ubuntu alih-alih mengaktifkan caching di dalamnya dnsmasq. Ada banyak: nscd, DJBDNS dnscache (alias TinyDNS), pdns, pdnsd, Bind9 (dan variasinya), dan banyak lagi yang bahkan tidak dapat saya ingat. Kehendak ini mungkin dibuktikan dalam /etc/resolv.conf (dengan konfigurasi di / etc / resolvconf / `to 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 lakukan. Dalam kasus saya, saya dapat melihat ini adil dnsmasq mengatur untuk meniru permintaan DNS kembali untuk LXC, tetapi dalam kasus Anda mungkin melakukan hal-hal buruk cachey.

    Jika Anda telah melakukan cache yang terdaftar, proses untuk membersihkan 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 cache di dnsmasq.


59
2018-03-17 10:40



Output saya dari ps aux | grep sama dengan milik Anda, namun sesuatu pasti IS caching DNS di komputer saya. Jika bukan dnsmasq, itu sesuatu yang lain. Buktinya: Saya membuat subdomain di server saya, namun saya tidak bisa melakukan ping, host tidak dapat dihubungi. Saya memeriksa downforeveryoneorjustme.com dan sudah selesai, sehingga masalah propagasi dibuang. Bukan router saya, atau ISP saya, karena saya menggunakan DNS 8.8.8.8 dari Google. Lalu saya reboot komputer (dan bukan router) dan saya bisa mencapai domain. Saya telah mencoba berkali-kali sebelum reboot dengan tidak berhasil. Pertama coba setelah reboot tiba di host. - matteo
Dan ini bukan pertama kalinya saya mengalami hal yang sama, ngomong-ngomong. Bulan lalu hal yang sama terjadi dan satu-satunya cara saya bisa mencapai domain adalah me-restart komputer, tetapi kemudian saya memiliki versi Ubuntu yang lebih tua. - matteo
@matteo Peramban? - Oli♦
tidak, seperti yang saya katakan saya diuji dengan ping, bukan (hanya) browser (s). - matteo
@matteo Saya telah menambahkan lebih banyak tetapi saya kehabisan ide. Tidak banyak tempat yang lebih dari seseorang bisa DNS cache :) - Oli♦


Untuk 12.04:

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

sudo kill -HUP $(pgrep dnsmasq)

40
2017-07-21 21:32



Terima kasih! Anda adalah yang pertama saya lihat menyebutkan apa pun tentang cache default 12.04! - Tarka
12.04 tidak menyimpan dns secara default - periksa syslog Anda setelah memulai kembali manajer jaringan; itu akan memiliki entri yang menunjukkan dnsmasq dimulai dengan cache-disable.
Saya tidak tahu apakah cache diaktifkan secara default, tetapi jawaban ini bekerja untuk saya. - jeyk
Kenapa tidak adil saja sudo killall -HUP dnsmasq? - James Haigh
menggunakan pkill dari pada kill dan pgrep - Robert Siemer


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 penggalian dan mencari lawan orang lain selain server DNS default Anda. Dalam hal ini google DNS.

dig @8.8.8.8 example.com


16
2017-08-13 21:25



Perlu dicatat bahwa nscd tidak diinstal secara default. - Scaine


Ubuntu 17.04 dan lebih tinggi (18.04)

Dari Ubuntu 17.04 dan seterusnya, systemd-resolve digunakan untuk DNS. Anda dapat membersihkan cache sistem seperti ini:

sudo systemd-resolve --flush-caches

12
2018-06-27 04:09



OMG, maukah kamu menikah denganku? Soal masalah saya dengan 18.04 juga \ o / - NiKo
Ini tidak bekerja untuk saya pada 16.04 LTS - tetapi sangat berguna untuk melihat cara lain yang mungkin telah membuat cache: sudo systemd-resolve --statistics - Phil


Secara pribadi, saya akan gunakan OpenDNS dan gunakan mereka Fungsi Cache Check untuk memaksa penyegaran hanya untuk memastikan perubahan berfungsi tetapi Anda tidak bisa menjamin mereka akan menyegarkan untuk pengguna Anda dalam waktu 48 jam.

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


11
2017-08-13 21:26



1 Saya menggunakan OpenDNS dan cache yang jelas sangat berguna. - Mark Davidson
Saya curiga terhadap OpenDNS. Saya senang dengan itu pada awalnya, tetapi kemudian saya mulai curiga; meskipun saya kira jika itu adalah pilihan antara ISP dan OpenDNS, saya lebih baik dengan OpenDNS, kan? - Jono
Saya akan mengatakan OpenDNS adalah kejahatan yang lebih rendah. Mereka ingin memonetisasi lalu lintas Anda tetapi hanya pada klik domain buruk. - 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 menyimpan DNS juga, jadi jika Anda belum memulai ulang Chromium atau apa pun yang mungkin tidak Anda lihat terbaru.

ping yourdomain.com

Ganti nameserver lokal Anda di /etc/resolv.conf ke penyedia lain, google atau level, contoh:

nameserver 8.8.8.8
nameserver 4.2.2.2

Lalu ping lagi.

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

Akhirnya, kesabaran. DNS dapat membutuhkan sedikit waktu untuk menyebar ke seluruh internet.


7
2017-08-13 21:33



Jika menggunakan NetworkManager dan DHCP /etc/resolve.conf akan terpancar ketika penyewaan DHCP berakhir, maka Anda harus mengatur ip statis di NetworkManager agar ini bekerja lebih lama. - LassePoulsen
1 Saya tidak menyadari bahwa Firefox adalah caching DNS, ini sangat membantu. - wavemode
+1 untuk beralih nameserver lokal ke google bekerja - Bibek Sharma


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

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

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 akar DNS.

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


5
2018-03-18 10:07



Tentu saja, tetapi jika itu masalahnya, me-reboot komputer tidak akan memperbaikinya. - matteo


Untuk ubuntu 14.04, saya memberi rekomendasi untuk perintah ini:

sudo service dns-clean

2
2018-06-02 14:33



Bukan pada penginstalan server default. Hanya berfungsi pada 14.04 dan di bawah. - R J


Saya menggunakan perintah berikut untuk membersihkan cache dns pada kotak ubuntu 12.10 saya dan itu bekerja fantastis.

sudo kill -HUP $(pgrep dnsmasq)

Sinyal lain yang membantu adalah SIGUSR1 yang membuang sedikit statistik ke syslog atau seperti yang dicatat man dnsmasq:

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


1
2018-02-25 21:41



menggunakan pkill dari pada kill dan pgrep - Robert Siemer