วิธีที่ดีที่สุดในการตั้งค่าการแคช DNS


28

เพื่อเพิ่มความเร็วในการค้นหา DNS ฉันต้องการติดตั้งแคช DNS หรือพร็อกซี

ฉันสามารถดูโปรแกรมอย่างน้อยสามโปรแกรมที่ฉันคิดว่าจะทำงาน: bind9, pdnsd หรือ dnsmasq

ฉันต้องการตรวจสอบให้แน่ใจว่าถ้าฉันติดตั้งหนึ่งในฉันไม่ปล่อยให้มันกำหนดค่าไม่ดีจากประสิทธิภาพหรือมุมมองความปลอดภัย ดังนั้นสิ่งที่ผู้คนจะแนะนำและมีการเปลี่ยนแปลงการกำหนดค่าใด ๆ ที่ฉันควรทำทันทีหลังจากติดตั้ง?


สำหรับเวิร์กสเตชันเดียวใช่ไหม หรือเรากำลังพูดถึง LAN / ISP?

ใช่นี่คือเพื่อเพิ่มความเร็วให้กับเวิร์กสเตชันแต่ละเครื่องไม่ใช่สำหรับ LAN

คำตอบ:


15
  1. ติดตั้ง bind9
  2. ชี้ resolv.conf ไปที่ 127.0.0.1

ให้ทำตามขั้นตอนนี้:

เพื่อติดตั้ง Bind9

  1. เปิด "Ubuntu Software Center" (Applications-> Ubuntu Software Center)
  2. ค้นหา bind9
  3. ตรวจสอบเพื่อแสดง "รายการทางเทคนิค"
  4. ทำเครื่องหมาย bind9 และติดตั้ง

อัปเดต /etc/resolv.conf

  1. Open Network Manager (ระบบ -> ค่ากำหนด -> ตัวจัดการเครือข่าย)
  2. ค้นหาการเชื่อมต่อของคุณและแก้ไข (แบบมีสายหรือไร้สาย)
  3. สลับแท็บ "การกำหนดค่า IPV4"
  4. ในช่อง "เซิร์ฟเวอร์ DNS" ให้เขียน 127.0.0.1

มันจบแล้ว!

ทดสอบ

เปิด gnome-terminal (แอปพลิเคชั่น> อุปกรณ์เสริม> เทอร์มินัล) และประเภท

dig ubuntu.com 

(ถ้าคุณไม่มีให้ติดตั้งแพ็คเกจ dnsutils ตามที่อธิบายไว้เพื่อ bind9)

ตรวจสอบคำตอบสุดท้ายเป็นตัวอย่าง:

แบบสอบถามแรกของฉันที่ 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

ข้อความค้นหาที่สองของฉัน:

;; 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

เซิร์ฟเวอร์ 127.0.0.1 หมายความว่าคุณกำลังแก้ไขภายในเครื่อง ดูเวลาสอบถาม (ล้อมรอบด้วย **) ส่วนที่สองถูกแคช


ขอบคุณอิกอร์ ฉันลองใช้วิธีนี้และใช้งานได้ดีกับการค้นหาชื่อ แต่ดูเหมือนจะไม่แคชการค้นหาที่อยู่ IP ย้อนกลับ ฉันจะทำสิ่งนี้โดยใช้ bind9 ได้อย่างไร

สิ่งนี้ไม่ได้ทำอะไรในการตั้งค่าของฉัน เวลาสืบค้นยังคงอยู่ ~ 100ms
Ashfame

คุณทั้งคู่: ถ้ามันไม่ทำงานตรวจสอบสิ่งที่เซิร์ฟเวอร์ขุดบอกว่ามันได้รับคำตอบจาก หากไม่ได้บอกว่า 127.0.0.1 แสดงว่าคุณยังไม่ได้ตั้งค่าอย่างถูกต้อง หมายเหตุ: คำแนะนำสำหรับการตั้งค่า resolv.conf อาจแตกต่างกันไปสำหรับ Ubuntu รุ่นต่าง ๆ
thomasrutter

ดังนั้นคุณใช้แคชเนมเซิร์ฟเวอร์ในกล่อง gui หรือไม่ ใช่เป็นไปได้แน่นอน .. มากกว่าการอ่าน ppl ส่วนใหญ่แล้วจะมีการติดตั้งเซิร์ฟเวอร์ - และ GUI เป็นตัวเลือก ง่ายsudo apt install bind9และsudo nano /etc/resolv.confควรเพิ่มคำตอบของคุณเป็นทางเลือก
bshea

ฉันทำทุกอย่างแล้ว แต่การตั้งค่าไม่ทำงาน ฉันresolv.confไปที่ 127.0.0.1 ในที่สุด มันล้มเหลวหรือไม่ dig ubunut.comบอกว่า "การเชื่อมต่อหมดเวลาไม่สามารถเข้าถึงเซิร์ฟเวอร์"
Satya Prakash

9

ฉันจะแนะนำ dnsmasq,

ดูการสอนที่ดีที่นี่; http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

คุณอาจต้องการอ่านการเปรียบเทียบที่นี่;

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


ฉันใช้ dnsmasq สำหรับการแคช DNS นอกจากนี้ยังมีการแมปท้องถิ่นจาก / etc / hosts และ DHCP (อาจเลือกใช้ / etc / ethers)
BillThor

ฉันลอง dnsmasq และมันทำงานได้ดีเช่นเดียวกับ bind9 สำหรับการค้นหาชื่อแคช แต่มันก็ดูเหมือนจะไม่ได้ทำการค้นหาที่อยู่ IP เป็นไปได้นี้ใช้ dnsmasq?

1
ระวัง Network Manager เขียนทับ resolv.conf ของคุณทุกครั้งที่เริ่มทำงาน
daithib8

6

"เพื่อเพิ่มความเร็วในการค้นหา DNS ฉันต้องการติดตั้งแคช DNS หรือพร็อกซี"

ตกลง. แต่ก็มีวิธีที่ง่ายกว่าเช่นกัน การใช้เซิร์ฟเวอร์ชื่อ OpenDNS และ / หรือ Google จะเร็วกว่าแคชท้องถิ่นของคุณสำหรับชื่อที่มีอยู่แล้วในแคช OpenDNS / Google การใช้ 208.67.222.222, 208.67.220.220 และ / หรือ 8.8.8.8 เนื่องจากชื่อบริการจะเร็วขึ้นเกือบตลอดเวลา คุณสามารถทดสอบสิ่งนี้ด้วยtime nslookup www.google.com 208.67.222.222เพื่อทดสอบความเร็วบนหนึ่งในเซิร์ฟเวอร์ชื่อ OpenDNS time nslookup www.google.com 8.8.8.8สำหรับ Google หรือtime nslookup www.google.com 127.0.0.1แคชท้องถิ่นของคุณ เมื่อฉันพูดเร็วขึ้นฉันหมายถึงเทคนิคเร็วกว่าและไม่เร็วกว่านั้นมากพอที่คน ๆ หนึ่งจะสังเกตเห็นความแตกต่างได้อย่างง่ายดาย

"ฉันเห็นโปรแกรมอย่างน้อยสามโปรแกรมที่ฉันคิดว่าจะทำงาน: bind9, pdnsd หรือ dnsmasq"

คุณเปิดส่วน dnscache ของ djbdns หรือไม่? คำแนะนำด้านล่าง แม้ว่าจะไม่บันทึกแคชหากไม่มีแพทช์ ...

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

จากนั้นเราจะต้องแจ้งให้ระบบใช้แคชของเรา

sudo gedit /etc/resolv.conf

แก้ไขไฟล์เพื่อให้ดูเหมือนกับตัวอย่างนี้ ไฟล์นี้กำหนดเซิร์ฟเวอร์ชื่อที่จะใช้โดเมนเริ่มต้นและคำต่อท้ายการค้นหา ส่วนต่อท้ายการค้นหาทำให้สามารถเรียกใช้คิวรีได้โดยใช้เฉพาะส่วนชื่อโฮสต์ของชื่อโดเมนที่ผ่านการรับรองโดยสมบูรณ์ สำหรับ exmaple 'nslookup www' จะกลายเป็น 'nslookup www.example.com' โดยอัตโนมัติเมื่อ example.com เป็นค่าของพารามิเตอร์ "ค้นหา"

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

นี่เป็นเรื่องแปลก แต่เราจำเป็นต้องได้รับเซิร์ฟเวอร์ชื่อรูทล่าสุด

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

ฉันคิดว่าไฟล์ resolv.conf ถูกเขียนทับเมื่อเราใช้ DHCP ฉันเลือกที่จะให้ที่อยู่ IP แบบคงที่กับตัวเองและลบซอฟต์แวร์ที่ลบออกแล้วแก้ไขไฟล์อินเตอร์เฟสเพื่อตั้งค่าที่อยู่ IP แบบคงที่ แต่คุณสามารถลองใช้งาน Network Manager ได้หากคุณมีความโน้มเอียง

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

ไฟล์อินเตอร์เฟสของฉันมีลักษณะดังต่อไปนี้ แต่ปรับเปลี่ยนการตั้งค่าของคุณ

# 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

ตอนนี้เรามาเริ่มกันใหม่

sudo reboot

ตอนนี้คุณกำลังใช้ตัวแก้ไขโลคัลและเซิร์ฟเวอร์รูทล่าสุด แต่คุณจะสังเกตเห็นว่าคุณลองใช้ OpenDNS และ Google ที่จริงแล้วตอบเร็วกว่า (สำหรับชื่อที่อยู่ในแคชของพวกเขาซึ่งเป็นโดเมนยอดนิยมทั้งหมด) ไม่มีการกำหนดค่าเพิ่มเติมที่อาจทำให้ซอฟต์แวร์มีความปลอดภัยมากกว่าเดิม


ขอบคุณคริสโตเฟอร์ คุณช่วยอธิบายได้ไหมว่าทำไม DNS ของ Google ถึงเร็วกว่าแคชในเครื่องของฉัน ฉันเชื่อว่ามันเร็ว แต่จะเร็วไปยังเซิร์ฟเวอร์ของพวกเขาได้อย่างไรมากกว่าไปที่แคชในตัวเครื่องของฉัน
Eric Johnson

เพราะโอกาสดีมากที่มีคำตอบอยู่แล้วโดยไม่ต้องมองหามันอีก

@ คริสโตเฟอร์: แต่เมื่อแคชในเครื่องของคุณมีการค้นหาก็จะปรากฏขึ้นทันที หากคุณใช้ Google DNS คุณต้องรอ 80 ms ทุกครั้งที่คุณค้นหา
Zan Lynx

@Zan Lynx Yeah .. ทำให้แคชในประเทศของคุณถาม Google Woo-ฮู!

6
แม้ว่า @ user8290 จะมีจุดหนึ่ง แต่ฉันจะไม่พูดว่าการใช้ GoogleDNS นั้นเร็วกว่า local local ใช่ google มีผลการแคช แต่มา - ถ้าความเร็วระหว่างประเทศของคุณ sucks มันไม่สำคัญแม้ว่า Google จะมีผลลัพธ์ DNS ทั้งหมดในโลก เครือข่ายท้องถิ่นมักจะมี 100mbps + ดังนั้นการขอคำตอบเซิร์ฟเวอร์ dns เครือข่ายท้องถิ่นของคุณจะเร็วกว่าอย่างน้อย 10 เท่ากว่าการขอ 8.8.8.8/8.8.4.4.4 (ขึ้นอยู่กับความเร็วสากลของคุณ) แน่นอนว่านี่เป็นข้อตกลงที่คุณเก็บผลลัพธ์ไว้ในเซิร์ฟเวอร์ DNS
tftd

3

ฉันใช้ " dnscache " ( แพ็คเกจ "dnscache-run" ) และมันง่ายมาก ไม่จำเป็นต้องกำหนดค่าอะไร
มันจับคำร้อง DNS ( พอร์ต 53 ) และแคชการตอบสนองในครั้งต่อไปที่ Linux ขอโดเมนนั้น dnscache ส่งคืน IP ทันที
แม้ว่าจะมีพารามิเตอร์สองตัวที่สามารถเปลี่ยนแปลงได้เพื่อปรับปรุงโปรแกรมนี้:

echo 16000000 > /etc/sv/dnscache/env/CACHESIZE
echo 16777216 > /etc/sv/dnscache/env/DATALIMIT

0

เครื่องมือใดก็ตามที่คุณใช้ตรวจสอบว่าพอร์ต 53 ไม่ได้เปิดใช้งานเข้ามาในไฟร์วอลล์ คุณอาจต้องการอนุญาตให้เฉพาะโฮสต์ที่มีการเข้าถึงขาออกแคช

DNSMasq นั้นง่ายต่อการติดตั้งและบันทึกไว้อย่างดี หากคุณติดตั้งไว้ในไฟร์วอลล์ให้ระบุอินเทอร์เฟซที่ผูกไว้เพื่อไม่รวมอินเทอร์เฟซอินเทอร์เน็ต

การเชื่อมโยงนั้นยากต่อการกำหนดค่าและอาจเกินความจำเป็นสำหรับเป็นแคชสำหรับเครือข่ายขนาดเล็ก ฉันเชื่อว่าการกำหนดค่าเริ่มต้นคือการแคชเท่านั้น คุณอาจต้องการเพิ่ม ACL เพื่อ จำกัด ที่อยู่ที่สามารถใช้เซิร์ฟเวอร์ของคุณ


0

แพ็คเกจ dnscache-run มีความขัดแย้งน้อยที่สุดกับแพ็คเกจอื่น ๆ เช่น libvirt ซึ่งใช้การเชื่อมต่อเครือข่ายบริดจ์และ dnsmasq

sudo apt-get install dnscache-run

แพ็คเกจนี้ลบ resolvconf (/etc/resolv.conf) และคุณจะต้องใช้ / etc / network / interfaces หรือตัวจัดการเครือข่ายเพื่อดูการกำหนดค่าของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.