DNS (Domain Name System) 개념
1. DNS 개념
DNS : 도메인 이름을 IP주소로 바꿔주는 역할을 한다. 계층적 구조를 가지는 분산 데이터 베이스.
FQDN(Fully Qualified Domain Name) : DNS에서 사용되는 이름 표기 법
- DNS의 서버이름 = HOST NAME + DOMAIN NAME
- FQDN 예 : www.naver.com ( Host name : www, Domain name : naver.com )
2. DNS 구성요소 : Domain Name space, Name Server, Resolver
사진 출처 : https://en.wikipedia.org/wiki/Domain_Name_System
1] Domain Name Space
: DNS는 거대한 분산 네이밍 시스템이며, 도메인 네임 스페이스는 이러한 DNS가 저장/관리하는 계층적 구조를 의미한다. 서로 중복된 이름을 갖지 않도록 구성.
- Root Domain
- Top-Level Domin
- Second-Level Domain
- Sub-domain
2] Name Sever
: 문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP주소로 변환시키기 위해서 도메인 네임 스페이스의 트리 구조에 대한 정보가 필요하며, 이러한 정보를 가지고 있는 서버.
-전세계에는 13개의 Root DNS 서버 존재
3] Resolver
: 웹 브라우저와 같이 DNS 클라이언트의 요청을 네임 서버로 전달하고 네임 서버로부터 정보를 받아 클라이언트에게 제공하는 기능을 수행. 이 과정에서 리졸버는 하나의 네임 서버에게 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 네임 서버에 요청을 보내 정보를 받아 온다.
3. DNS 동작 과정
1] Local Hosts 파일 참조
- 윈도우 OS 계열 : C:\Winodows\system\drivers\etc\hosts
- 리눅스/ 우분투 계열 : /etc/hosts
2] 자체의 DNS Cache Table 참조
- Cache 정보 확인 : ipconfig /dispalydns
- Cache 정보 초기화 : ipconfig / flushdns
3] DNS Server 참조
최상위 즉, Root Domain으로 보낸 후
Top-Level Domain(net, com, org 등),
Second-Level Domain 서버 검색,
Sub-domin 서버 검색 순으로 이름에 해당하는 IP를 찾게 된다.
이때 이 이름은 FQDN(정규화된 도메인)으로 유일하다.
4. DNS Zone
1] DNS Zone : Zone은 DNS Server가 관리하는 Domain에 대한 정보가 저장되어 있는 DNS Database
1. 정방향 조회 영역 : FQDN으로 IP주소 알아올 때
2. 역방향 조회 영역 : IP주소로 FQDN알아올 때
2] Zone의 종류
1. 주 영역 : 해당 DNS가 직접 관리하며 모든 권한을 가지고 있는 영역
2. 보조 영역 : 다른 DNS Server의 주 영역을 읽기 전용 데이터로 복사 해온것
* 복사해 오는 행위를 Zone Transfer라고 함
3. 스텁 영역 : 다른 DNS Server의 정보가 있는 영역(해당 영역에 대한 권한은 없음)
3] DNS 레코드의 종류 : 각 Zone은 Resource Record Type 으로 정의된 데이터를 가진다.
번호 | 레코드명 | 설명 |
1 | SOA (Start Of Authority) |
주 DNS Server 와 Zone에 대한 정보. 권한 시작 지정하고, 권한이 있는 서버를 가리킨다. |
2 | A (Host Address) |
FQDN과 32비트의 IPv4 주소와 연결 |
3 | AAAA | FQDN과 128비트의 IPv6 주소 연결 |
4 | CNAME | 별칭으로써 IP 하나에 여러 개의 별칭을 부여하기 위해 사용 |
5 | MX (Mail eXchanger) |
메일 시스템에 대한 정보 |
6 | PTR (Pointer) |
역방향 조회 영역에서 사용됨(A 레코드의 반대) |
7 | NS (Name Server) |
도메인 서버 목록을 지정. |
8 | ANY | 도메인에 대한 모든 레코드 질의, 일반적으로 요청 대비 응답 크기가 크기 때문에 DNS 증폭 DRDoS 공격에 악용 |
9 | TXT | 도메인에 대한 텍스트 정보 질의 (TXT 레코드 질의) TXT레코드에는 대표적으로 SPF(발송자 메일서버 인증) 레코드 정보가 있다. 일반적으로 요청 대비 응답 크기가 크기 때문에 DNS 증폭 DRDoS 공격에 악용 |
10 | AXFR (Authoritative Zone Transfer) |
존 버전에 상관없이 무조건 존 전송 요청 (Full Zone Transfer) |
11 | IXFR (Incremental Zone Transfer) |
존 버전을 비교하여 상위 버전일 경우 존 전송 요청 |
4] Zone 파일
1. 네임서버 설정파일(named.conf)에 존 설정을 한다.
2. Zone 파일의 리소스 레코드 형식
host_name [TTL] class record_type data
<1> host_name : 등록할 호스트명을 지정
<2> TTL : 레코드의 TTl 값을 지정. 미지정시 default 값
<3> class : 인터넷 클래스를 의미하는 IN 지정
<4> record_type : 레코드 유형을 지정
<5> data : 레코드 유형에 따른 데이터 설정
5. DNS 쿼리 : Recursive(재귀적) , Iterative(반복적)으로 구분
사진 출처 : https://en.wikipedia.org/wiki/Domain_Name_System
1] Recursive Query : 로컬 DNS 서버에 이름 분석 결과만 달라고 요청
2] Iterative Query : Local DNS server에 Query에서 요구하는 IP주소가 있으면, 질의한 호스트에게 결과를 반환. 없으면, 해당 도메인을 관리하는 다른 DNS Server에게 같은 Query를 보냄. (Root-> ..)
6. DNS Server Caching
다른 DNS Server로 부터 알아 온 정보는, 버리지 않고 DNS Server Cache에 임시로 저장
SOA Record의 TTL에서 지정한 기간 만큼