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 @
|
|
|
|
```
|