캐싱에 nscd를 사용하지 않는 DNS 쿼리


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

나는 일종의 부수적으로 아치 리눅스를 사용하고 있습니다.

참고 : 이것은 두 번 옮겨졌으며, 발굴을 제외한 앱이 왜 nscd 캐시, 브라우저, IM, IRC에 충돌하지 않았는지 알지 못했습니다.


ncsd를 위해 머신을 재부팅 할 필요가 없습니다. 머신을 플러시하거나 서비스를 다시 시작할 수 있습니다.

답변:


14

캐시 적중이 누락 된 이유는 dig가 DNS를 직접 쿼리하기 때문입니다. 캐시가 다음 getent명령으로 작동하는지 확인할 수 있습니다 .

getent hosts host.example.com

별도의 캐싱 DNS를 실행하는 것이 좋지만 가능하면 네트워크 수준에서 실행하는 것을 고려해야합니다. 각 호스트가 데이터를 개별적으로 캐시하는 경우 동일한 호스트에 대해 여러 개의 쿼리를 계속 실행합니다. 단일 캐시는이 문제를 해결합니다.

Nscd 자체는 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

이것은 몇 가지를 망칠 것입니다. 다음 정보는 데비안 패키지입니다 :

  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를 사용하면 유효 기간 값을 설정할 수 있으며 DNS는 해당 값을 "소유"하고 모든 리졸버가이를 존중하도록합니다. DNS의 TTL을 준수하지 않으면 이상한 결과가 발생할 수 있습니다. DNS 캐싱에 nscd를 사용하지 않는 것이 좋습니다. 로컬 상자에서 캐싱 이름 서버가 이미 실행중인 것 같습니다. 따라서 DNS 조회를 두 번 캐시 할 필요가 없습니다.


실제로 중요하지는 않지만 비활성화 할 수 있기를 바랐습니다. 내 상자가 너무 강력하여 캐싱을위한 바인딩의 무게는 문제가되지 않습니다. 이것은 부분적으로 새로운 것을 배우는 문제입니다. 작동시키지 못하는 것은 약간 성가신 일입니다.
xenoterracide

1

nscd는 DNS뿐만 아니라 모든 것에 신뢰할 수 없습니다. 어떤 이유로 든 필사적으로 필요하지 않으면 피할 가치가 있습니다. DNS를 로컬로 캐시하려면 (좋은 아이디어입니다) 전용 DNS 캐싱 데몬을 사용해야합니다.

내가 가장 좋아하는 두 가지는 djnsns의 dnsmasqdnscache입니다 .


nscd를 사용하려면 먼저 작동 방식을 이해해야합니다. 그것이 일반 dns 캐시 데몬 이 아니라 시스템 캐시 시스템 이라는 것을 이해해야합니다.
higuita

1

Hell에 DNS 캐싱이 있으면 nscd에서 제공합니다. 하지마 사용하다. 그것.

그냥 다를 수 : pdnsd은 실제로 아주 좋은 대체합니다. 또는 unscd (적어도 기본적으로 openSUSE에서 사용됨).


+1이. 소규모 네트워크 NSCD 또는 끔찍한 DNS 서버가있는 장소의 경우 심각한 PITA입니다. 이것은 내가 일했던 어느 곳에서나 "초보자들"이 Linux & Solaris 서버를 재부팅하는 가장 흔한 이유 중 하나 여야합니다.
Signal15

1
링크 pdnsd가 다운되었습니다. 아마도 이것은 좋은 링크 일 것입니다 : members.home.nl/parombouts/pdnsd
Ehtesh Choudhury

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.