DNS 캐싱을 설정하는 가장 좋은 방법은 무엇입니까?


28

DNS 조회 속도를 높이기 위해 DNS 캐시 또는 프록시를 설치하고 싶습니다.

bind9, pdnsd 또는 dnsmasq와 같이 작업을 수행 할 것으로 생각되는 프로그램이 3 개 이상 있습니다.

설치 중 하나를 성능 또는 보안 관점에서 잘못 구성하지 않도록하십시오. 그렇다면 사람들이 무엇을 추천하고 설치 직후에 구성을 변경해야합니까?


하나의 워크 스테이션에 맞습니까? 아니면 LAN / ISP를 말하는가?

예, 이것은 LAN이 아닌 개별 워크 스테이션의 속도를 높이기위한 것입니다.

답변:


15
  1. bind9 설치
  2. resolv.conf를 127.0.0.1로 지정하십시오.

이렇게하려면 다음 단계를 수행하십시오.

Bind9를 설치하려면

  1. "Ubuntu Software Center"(응용 프로그램-> Ubuntu Software Center)를 엽니 다.
  2. bind9 검색
  3. "기술 항목"이 표시되는지 확인
  4. bind9를 표시하고 설치하십시오.

/etc/resolv.conf 업데이트

  1. 네트워크 관리자를 엽니 다 (시스템-> 환경 설정-> 네트워크 관리자)
  2. 연결을 찾아서 편집 (유선 또는 무선)
  3. "IPV4 구성"탭 전환
  4. "DNS 서버"필드에 127.0.0.1을 작성하십시오.

끝났다!

테스트

그놈 터미널을 열고 (응용 프로그램> 액세서리> 터미널) 유형

dig ubuntu.com 

(없는 경우, bind9에 설명 된대로 dnsutils 패키지를 설치하십시오)

예를 들어 마지막 답변을 확인하십시오.

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 상자에서 캐싱 네임 서버를 실행하고 있습니까? 그렇습니다. 물론 가능합니다.이 글을 읽는 대부분의 사람들은 서버를 설치하게되며 GUI는 선택 사항입니다. 간단 sudo apt install bind9하고 sudo nano /etc/resolv.conf대안으로 답변에 추가해야합니다.
bshea

나는 모든 것을했지만 설정이 작동하지 않습니다. 나는 resolv.conf마침내 127.0.0.1을했다. 이것이 실패 할 수 있습니까? dig ubunut.com; "어떤 서버에 도달 할 수 없었다 연결 시간이 초과되었습니다"라고
사티 야 프라 카쉬

9

dnsmasq를 추천합니다.

여기에 좋은 튜토리얼을보십시오; http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

여기에서 비교를 읽고 싶을 수도 있습니다.

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


DNS 캐싱에 dnsmasq를 사용합니다. 또한 / etc / hosts 및 DHCP (선택적으로 / etc / ethers를 사용)에서 로컬 매핑을 제공했습니다
BillThor

dnsmasq를 시도했는데 이름 조회를 캐싱하기 위해 bind9뿐만 아니라 작동하지만 IP 주소 조회를 캐시하지 않는 것 같습니다. dnsmasq를 사용하여 가능합니까?

1
resolv.conf를 시작할 때마다 덮어 쓰는 Network Manager에주의하십시오.
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.222OpenDNS 네임 서버 중 하나, time nslookup www.google.com 8.8.8.8Google 또는 time nslookup www.google.com 127.0.0.1로컬 캐시에서 속도를 테스트하기 위해이 기능 을 테스트 할 수 있습니다 . 내가 더 빨리 말할 때, 나는 기술적으로 더 빠르며 너무 빠르지 않다는 것을 의미합니다.

"제 생각에 bind9, pdnsd 또는 dnsmasq의 세 가지 프로그램을 볼 수 있습니다."

djbdns의 dnscache 부분에 열려 있습니까? 아래 지침. 그러나 패치없이 캐시를 저장하지는 않습니다 ...

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

이 예제와 같이 파일을 편집하십시오. 이 파일은 사용할 이름 서버, 기본 도메인 및 검색 접미사를 정의합니다. 검색 접미어를 사용하면 정규화 된 도메인 이름의 호스트 이름 부분 만 사용하여 쿼리를 실행할 수 있습니다. 예를 들어 example.com이 "search"매개 변수의 값인 경우 'nslookup www'는 자동으로 'nslookup www.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/@

DHCP를 사용할 때 resolv.conf 파일을 덮어 씁니다. 정적 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이 실제로 응답 속도가 더 빠르다는 것을 알게 될 것입니다 (캐시에있는 이름, 가장 인기있는 도메인). 소프트웨어가 더 안전한 상태로 만들 수있는 추가 구성이 없습니다.


고마워 크리스토퍼. Google DNS가 로컬 캐시보다 빠른 이유를 설명 할 수 있습니까? 나는 그것이 빠르다고 믿지만 로컬 캐시로가는 것보다 서버로가는 것이 더 빠를 수 있습니까?
Eric Johnson

다시 찾을 필요없이 이미 해답을 얻을 가능성이 매우 높기 때문입니다.

@Christopher : 그러나 일단 로컬 캐시에 저장되면 검색이 즉시 이루어집니다. Google DNS를 사용하는 경우 쿼리를 수행 할 때마다 80ms를 기다려야합니다.
Zan Lynx

@Zan Lynx Yeah .. 지역 캐시에 Google에 문의하도록합니다. 우후!

6
@ user8290에 요점이 있지만 GoogleDNS를 사용 하는 것이 로컬 보다 빠르다고는 말할 수 없습니다 . 네, 구글은 결과를 캐싱하지만, 국제 속도가 빨라지면 구글이 모든 DNS 결과를 세계에 가지고 있더라도 상관 없습니다. 로컬 네트워크는 일반적으로 100mbps 이상이므로 로컬 네트워크 DNS 서버에 요청하는 것이 8.8.8.8/8.8.4.4 (국제 속도에 따라)보다 10 배 이상 빠릅니다. 물론 이것은 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 패키지는 브리지 네트워킹과 dnsmasq를 사용하는 libvirt와 같은 다른 패키지와 충돌이 가장 적었습니다.

sudo apt-get install dnscache-run

이 패키지는 resolvconf (/etc/resolv.conf)를 제거하며, 구성을 보려면 / etc / network / interfaces 또는 네트워크 관리자를 사용해야합니다.

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