DNS 캐시

프로토콜 및 표준
반복 조회를 빠르게 하기 위해 리졸버나 클라이언트가 DNS 조회 결과를 임시 저장하는 기능입니다.
← 용어집으로 돌아가기

DNS 캐시는 무엇입니까?

DNS 캐싱은 해결자, 운영 체제, 브라우저 및 응용 프로그램에 의해 DNS 쿼리 결과의 임시 저장입니다. DNS 조회가 수행되면, 결과는 기록의 TTL (Time To Live)에 의해 정의된 기간 동안 캐시되어, 같은 도메인에 대한 후속 요청을 허용하여 저자 서버 쿼리없이 즉시 응답 할 수 있습니다.

DNS 캐싱 매트릭스

캐싱없이, 모든 단일 웹 요청은 전체 DNS 조회를 필요로 할 것입니다 - 늦게 추가하고 대규모 DNS 트래픽을 생성. DNS 캐싱 제공:

DNS 캐싱 작동 방법

캐싱 Hierarchy

DNS 캐싱은 여러 수준에서 발생합니다.

Browser Cache (seconds to minutes)

OS Cache (seconds to minutes)

Local Resolver Cache (minutes to hours)

ISP Resolver Cache (minutes to hours)

Authoritative Name Server (source of truth)

Cache 조회 과정

1. 사용자 요청 example.com

2. Browser 검사 캐시

3. , OS 체크 캐시

4. 놓친 경우, 해결자는 캐시

5. 놓친 경우, recursive query 서버

6. 결과 캐시 TTL 기반 각 수준에서

7. Response 반환 사용자

TTL 기반 만료

각 DNS 레코드에는 TTL 값이 포함되어 있습니다.

example.com.    300    IN    A    203.0.113.50

^^^

TTL in seconds (5 minutes)

Caches는 300 초 동안이 레코드를 저장하고, 그 후에 그것을 삭제합니다. 다음 쿼리는 신선한 검색을 트리거합니다.

DNS 캐시 레이어

브라우저 캐시

현대 브라우저 캐시 DNS 결과는 독립적으로:

Chrome: 자체 DNS 캐시 사용 (chrome://net-internals/#dns) Firefox: 내부 캐시 유지 (대략:networking#dns) Safari: 시스템 해결자 사용

전형적인 브라우저 캐시 TTL: 60 초 (DNS TTL의 무장)

운영 체계 캐시

Windows: DNS 클라이언트 서비스 캐시 결과
# View cache

ipconfig /displaydns

# Flush cache

ipconfig /flushdns

macOS: mDNSResponder 핸들 캐싱
# Flush cache (macOS 10.15+)

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

리눅스 : 시스템별 Varies, 종종 시스템 해결
# Flush systemd-resolved cache

sudo systemd-resolve --flush-caches

# Check statistics

sudo systemd-resolve --statistics

Resolver 캐시

Recursive DNS 해결사 (ISP DNS, 8.8.8.8, 1.1.1.1)는 수백만 명의 사용자에게 큰 캐시를 유지합니다.

관련 제품캐시 전략
구글 (8.8.8.8)TTL, 글로벌 캐시를 존중
(주)JXTOKEN0XZRespects TTL, 배포
ISP 리필러낮은 TTL을 무시

캐시 Behavior 예제

일반 작업

Query 1: example.com

→ Full lookup: 50ms

→ Cached for 300s (TTL)

Query 2: example.com (1 minute later)

→ Cache hit: 1ms

Query 3: example.com (10 minutes later)

→ Cache expired, full lookup: 50ms

→ Re-cached for 300s

DNS 기록 업데이트

Original: example.com → 203.0.113.50 (TTL: 300s)

Time: 10:00 - DNS updated to 203.0.113.51

Client queries at 10:02

→ Still cached: 203.0.113.50 (expires 10:05)

Client queries at 10:06

→ Cache expired, new lookup: 203.0.113.51

→ Cached until 10:11

TTL 전략과 캐싱

TTL 가치 선택

사용 사례추천 TTL회사 소개
정적 인프라3600-86400s (1-24 시간)거의 변화, DNS 부하를 감소
회사 소개300-1800s (5-30 분)균형 성과 및 융통성
Active 마이그레이션60-300s (1-5 분)변화 중에 더 빠른 전파
짐 밸런싱60-120s의서버 변경 시 빠른 실패

Pre-Migration TTL 감소

DNS 변경을 계획할 때 모범 사례:

Day -7: example.com TTL 3600s (1 hour)

Day -2: Reduce to 300s (5 minutes)

Day 0: Make DNS change

→ Max 5 minute cache retention

Day +1: Restore TTL to 3600s

캐시 중독 및 보안

DNS 캐시 중독 공격

Attackers는 false DNS 레코드를 캐시에 주입하려고합니다.

1. Attacker Floods 해결사 가짜 응답

2. 1개의 경기가 끝나는 경우에, 그것은 캐시됩니다

3. 사용자는 합법적인 도메인에 대한 악성 IP를받습니다.

4. Cached 독은 많은 사용자에게 제공

보안 소송

DNSSEC : Cryptographically 서명된 기록은 중독을 방지합니다
example.com.    IN    A      203.0.113.50

IN RRSIG A 8 2 300 ...

소스 포트 랜덤화 : forge에 대한 응답 찾기 0x20 인코딩 : 쿼리 보조 검증의 랜덤 케이스 Resolver Security: 평판형 해결사(Cloudflare, Google, Quad9) 사용

DNS 캐시 확인

Cache 내용 보기

윈도우:
ipconfig /displaydns | more
macOS (무제한 정보):
sudo killall -INFO mDNSResponder

# Check Console.app for logs

리눅스 (시스템 해결):
sudo systemd-resolve --statistics

Cache Behavior 테스트

# First query (cache miss)

time dig example.com

# Immediate repeat (cache hit)

time dig example.com

# Compare times

Cache관련 문제

DNS 변경 후 이야기 캐시

Problem: 사용자를 위해 반영하지 않는 업데이트된 DNS 레코드 Solution :

1. TTL에 대한 기대

2. 미래 변화의 앞에 TTL 감소

3. 로컬 캐시를 플러시하는 사용자

지나치게 공격적인 캐싱

일부 ISP는 TTL을 무시하고 더 이상 캐시 :

Problem: propagate에 시간/일 변경 Solution :

부정 캐싱

실패한 조회 (NXDOMAIN)는 또한 시동됩니다:

Query: newsubdomain.example.com

Response: NXDOMAIN (does not exist)

Cached: 3600s (SOA minimum TTL)

Result: New subdomain won't resolve for 1 hour

Solution : 새로운 기록을 추가하기 전에 낮은 SOA 최소 TTL

DNS 캐시 제거

플러시

플러시 방법

윈도우:
ipconfig /flushdns
마이크 :
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
리눅스 (시스템 해결):
sudo systemd-resolve --flush-caches
크롬:
Navigate to: chrome://net-internals/#dns

Click: "Clear host cache"

파이어 폭스 :
Toggle network.dnsCacheExpiration in about:config

Or restart browser

최고의 연습

1. 적절한 TTL 설정 : 밸런스 성능 및 변화 속도

2. 변경 전 Reduce TTL : DNS 업데이트 전에 낮은 TTL 2448 시간

3. Monitor 전파 : 글로벌 DNS 해결책을 확인하는 도구

4. 문서 동작 : 인프라의 캐싱 레이어를 이해

5. DNSSEC 사용: 캐시 중독에 대한 보호

6. 시험은 완전히 : DNS 변경은 성공을 선언하기 전에 예상대로 작동합니다.

7. Educate 사용자 **: 필요한 경우 캐시 플러싱에 대한 명확한 지침 제공

고급 캐싱 개념

공지사항

브라우저 및 해결자는 페이지에 대한 링크에 대한 DNS를 prefetch 할 수 있습니다 :

<!-- Hint to browser -->

<link rel="dns-prefetch" href="//cdn.example.com">

캐시 워밍

로드밸런서 및 CDNs는 중요한 레코드에 대한 캐시를 사전 판매 할 수 있습니다.

인기 카테고리

Anycast DNS 경로 쿼리에 가장 가까운 서버, 지리적으로 분산 된 캐시를 생성 최적의 성능.

DNS 캐싱은 인터넷 성능에 필수적이며 TTL을 올바르게 구성하는 것은 빠른 해상도 시간을 유지하면서 DNS 변경 propagate를 효율적으로 보장합니다.

이 지식을 활용하세요

DomScan의 API를 사용하여 도메인 가용성, 상태 등을 확인하세요.