Cara membersihkan cache DNS lokal di CentOS

20

Saya sedang mencari cara untuk menyiram cache DNS lokal pada CentOS 6.

Sistem tidak menjalankan server DNS apa pun, dan saya ingin membiarkan setiap permintaan DNS keluar ke server nama yang dikonfigurasi, bahkan untuk yang duplikat.

Sebagian besar yang saya temukan online memberitahu saya untuk melakukan service nscd restart, memuat ulang, atau melakukan nscd -i hosts. Namun, sepertinya tidak ada yang membersihkan cache.

Jadi saya bertanya-tanya apakah ada yang punya ide tentang bagaimana saya bisa melakukan ini. Apakah ada semacam saklar di kernel yang perlu saya flip? Segala jenis pekerjaan di sekitar juga baik-baik saja.

zee
sumber
Apa yang Anda lakukan untuk memeriksa apakah cache telah memerah atau tidak?
John
ok itu agak rumit, saya punya program di sistem saya mendengarkan pada port 53 dan meneruskan permintaan DNS dengan cara tertentu, dan juga proxy http menggunakan localhost sebagai 'server DNS'; pada permintaan pertama (katakanlah wget -e 'http_proxy=localhost:3128' xxx.com) saya bisa melihat permintaan sedang diteruskan dengan benar, tetapi semua yang berikutnya tidak. Jika saya menunggu cukup lama (cache kedaluwarsa), maka itu akan berfungsi lagi.
zee
Dan juga saya sudah mengkonfigurasi proxy (squid) untuk tidak menembolok objek apa pun, jadi saya berasumsi bahwa sistemnya entah bagaimana masih menyimpan caching jawabannya
zee
1
nscd -i hosts -> berfungsi setiap saat. Saya restart nscd 3 kali berturut-turut dan tidak ingin menghapus cache.
Danie
nscd tampaknya tidak menjadi hal di CentOS 7 minimal. Saya tahu pertanyaan memanggil CentOS 6, tetapi judul memanggil CentOS secara umum. Apa cara CentOS 7?
duct_tape_coder

Jawaban:

11

Ini bukan kotak lokal Anda yang melakukan caching permintaan DNS tetapi itu adalah resolver DNS yang Anda gunakan dalam /etc/resolv.confcaching Anda.

Untuk mencegah agar permintaan cache tersebut tidak dibalas:

  1. Ubah resolver.

    $ dig @<resolve-ip> www.google.com

  2. Siram cache DNS pada resolver, jika Anda dapat mengakses server DNS.

    $ sudo /etc/init.d/bind restart

pradeepchhetri
sumber
Hmm tapi saya telah menetapkan dns_nameservers 127.0.0.1dalam file konfigurasi proxy, dan pendengar hanya meneruskan permintaan ke server nama yang sudah dikonfigurasi, bukankah itu seharusnya resolv.conf bahkan tidak dikonsultasikan?
zee
4
"bash: /etc/init.d/bind: Tidak ada file atau direktori" "Dan metode OP mendapat" Gagal me-restart nscd.service: Unit nscd.service gagal dimuat: Tidak ada file atau direktori. " Saya kira ini telah dipindahkan / diubah. Mengapa mereka tidak bisa membiarkan hal-hal yang berfungsi, atau setidaknya memelihara alias? Cukup buruk harus menjadi spesialis OS untuk hanya menggunakan Linux-box. Lebih buruk lagi ketika Anda harus mempelajari kembali OS dengan setiap rilis.
JosephK
3

Bahkan setelah refresh atau flush cache DNS pada mesin klien jika tidak berfungsi maka lihat server Anda atau mesin klien terikat ke server NIS jika ya kemudian ubah "hosts: files nis dns" ke "hosts: files dns nis" entri dalam file /etc/nsswitch.conf dan Anda juga perlu mengubah alamat ip dalam daftar host server master NIS.

Vilas Addagatla
sumber
Ini menyebabkan solusi saya. Di dalam / etc / hosts adalah alamat ip lama yang sebelumnya dikonfigurasi secara statis. Sesuatu yang telah saya lakukan beberapa waktu lalu. Menghapus baris itu (atau mengganti dengan ip baru) menyelesaikan masalah dan memungkinkan saya melakukan ping mesin menggunakan nama hostnya.
Paul
3

Saya hampir yakin itu bukan sistem caching respon - bagian itu (caching sistem) hanya ditangani oleh nscddaemon. Restart (atau berhenti sama sekali) bahwa daemon me-reset atau menghilangkan caching OS dari respons permintaan layanan nama.

Saya akan menawarkan dua kemungkinan, meskipun pendengar khusus yang Anda siapkan di port 53 membuat air berlumpur:

  • A) Sistem Anda mengeluarkan kueri hulu, tetapi pemecah nama hulu langsung adalah caching respons berdasarkan pada pengaturan itu atau TTL catatan.
  • B) Pendengar khusus Anda sedang melakukan caching tanggapan secara internal dan hanya menyerahkan tanggapan itu kembali ke sistem ketika ditanya lagi sebelum waktu cache berakhir.
John
sumber
Terima kasih atas masukannya, tetapi pendengar tidak melakukan apa-apa selain meneruskan permintaan dan tanggapan, itu hanya seperti 200 baris kode. Jadi seharusnya tidak menjadi kasus kedua; juga pendengar mencetak semua yang diterimanya, jadi saya yakin itu memang tidak mendapatkan apa-apa: |
zee