การสืบค้น DNS ไม่ใช้ nscd สำหรับการแคช


10

ฉันกำลังพยายามใช้ nscd (Nameservices Cache Daemon) เพื่อแคช DNS ในเครื่องดังนั้นฉันสามารถหยุดใช้ Bind เพื่อทำมันได้ ฉันได้รับมันเริ่มและดูเหมือนว่า ntpd จะพยายามใช้มัน แต่ทุกอย่างอื่นสำหรับโฮสต์ดูเหมือนจะไม่สนใจ เช่นถ้าฉันขุด apache.org 3 ครั้งไม่มีใครจะกดแคช ฉันดูสถิติแคชโดยใช้nscd -gเพื่อพิจารณาว่ามีการใช้งานหรือไม่ ฉันได้เพิ่มระดับการบันทึกการดีบักขึ้นเพื่อดูว่าฉันสามารถเห็นการกดปุ่มหรือไม่และแม้แต่การสอบถามไม่ได้ตี nscd

nsswitch.conf

# Begin /etc/nsswitch.conf
passwd: files
group: files
shadow: files

publickey: files

hosts: cache files dns
networks: files

protocols: files
services: files
ethers: files
rpc: files

netgroup: files
# End /etc/nsswitch.confenter code here

nscd.conf

#
# /etc/nscd.conf
#
# An example Name Service Cache config file.  This file is needed by nscd.
#
# Legal entries are:
#
#       logfile                 <file>
#       debug-level             <level>
#       threads                 <initial #threads to use>
#       max-threads             <maximum #threads to use>
#       server-user             <user to run server as instead of root>
#               server-user is ignored if nscd is started with -S parameters
#       stat-user               <user who is allowed to request statistics>
#       reload-count            unlimited|<number>
#       paranoia                <yes|no>
#       restart-interval        <time in seconds>
#
#       enable-cache            <service> <yes|no>
#       positive-time-to-live   <service> <time in seconds>
#       negative-time-to-live   <service> <time in seconds>
#       suggested-size          <service> <prime number>
#       check-files             <service> <yes|no>
#       persistent              <service> <yes|no>
#       shared                  <service> <yes|no>
#       max-db-size             <service> <number bytes>
#       auto-propagate          <service> <yes|no>
#
# Currently supported cache names (services): passwd, group, hosts, services
#

    logfile                 /var/log/nscd.log
    threads                 4
    max-threads             32
    server-user             nobody
#   stat-user               somebody
    debug-level             9
#   reload-count            5
    paranoia                no
#   restart-interval        3600

    enable-cache            passwd          yes
    positive-time-to-live   passwd          600
    negative-time-to-live   passwd          20
    suggested-size          passwd          211
    check-files             passwd          yes
    persistent              passwd          yes
    shared                  passwd          yes
    max-db-size             passwd          33554432
    auto-propagate          passwd          yes

    enable-cache            group           yes
    positive-time-to-live   group           3600
    negative-time-to-live   group           60
    suggested-size          group           211
    check-files             group           yes
    persistent              group           yes
    shared                  group           yes
    max-db-size             group           33554432
    auto-propagate          group           yes

    enable-cache            hosts           yes
    positive-time-to-live   hosts           3600
    negative-time-to-live   hosts           20
    suggested-size          hosts           211
    check-files             hosts           yes
    persistent              hosts           yes
    shared                  hosts           yes
    max-db-size             hosts           33554432

    enable-cache            services        yes
    positive-time-to-live   services        28800
    negative-time-to-live   services        20
    suggested-size          services        211
    check-files             services        yes
    persistent              services        yes
    shared                  services        yes
    max-db-size             services        33554432

resolv.conf

# Generated by dhcpcd from eth0
nameserver 127.0.0.1
domain westell.com
nameserver 192.168.1.1
nameserver 208.67.222.222
nameserver 208.67.220.220

เป็นหมายเหตุด้านข้างฉันใช้ Arch Linux

หมายเหตุ: สิ่งนี้ถูกย้ายไปสองครั้งฉันไม่เคยคิดเลยว่าเพราะเหตุใดแอปยกเว้นการขุดไม่ได้กดปุ่ม nscd แคชเบราว์เซอร์ IM, IRC ทั้งหมดควรมี แต่พวกเขาไม่ได้


คุณไม่ต้องรีบูตเครื่องสำหรับ ncsd คุณสามารถล้างมันหรือรีสตาร์ทบริการใช้งานได้สำหรับฉัน

คำตอบ:


14

สาเหตุที่คุณพลาดแคชที่พบคือการขุดเคียวรี DNS โดยตรง คุณสามารถลองและดูว่าแคชทำงานกับgetentคำสั่ง:

getent hosts host.example.com

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

Nscd นั้นเป็น caching daemon สำหรับฟังก์ชั่น NSS ดังนั้นโฟกัสจึงแตกต่างจากเนมเซิร์ฟเวอร์แคชดั้งเดิม ดังนั้นหากคุณต้องการเนมเซิร์ฟเวอร์แคชให้ใช้อย่างอื่นที่ไม่ใช่ nscd หากคุณต้องการแคชสิ่งต่าง ๆ เช่นชื่อผู้ใช้ที่ใช้ร่วมกันและโฮสต์ข้อมูลนอกระบบ DNS ปกติให้ไปที่ nscd

และสำหรับบันทึกฉันได้เพิ่มพูน Powerdns resolver (pdns-resolver)


แต่ไม่ควรมีสิ่งอื่นนอกเหนือจากที่ขุดดูเหมือนจะใช้หรือไม่ นี่คือระบบเดสก์ท็อป ฉันรู้ว่าซอฟต์แวร์บางตัว (เช่นผู้จัดการแพ็คเกจของฉัน) ไม่ได้ใช้แคชของตัวเอง
xenoterracide

นอก ISP ของฉันนี่เป็นคอมพิวเตอร์เพียงเครื่องเดียวในเครือข่าย;) ฉันแค่พยายามหลีกเลี่ยงเวลาแฝงเนื่องจากการเชื่อมต่อของฉันช้า
xenoterracide

2
ซอฟแวร์อื่น ๆ ควรจะตีแคช nscd เพียงให้แน่ใจว่าคุณรีสตาร์ทซอฟต์แวร์หลังจากเริ่ม nscd

ฉันรีบูตระบบ .... เฉพาะซอฟต์แวร์ที่ดูเหมือนจะพยายามใช้ nscd คือ ntp
xenoterracide

3

คุณไม่มีการกำหนดค่าโฮสต์ใน nscd.conf ฉันโพสต์ของฉันเป็นตัวอย่าง:

enable-cache            hosts           yes
positive-time-to-live   hosts           3600
negative-time-to-live   hosts           20
suggested-size          hosts           211
check-files             hosts           yes
persistent              hosts           yes
shared                  hosts           yes
max-db-size             hosts           33554432

นี้จะทำลายบางสิ่ง ข้อมูลต่อไปนี้มาจากแพ็คเกจ Debian:

  Since this release, hosts caching in nscd is off by default: for some of the
  libc calls (gethostby* calls) nscd does not respect the DNS TTLs.  It can
  lead to system lockups (e.g. if you are using pam-ldap and change the IP of
  your authentication server) hence is not considered safe.

  See debian bug #335476 and how upstream answered to that in
  http://sourceware.org/bugzilla/show_bug.cgi?id=4428.

 -- Pierre Habouzit <madcoder@debian.org>  Sat, 28 Apr 2007 11:10:56 +0200

2
ที่จริงฉันมีสิ่งนี้คุณเพียงแค่ต้องเลื่อนไฟล์ในคำถาม
xenoterracide

2

ฉันไม่รู้มากเกี่ยวกับ nscd ยกเว้นว่ามันมักจะทำให้เกิดปัญหากับการค้นหา DNS ที่ฉันปิดการใช้งานเสมอ (หรืออย่างน้อยที่สุดการค้นหาโฮสต์เป็นส่วนหนึ่งของมัน) Nscd ช่วยให้คุณสามารถตั้งค่า time-to-live และฉันรู้ว่า DNS คาดว่าจะ "เป็นเจ้าของ" ค่าเหล่านั้นและผู้แก้ปัญหาทุกคนให้เกียรติพวกเขา คุณสามารถจบลงด้วยผลลัพธ์แปลก ๆ หากไม่ได้รับ TTL ใน DNS คำแนะนำของฉันคือไม่ใช้ nscd สำหรับการแคช DNS ดูเหมือนว่าคุณมีแคชชื่อเซิร์ฟเวอร์ที่ทำงานอยู่ในกล่องท้องถิ่นของคุณดังนั้นไม่จำเป็นต้องแคช DNS lookups สองครั้ง


ฉันหวังว่าจะปิดการใช้งานแม้ว่ามันจะไม่สำคัญ (กล่องของฉันมีประสิทธิภาพมาก แต่น้ำหนักของการผูกสำหรับการแคชไม่ใช่ปัญหา) นี่เป็นเพียงส่วนหนึ่งของการเรียนรู้สิ่งใหม่ การไม่สามารถทำงานให้เป็นเรื่องที่น่ารำคาญได้
xenoterracide

1

nscd ไม่น่าเชื่อถือสำหรับทุกสิ่งไม่ใช่แค่ DNS มันคุ้มค่าที่จะหลีกเลี่ยงถ้าคุณไม่ต้องการมันด้วยเหตุผลบางอย่าง คุณควรใช้ daemon การแคช DNS ที่สร้างขึ้นโดยมีวัตถุประสงค์ถ้าคุณต้องการแคช DNS ในเครื่อง (ซึ่งเป็นแนวคิดที่ดี!)

สองรายการโปรดของฉันมีdnsmasqและdnscache จาก djbdns


ในการใช้ nscd คุณต้องเข้าใจวิธีการทำงานก่อนว่าเป็นระบบแคชของระบบไม่ใช่ daemon แคช DNS ธรรมดา
higuita

1

หากมีการแคช DNS ในนรกให้บริการโดย nscd อย่า ใช้. มัน.

ความแตกต่าง: pdnsdเป็นสิ่งที่ดีมากสำหรับการทดแทน หรือ unscd (ใช้อย่างน้อยที่สุดใน openSUSE)


+1 นี่ สำหรับเครือข่ายขนาดเล็ก NSCD หรือสถานที่ที่มีเซิร์ฟเวอร์ DNS ที่น่ากลัวนี่เป็น PITA ที่ร้ายแรง นี่เป็นหนึ่งในสาเหตุที่พบบ่อยที่สุดที่ฉันเห็น "มือใหม่" รีบูทเซิร์ฟเวอร์ Linux & Solaris ทุกที่ที่ฉันทำงาน
สัญญาณ 15

1
ลิงก์ไปที่pdnsdไม่ทำงาน บางทีนี่อาจเป็นลิงก์ที่ดีแทน: members.home.nl/parombouts/pdnsd
Ehtesh Choudhury

1

ฉันต้องการเพิ่มว่าเมื่อคุณแบ่งปันการเปิดใช้งานสถิติของคุณจะไม่สะท้อนอย่างถูกต้อง:

โฮสต์ที่ใช้ร่วมกันใช่

http://prefetch.net/blog/index.php/2006/02/08/viewing-name-service-cache-statistics/

ฉันไม่เห็นใครพูดถึงเรื่องนี้และฉันใช้เวลาพอสมควรที่จะคิดออกว่าทำไมอัตราการคลิกของฉันถึงแสดงเป็น 0%

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