Cara terbaik untuk mengatur caching DNS?

28

Untuk mempercepat pencarian DNS, saya ingin menginstal cache DNS atau proxy.

Saya dapat melihat setidaknya tiga program yang saya pikir akan melakukan pekerjaan: bind9, pdnsd, atau dnsmasq.

Saya ingin memastikan bahwa jika saya menginstal salah satu dari saya tidak membiarkannya dikonfigurasi dengan buruk dari sudut pandang kinerja atau keamanan. Jadi, apa yang akan direkomendasikan orang, dan apakah ada perubahan konfigurasi yang harus saya segera lakukan setelah menginstal?


sumber
Untuk satu workstation, bukan? Atau apakah kita berbicara tentang LAN / ISP?
Ya, ini untuk mempercepat workstation individual, bukan untuk LAN.

Jawaban:

15
  1. Instal bind9
  2. Arahkan resolv.conf ke 127.0.0.1

Untuk melakukan ini ikuti langkah-langkah ini:

Untuk Menginstal Bind9

  1. Buka "Ubuntu Software Center" (Aplikasi-> Ubuntu Software Center)
  2. Cari bind9
  3. Periksa untuk menampilkan "Barang Teknis"
  4. Tandai bind9 dan pasang

Perbarui /etc/resolv.conf

  1. Buka Network Manager (System-> Preferences-> Network Manager)
  2. Temukan koneksi Anda dan edit (kabel atau nirkabel)
  3. Alihkan tab "konfigurasi IPV4"
  4. Pada bidang "Server DNS" tulis 127.0.0.1

Selesai!

Untuk menguji

Buka gnome-terminal (Aplikasi> Aksesori> Terminal) dan ketik

dig ubuntu.com 

(jika Anda belum memilikinya, instal paket dnsutils seperti yang dijelaskan pada bind9)

Periksa jawaban terakhir, sebagai contoh:

Permintaan pertama saya di ubuntu.com

;; Query time: **209 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:20:12 2011
;; MSG SIZE  rcvd: 196

Kueri kedua saya:

;; Query time: **0 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:18:23 2011
;; MSG SIZE  rcvd: 156

Server 127.0.0.1 berarti Anda menyelesaikan secara lokal. Lihatlah waktu permintaan (dikelilingi oleh **), yang kedua di-cache.

Lin
sumber
Terima kasih, Igor. Saya mencoba pendekatan ini dan itu bekerja dengan baik untuk pencarian nama, tetapi tampaknya tidak melakukan cache reverse lookup alamat IP. Bagaimana saya melakukan ini menggunakan bind9?
Ini tidak melakukan apa pun pada pengaturan saya. Waktu permintaan masih ~ 100ms
Ashfame
Anda berdua: jika tampaknya tidak berhasil, periksa dari server mana penggalian mengatakan bahwa ia mendapat jawabannya. Jika tidak disebutkan 127.0.0.1, maka Anda belum mengaturnya dengan benar. Catatan: Petunjuk untuk mengatur resolv.conf mungkin berbeda untuk versi Ubuntu yang berbeda.
thomasrutter
Jadi Anda menjalankan nameserver caching di kotak gui? Ya, tentu saja mungkin .. Kemungkinan besar kebanyakan ppl membaca ini akan memiliki server menginstal - dan GUI adalah opsional. Sederhana sudo apt install bind9dan sudo nano /etc/resolv.confharus ditambahkan ke jawaban Anda sebagai alternatif.
bshea
Saya melakukan segalanya tetapi setup tidak bekerja. resolv.confAkhirnya saya lakukan ke 127.0.0.1. Bisakah ini gagal? dig ubunut.commengatakan "waktu koneksi habis; tidak ada server yang bisa dijangkau"
Satya Prakash
9

Saya akan merekomendasikan dnsmasq,

Lihat tutorial yang bagus di sini; http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

Anda mungkin ingin membaca perbandingan di sini;

http://en.wikipedia.org/wiki/Comparison_of_DNS_server_software

dblang
sumber
Saya menggunakan dnsmasq untuk caching DNS. Juga disediakan pemetaan lokal dari / etc / hosts dan DHCP (opsional menggunakan / etc / ethers.)
BillThor
Saya mencoba dnsmasq dan berfungsi serta bind9 untuk caching lookup nama, tetapi tampaknya juga tidak cache alamat IP lookup. Apakah ini mungkin menggunakan dnsmasq?
1
Waspadalah Network Manager menimpa resolv.conf Anda setiap kali dimulai.
daithib8
6

"Untuk mempercepat pencarian DNS, saya ingin menginstal cache DNS atau proksi."

Baik. Tapi ada cara yang lebih mudah juga. Menggunakan OpenDNS dan / atau server nama Google akan lebih cepat daripada cache lokal Anda sendiri untuk nama-nama yang sudah ada dalam cache OpenDNS / Google. Menggunakan 208.67.222.222, 208.67.220.220, dan / atau 8.8.8.8 sebagai penyajian nama akan lebih cepat hampir sepanjang waktu. Anda dapat menguji ini dengan time nslookup www.google.com 208.67.222.222untuk menguji kecepatan pada salah satu server nama OpenDNS, time nslookup www.google.com 8.8.8.8untuk Google, atautime nslookup www.google.com 127.0.0.1 pada cache lokal Anda. Ketika saya mengatakan lebih cepat, maksud saya secara teknis lebih cepat dan tidak terlalu cepat sehingga seseorang dapat dengan mudah melihat perbedaan.

"Saya dapat melihat setidaknya tiga program yang saya pikir akan melakukan pekerjaan: bind9, pdnsd, atau dnsmasq."

Apakah Anda terbuka ke bagian dnscache dari djbdns? Instruksi di bawah ini. Padahal, itu tidak menyimpan cache tanpa patch ...

sudo apt-get remove bind9 dnsmasq-base
sudo apt-get install djbdns dnscache-run
sudo killall -9 dnsmasq
sudo update-rc.d -f bind9 remove

Maka kita harus memberi tahu sistem untuk menggunakan cache kita.

sudo gedit /etc/resolv.conf

Edit file agar terlihat seperti contoh ini. File ini menentukan server nama mana yang akan digunakan, domain default, dan akhiran pencarian. Sufiks pencarian memungkinkan untuk menjalankan kueri hanya menggunakan bagian nama host dari nama domain yang sepenuhnya memenuhi syarat. Sebagai contoh, 'nslookup www' secara otomatis menjadi 'nslookup www.example.com' ketika example.com adalah nilai dari parameter "search".

nameserver 127.0.0.1      # Use the local resolver first.
nameserver 208.67.222.222 # OpenDNS
nameserver 8.8.8.8        # Google
domain example.com
search example.com

Ini agak mewah, tetapi kita perlu mendapatkan server nama root terbaru.

sudo dnsip $(dnsqr ns . | sed -e '/answer/!d;s/\(.*\)NS \(.*\)/\2/') | sudo tee /etc/dnscache/root/servers/@

Saya pikir file resolv.conf ditimpa ketika kita menggunakan DHCP. Saya memilih untuk memberi diri saya alamat IP statis dan menghapus perangkat lunak yang menekannya, mengedit file antarmuka untuk mengatur alamat IP statis. Tetapi Anda bisa mencoba bekerja dengan Network Manager jika Anda memang cenderung.

sudo apt-get purge network-manager network-manager-gnome
sudo gedit /etc/network/interfaces

File antarmuka saya terlihat sebagai berikut, tetapi modifikasi milik Anda untuk konfigurasi Anda.

# Loopback
#
auto lo
iface lo inet loopback

# First network card (attached to NAT router, attached to cable internet)
#
auto eth0
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Sekarang mari kita mulai kembali.

sudo reboot

Sekarang Anda menggunakan resolver lokal dan server root terbaru. Tetapi Anda akan melihat jika Anda mencoba bahwa OpenDNS dan Google sebenarnya menjawab lebih cepat (untuk nama-nama yang ada dalam cache mereka, yang merupakan semua domain paling populer). Tidak ada konfigurasi tambahan yang dapat menyebabkan perangkat lunak menjadi lebih aman dari yang sudah ada.


sumber
Terima kasih Christopher. Bisakah Anda menjelaskan mengapa Google DNS lebih cepat dari cache lokal saya? Saya percaya ini cepat, tetapi bagaimana bisa lebih cepat untuk pergi jauh ke server mereka daripada pergi ke cache lokal saya?
Eric Johnson
Karena peluangnya sangat bagus sehingga sudah memiliki jawabannya tanpa harus mencarinya lagi.
@Christopher: Tapi begitu cache lokal Anda memilikinya, pencariannya instan. Jika Anda menggunakan Google DNS, Anda harus menunggu 80 ms setiap kali Anda melakukan kueri.
Zan Lynx
@Zan Lynx Ya .. jadi buat cache lokal Anda tanyakan ke Google. Woo hoo!
6
Meskipun @ user8290 ada benarnya, saya tidak akan mengatakan menggunakan GoogleDNS lebih cepat daripada yang lokal. Ya, google memiliki hasil di-cache, tetapi ayolah - jika kecepatan internasional Anda menyebalkan, tidak masalah bahkan jika Google memiliki semua hasil DNS di dunia. Jaringan lokal biasanya memiliki 100mbps + sehingga meminta server dns server lokal Anda untuk jawaban akan setidaknya 10 kali lebih cepat daripada meminta 8.8.8.8/8.8.4.4 (tergantung pada kecepatan internasional Anda). Tentu saja ini adalah dalam hal Anda memiliki hasil di-cache di server DNS Anda.
tftd
3

Saya menggunakan " dnscache " ( paket "dnscache-run" ) dan itu sangat sederhana. Tidak perlu mengkonfigurasi apa pun.
Ia menangkap petisi DNS ( port 53 ) dan cache tanggapan, saat berikutnya Linux meminta domain itu, dnscache segera mengembalikan IP.
Meskipun ada dua parameter yang dapat diubah untuk meningkatkan program ini:

echo 16000000 > /etc/sv/dnscache/env/CACHESIZE
echo 16777216 > /etc/sv/dnscache/env/DATALIMIT
Juan Simón
sumber
0

Apapun alat yang Anda gunakan, pastikan port 53 tidak diaktifkan masuk pada firewall Anda. Anda mungkin ingin hanya mengizinkan host dengan akses keluar cache.

DNSMasq mudah diatur, dan didokumentasikan dengan baik. Jika Anda menginstalnya di firewall, tentukan antarmuka yang akan diikat untuk mengecualikan antarmuka Internet.

Bind lebih sulit untuk dikonfigurasikan dan mungkin berlebihan sebagai cache untuk jaringan kecil. Saya percaya konfigurasi default hanya caching. Anda mungkin ingin menambahkan ACL untuk membatasi alamat mana yang dapat menggunakan server Anda.

BillThor
sumber
0

Paket dnscache-run memiliki paling sedikit konflik dengan paket lain, seperti libvirt, yang menggunakan bridge networking dan dnsmasq.

sudo apt-get install dnscache-run

Paket ini menghapus resolvconf (/etc/resolv.conf), dan Anda harus menggunakan / etc / network / interfaces atau manajer jaringan untuk melihat konfigurasi Anda.

rickfoosusa
sumber