티스토리 뷰
DNS
Domain Name System의 약어로 컴퓨터 통신은 2진수의 IP를 이용하지만, 사람이 IP로 기억하기는 어려우므로 인식하기 쉽게 IP를 문자로 변환해 주는 시스템. 혹은 그 반대로도 가능케하는 시스템
구성
네임서버(NS)들로 이루어져 있으며 UDP 53번을 사용. 512bytes이상의 응답에서는 Client와 Server에서 EDNS를 이용하여 전송. EDNS를 사용하지 않으면 TCP 53번을 사용하여 재전송 함.
(EDNS : https://en.wikipedia.org/wiki/Extension_mechanisms_for_DNS)
네임서버
네임서버는 권한DNS와 캐시DNS서버로 구분.
권한 DNS서버 : 도메인의 Zone 데이터를 저장하는 서버 (zone 파일 필요)
캐시 DNS서버 : 도메인 캐시 기능을 담당하는 서버.
구성 시에는 root 네임서버의 IP 주소 정보인 root hint 파일 필요하며, 일반적으로 DNS 설정하는 KT DNS(168.126.63.1)가 캐시 DNS 서버에 해당.
recursive query : 아래그림에서 1번과 8번에 해당하는 부분으로 Client가 Local DNS 혹은 캐시 DNS로 질의하는 과정.
iterative query : 아래그림에서 로컬/캐시 DNS가 각각의 Name Server로 질의하는 과정
Recursive와 iterative query 구별은 DNS 메시지 헤더의 rd(recursion desired) 플래그에 의해 결정.
DNS 동작 방식
## 캐시 DNS의 www.example.com 캐시 있을 시 동작 방식
2. Client가 www.example.com으로 요청 시, Client의 Resolver에 등록된 캐시 네임서버(DNS resolver)로 질의.
7. 캐시 DNS(Resolver 네임서버)가 www.example.com에 대한 캐시가 있을 경우, Client에게 응답하여 종료.
## 캐시 DNS의 www.example.com 캐시 없을 시 동작 방식
2. Client가 www.example.com으로 요청 시, Client의 Resolver에 등록된 캐시 네임서버(DNS resolver)로 질의.
3. 캐시 DNS(Resolver 네임서버)가 www.example.com에 대한 캐시가 없을 경우, root 네임서버로 .com 네임서버 질의하여 .com(TLD) 네임서버 주소를 받음.
4. .com 네임서버에게 example.com 네임서버 주소 질의하여 example.com 네임서버 주소 받음
5. example.com 네임서버에게 www.example.com에 대한 주소를 질의.
6. www.example.com네임서버가 자신의 www에 대한 A Record를 확인 후, IP 주소(그림 192.0.2.44)를 응답.
7. 캐시 DNS서버(Resolver)는 응답 받은 IP주소를 Client에게 전송.
8. Client는 응답받은 IP주소를 이용하여 www.example.com 서버로 요청.
9. 8번 과정에 대한 프로토콜별 응답.
주의사항
- 모든 네임서버는 자신의 캐시를 확인 후, 캐시가 없으면 자신이 다시 질의하여 요청자에게 응답을 주게 된다.
관련 간단 용어
관련 용어는 무수히 많지만, 보편적으로 자주 사용하는 용어를 나열해 봤습니다.
FQDN : fully qualified domain name의 약어로 도메인 계층에서 명확한 전체 도메인 이름. ex) www.google.com처럼 호스트부분을 시작으로 최상위 도메인(TLD)까지 모두 나열된 도메인을 FQDN이라고 칭함.
호스트 : www.google.com에서 www에 해당하는 부분. sub도메인이라고도 불림.
TLD : Top Level Domain의 약어로 최상위 도메인 ex) .com / .kr / .org 등
SLD : Second Level Domain의 약어로 차상위 도메인 ex) .co / .re / .go 등
TTL : Time to Live의 약어로 DNS Record 및 네임서버들에 대한 전반적인 캐싱 시간을 나타냄. 마찬가지로 2진수를 사용하는 32bit시스템이기에 0부터 최대 2^31 -1 seconds인 248555일까지 가능.
Record : DNS 레코드는 DNS 서버(네임서버)에 특정 작업을 나타내는 데 사용되는 다른 문자열입니다.
- A : 정방향 조회 영역. 도메인을 IP주소로 변환. IPv4에 연결한다.
+ A 레코드의 자리는 2진수 16bit이므로 최대 65535개까지 가능.
+ TCP 응답(512Byte)의 경우에는 최대 400개까지 가능.
- AAAA : A 레코드의 IPv6버전.
+ Client에서 www.google.com을 질의할 때, AAAA 레코드를 질의한 뒤에 A 레코드를 질의한다.
- PTR : 역방향 조회 영역. IP주소를 도메인으로 변환.
- NS : 도메인에 대한 권한이 있는 네임서버
- CNAME : CNAME 레코드가 표시되면 다른 도메인의 별칭을 나타냅니다. 즉, 도메인을 다른 도메인의 별칭으로 만드는 것입니다.
- DNAME : 하위 도메인을 모두 위임
- MX : 메일서버 주소 레코드
- SOA : 주 DNS 서버를 정의하고, 보조 네임서버와의 zone 파일 수정여부 등을 동기화 하는 옵션. (seirial / refresh / retry / expire / minimum 등을 정의)
- SRV : 서비스의 위치(호스트네임 과 포트번호)를 저장하기 위해서 사용하는 레코드. 주로 Loadbalancing 용도로도 사용 됩니다.
- TXT : 원래는 암호화되지 않은 텍스트 파일. 1990년대 이후로 암호화 기술과 함께 사용 되도록 설계(rfc1464). 보통 SPF설정이 함께 들어감. spf : -all / ~all / +all
+ TXT 레코드가 가장 많이 사용되는 건, 도메인 소유를 검증할 때 주로 많이 사용됩니다. 이외에도 spf, dkim 등에 사용 됩니다.
- CAA : Root CA를 임의로 지정해주는 DNS Record.
- 이외 기타 레코드 : en.wikipedia.org/wiki/List_of_DNS_record_types
참고 링크
- RFC : tools.ietf.org/html/rfc1035
- cloudflare 매뉴얼 : www.cloudflare.com/ko-kr/learning/dns/what-is-dns/
- Total
- Today
- Yesterday
- bash
- ping
- iso8601
- 802.1ax
- vlan
- VXLAN
- HTTP/1.1
- tag
- date 시간 지정
- HTTP
- vni
- Switch
- 윈도우
- date 시간 변경
- data plane
- ssh
- multiple ping
- head end replication
- date 과거
- http/1.0
- dns 동작
- link aggregation
- http/0.9
- dns 동작 방식
- vtep
- Windows
- 802.3ad
- ping multi
- docker logs
- date 미래
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |