
저는 호스팅을 위해 설정된 새 도메인이 올바르게 구성되었는지 확인하는 데 사용되는 애플리케이션을 작업 중입니다. 이 중 일부는 SPF, DomainKey, DKIM 레코드 등의 유효성을 확인합니다.
현재 대부분의 레코드에 대해 1시간의 기본 TTL을 사용합니다. 때때로 기록 중 하나에서 실수가 발견되어 업데이트가 필요합니다. 현재 도메인을 방금 테스트한 경우 시스템 확인자의 캐시된 레코드가 만료될 때까지 기다려야 내 애플리케이션에서 해당 레코드가 올바른지 확인할 수 있습니다. (예, 수동으로 확인할 수 있지만 신청서를 작성했기 때문에 그럴 필요가 없습니다.)
5분 등 설정된 시간 내에 레코드가 만료되거나 전혀 캐시되지 않는다는 점을 제외하고 일반 캐싱 확인자 역할을 하도록 시스템에 DNS 서버를 설정하고 싶습니다. 모든 도메인이 내 일반 이름 서버에 DNS를 호스팅하는 것은 아니므로 이 시스템은 업스트림 확인자(캐시된 레코드만 사용함)를 사용하는 대신 도메인에 대해 권한 있는 이름 서버를 쿼리해야 합니다.
이 컴퓨터는 현재 어떤 종류의 DNS도 실행하고 있지 않으므로 BIND나 djbdns(또는 좋은 제안이 있으면 다른 것을 설치할 수 있습니다.)
답변1
귀하의 의견과 제안에 감사드립니다. 그들은 나에게 다음 해결책을 지시했습니다.
- 바인드9를 설치합니다.
/etc/bind/named.conf.options
전달자가 비어 있도록 편집하십시오 (그래서 서버는 다른 캐싱 서버의 캐시된 레코드를 사용하지 않습니다).max-cache-ttl
및max-ncache-ttl
옵션을 300초로 설정합니다 . (참조)- 다른 시스템에서 서버를 사용하지 않도록 변경합니다
listen-on-v6 { any; };
.listen-on-v6 { localhost; };
(참조) - 서버의 앱이 새 로컬 서버를 사용
/etc/resolv.conf
하도록 시스템을 편집하세요 .nameserver 127.0.0.1
Bind9을 다시 시작하고 작동하는지 확인했습니다.
dev:~# dig serverfault.com
; <<>> DiG 9.5.1-P2 <<>> serverfault.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63591
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;serverfault.com. IN A
;; ANSWER SECTION:
serverfault.com. 300 IN A 69.59.196.212
;; AUTHORITY SECTION:
serverfault.com. 300 IN NS ns21.domaincontrol.com.
serverfault.com. 300 IN NS ns22.domaincontrol.com.
;; Query time: 190 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jul 18 03:06:24 2009
;; MSG SIZE rcvd: 101
serverfault.com의 레코드에 게시된 TTL이 3600인데도 TTL이 300으로 표시됩니다.
답변2
+trace를 많이 사용하여 "dig"를 호출하면 됩니다...
Dig는 DNS 서버처럼 작동하여 전체 재귀를 수행하고 현금화하지 않으며 NS 서버를 미리 알 필요가 없으며 위임 문제가 있는 경우에도 이를 발견할 수 있습니다.
Windows 프로그램인 경우 여기에서 Bind를 다운로드할 수 있습니다.https://www.isc.org/download/그리고 여기에는 dig.exe가 포함되어 있습니다. Linux에는 일반적으로 dig가 포함된 BIND 도구나 명명된 도구 패키지가 있습니다.
조회를 위해 전체 DNS 서버를 설치하는 중... 미쳤어요!
$ dig www.google.com +trace +nodnssec -4
; <<>> DiG 9.11.9 <<>> www.google.com +trace +nodnssec -4
;; global options: +cmd
...
...
google.com. 172800 IN NS ns4.google.com.
;; Received 291 bytes from 192.48.79.30#53(j.gtld-servers.net) in 22 ms
www.google.com. 300 IN A 172.217.10.228
;; Received 59 bytes from 216.239.32.10#53(ns1.google.com) in 30 ms
답변3
djbdns 제품군의 dnscache를 사용하고 5분마다 종료하면 어떨까요?
djbdns, 특히 dnscache를 사용해 본 적이 없는 분들을 위해 말씀드리면, 이는 디스크에 아무것도 보관하지 않는 재귀적 확인자입니다. 또한 djb는 프로그램을 자동으로 모니터링하는 도구 모음을 만들었고, 프로그램이 종료되면 모니터링 프로그램이 자동으로(그리고 즉시) 다시 시작합니다.
5분마다 죽여버리면 밥이 네 삼촌이야...
답변4
말씀하신 대로 BIND 옵션 절이나 개발 서버에만 적용되는 보기에서 max-cache-ttl
및 를 사용하여 가장 긴 TTL을 제한할 수 있습니다.max-ncache-ttl
그러나 이는 모든 조회의 TTL에 영향을 미치므로 프로덕션 서버의 네트워크/로드가 증가하고 DNS 복원력이 감소합니다.
BIND 9.3 이상의 경우 하나의 도메인에 대한 캐시만 지우려면 다음을 수행하십시오.
rndc flushname <domain>
그러면 하위 도메인이 아닌 정확한 도메인에 대한 모든 레코드가 플러시됩니다. 의 출력을 참조하십시오 rndc
.
물론, 원한다면길게 하다어떤 이유로든 TTL, 즉다른 질문.