memos/Home Server/Network/DNS/DNS.md

103 lines
4.1 KiB
Markdown
Raw Normal View History

2024-08-25 15:21:39 +00:00
Domain Name System, 도메인 이름 시스템
[[Domain|도메인]]을 IP로 변환하는 시스템
2024-08-26 11:55:58 +00:00
# 1. Public DNS server list
2024-08-25 15:21:39 +00:00
- 1.1.1.1 1.0.0.1 : Cloudflare DNS
- 8.8.8.8 8.8.4.4 : Google DNS
- 208.67.222.222 208.67.220.220 : Cisco OpenDNS
- 168.126.63.1 168.126.63.2 : KT DNS
2024-08-26 11:55:58 +00:00
# 2. Self-hosted DNS server list
2024-08-25 15:21:39 +00:00
- BIND
- CoreDNS
- dnsmasq
- AdGuard Home
- Pi-hole
- ...
2024-08-26 11:55:58 +00:00
# 3. 변환 과정
2024-08-25 15:21:39 +00:00
1. 클라이언트가 Recursive DNS resolver에게 쿼리를 보냄
2. Recursive DNS resolver의 캐시에 답변이 남아있으면 해당 답변을 답변함
3. Recursive DNS resolver의 캐시에 답변이 없으면 클라이언트 요청에 해당하는 TLD name server 정보를 Root name server에 쿼리함
4. Root name server는 TLD name server 정보를 Recursive DNS resolver에 답변함
5. Recursive DNS resolver는 클라이언트 요청에 해당하는 도메인에 대한 Authoritative name server 정보를 답변받은 TLD name server에 쿼리함
6. TLD name server는 Authoritative name server 정보를 Recursive DNS resolver에 답변함
7. Recursive DNS resolver는 클라이언트 요청에 해당하는 도메인에 대해 Authoritative name server에 쿼리함
8. Authoritative name server는 요청받은 도메인에 대해 DNS Zone 파일을 답변함
9. Recursive DNS resolver는 답변받은 도메인 정보를 클라이언트에 답변함
2024-08-26 11:55:58 +00:00
# 4. DNS Zone file
2024-08-25 15:21:39 +00:00
도메인에 대한 정보를 기술해놓은 파일
파일의 각 줄(레코드)에는 여러 가지 정보를 기술할 수 있음
2024-08-26 11:55:58 +00:00
## 4.1. Zone file 형식
2024-08-25 15:21:39 +00:00
```
$ORIGIN (zone name)
$TTL (time in second)
domain [TTL] IN SOA DNS.address. admin.email.address. data
IN record data
```
```
$ORIGIN home.server.
@ 3600 IN SOA ns1.home.server. admin.home.server. (
2024082401 ; serial
7200 ; refresh
3600 ; retry
1209600 ; expire
3600 ; minimum
)
3600 IN NS ns1.home.server.
3600 IN A 192.168.200.10
www 3600 IN CNAME home.server.
```
>[!note]
>Zone file에서 `@` 기호는 `$ORIGIN` 값과 동일한 의미이다.
2024-08-26 11:55:58 +00:00
## 4.2. Record
2024-08-25 15:21:39 +00:00
- SOA : Start of Authority
- 이름, 관리자 이메일 주소, 캐시 새로 고침 정보 등을 기술
- 모든 DNS Zone file은 SOA 레코드를 가지고 있어야 함
- TTL : Time to Live, 캐시 유효 기간
- A, AAAA : IP 주소, A는 IPv4, AAAA는 IPv6에 해당
- MX : 도메인 SMTP 이메일 서버
2024-08-26 11:55:58 +00:00
- CNAME : Canonical name, CNAME에 기록된 도메인은 해당 Zone file에 기술된 도메인과 같은 IP를 참조하도록 함
2024-08-25 15:21:39 +00:00
- NS : Name server, Authoritative name server 정보
- PTR : 역방향 DNS에 사용, IP 주소를 도메인에 매핑
2024-08-26 11:55:58 +00:00
- TXT : 아무 텍스트나 입력 가능
2024-08-25 15:21:39 +00:00
2024-08-26 11:55:58 +00:00
### 4.2.1. SOA Record
2024-08-25 15:21:39 +00:00
```
NAME [TTL] IN SOA DNS-address admin-email-address (
2024082401 ; serial
7200 ; refresh
3600 ; retry
1209600 ; expire
3600 ; minimum
)
```
- NAME : Zone 이름. `@`, `home.server`와 같은 전체 존 이름이 들어갈 수 도 있고, `www` 등 기타 서브도메인이 들어갈 수 있음
- TTL : Time-to-live
- IN : Zone class로 IN은 인터넷을 의미
- SOA : Zone record type
- DNS-address : MNAME, Primary master name server address
- admin-email-address : RNAME, Email address of the admin for this zone.
- serial : 해당 DNS Zone 파일을 수정하면 바뀌는 번호, 보통 수정일+2자리 숫자로 구성
- refresh : 2차 DNS가 마스터 DNS 재 쿼리에 필요한 최소 시간(초)
- retry : 마스터가 응답하지 않는 경우 2차 DNS가 마스터로부터 일련 번호 요청을 재시도해야 하는 시간(초)
- expire : 마스터가 응답하지 않는 경우 2차 DNS가 이 영역에 대한 요청 응답을 중지해야 하는 시간(초)
- minimum : Negative TTL 값, 존재하지 않는 도메인에 대해 호스트가 존재하지 않는다는 답변을 캐싱하는 최소 시간
2024-08-26 11:55:58 +00:00
## 4.3. Wildcard
2024-08-25 15:21:39 +00:00
DNS Zone의 모든 subdomain을 가리키려면 DNS record에 wildcard를 추가하면 된다.
```
* IN CNAME @
```