Computer Science/Network

네트워크 인프라 7. DNS

2mukee 2023. 3. 11. 16:53
320x100
320x100

컨트롤 프로토콜과 데이터 프로토콜

- 컨트롤 프로토콜

: 통신에 직접 관여하지는 않지만 통신 관계를 맺거나 유지하기 위한 프로토콜

: ARP, ICMP, DNS

 

- 데이터 프로토콜

: 실제로 데이터를 실어나르는 프로토콜

 

 

 

 

DNS (Domain Name Server)

: 도메인 주소와 IP 주소간 변환을 수행하는 프로토콜

: 하나의 IP 주소를 통해 여러 개의 웹 서비스를 운영할 수 있고 IP 주소가 변경 되더라도 접속 변경 없이 서비스를 유지할 수 있음

: 실제 통신하기 위해서는 DNS 정보를 설정해야함

: 사용자에게 서비스를 제공할때 뿐 만 아니라 내부 시스템의 서비스 간 연결에도 DNS를 사용하여 통신

 

- 설정해야하는 DNS 정보

: 기본 설정 DNS 서버

: 보조 DNS 서버

 

- DNS 작동 과정

: 사용자가 도메인을 입력하여 DNS 서버에 요청을 보내면 DNS 서버에서는 해당 도메인에 대한 IP주소를 반환하고 서버에 접속

 

 

 

 

 

DNS의 구조

: 역트리 구조이며, 최상위 루트로 부터 Top-Level 도메인, Second-Level 도메인, Third-Level 도메인으로 구성

: 하위 레벨로 원하는 주소를 단계적으로 찾아가는 구조

// third-level.second-level.top-level
www.naver.com

// com 부터 www 순 (top에서 third)으로 검색을 수행함
// 각 층은 .으로 구분

: 도메인 계층은 최대 128 계층까지 구성가능하고, 한 계층당 63바이트 까지 사용할 수 있음

: 계층을 구분하는 .을 포함한 전체 도메인 네임의 길이는 최대 255 바이트임

: 문자는 알파벳, 숫자, -만 사용 가능하고 대소문자 구문이 없음

 

 

 

 

 

루트 도메인

: 도메인을 구성하는 최상위 영역

: DNS 서버는 쿼리한 도메인에 대한 값을 가지고 있거나 캐시에 저장된 정보를 이용해 응답을 하는데, 요청한 도메인의 정보가 없을 경우 루트 도메인을 관리하는 루트 DNS에 쿼리를 수행하여 IP 주소를 찾아냄

: 루트 DNS는 전 세계에 13개가 있고, DNS 서버를 설치하면 루트 DNS의 IP 주소를 기록한 힌트 파일이 자동으로 생성되어 별도의 설정이 필요없음

 

 

 

 

 

Top-Level-Domain (TLD)

: IANA에서 구분한 6가지 유형이 존재

 

- Generic (gTLD)

: 특별한 제한 없이 사용할 수 있는 최상위 도메인으로 세 글자  이상으로 구성

: com / edu / gov / int / mil / net / org

 

- country-cod (ccTLD)

: 국가 최상위 도메인. ISO 3166 표준에 의해 규정된 두 글자

: 일반적으로 second Level TLD에 gTLD를 사용 (co.kr 등)

: kr / au / tw / us 등

 

- sposored (sTLD)

: 특정 목적을 위한 스폰서를 두고 있는 최상위 도메인

: 스폰서는 특정 민족 공동체, 전문가 집단, 지리적 위치 등이 됨

: .aero, .asia, .edu, .museum

 

- infrastructure

: 운용상 중요한 인프라 식별자 공간 지원을 위한 전용 최상위 도메인

: .arpa

 

- generic-restricted (grTLD)

: 특정 기준을 충족하는 사람이나 단체가 사용할 수 있는 최상위 도메인

: .biz, .name, .pro

 

- test (tTLD)

: IDN (Onternationalized Domain Names) 개발 프로세스에서 테스트 목적으로 사용하는 최상위 도메인

: .test

 

 

 

 

 

DNS 캐시

: 일반적으로 DNS 서버에 도메인을 쿼리하여 IP 주소를 응답 받음

: DNS 서버 없이 로컬에 도메인과 IP를 매핑한 hosts 파일을 작성하여 DNS 캐시를 등록하면 DNS 서버에 쿼리하기 전에 로컬 DNS 캐시 정보를 확인하여 성능을 향상 시킬 수 있음

: DNS 캐시 정보에는 기존 DNS 조회를 통해 확인한 동적 DNS 캐시와 함께 hosts 파일에 저장되어있는 정적 DNS 캐시가 저장되어 있음

 

 

 

 

DNS의 동작 방식

: 클라이언트의 쿼리가 자신에게 없는 저옵인 경우 루트 DNS에 쿼리하고 루트 DNS에서는 쿼리한 도메인의 TLD 값을 확인하여 해당 TLD 값을 관리하는 DNS가 어디인지 응답

: 처음 질의를 받은 DNS가 중심이 되어 루트 DNS 부터 상위 DNS에 쿼리를 보내 최종 결과값을 클라이언트에 응답

 

- 재귀적 쿼리

: 호스트가 DNS 서버에 질의하여 응답을 받아내는 방식

: 쿼리를 보낸 클라이언트에 서버가 최종 결과값을 반환하는 서버 중심의 쿼리

: 일반적으로 클라이언트와 로컬 DNS 간 쿼리

 

- 반복적 쿼리

: DNS 서버와 각 Name Server에 질의하여 응답을 받아내는 방식

: 최종값을 받을때까지 클라이언트에서 쿼리를 계속 진행하는 방식

: 일반적으로 로컬 DNS와 상위 DNS 간 쿼리 (이때 로컬 DNS는 클라이언트로 동작)

 

 

 

 

 

 

역할별 DNS 서버

: 마스터와 슬레이브가 있는데, 두 서버간 우선순위는 같으며 모두 도메인 쿼리에 응답을 수행함

: 만료기한 (SOA)이 설정되어 있어 마스터 서버에 문제 발생 시 슬레이브 서버도 응답이 불가해지는 특성을 가짐

 

- Master (Primary)

: 도메인에 대한 zone 파일을 직접 생성하여 도메인 관련 정보를 관리하는 DNS 서버

: 도메인 정보를 인가받은 DNS 서버에서만 복제할 수 있도록 설정 가능

 

- Slave (Secondary)

: 마스터에 만들어진 영역전송 (zone transfer) 과정을 통해 zone 파일을 복제하여 관리하는 DNS 서버

: 슬레이브에서는 주기적으로 마스터의 zone 파일을 복제함

: 슬레이브 서버를 만들기 위해서는 도메인을 복제해올 마스터 서버 정보가 필요

 

 

 

 

 

 

DNS의 주요 레코드

- A

: 기본 레코드로써 도메인 주소를 IPv4 주소로 변환

: IP 주소와 도메인 주소가 1:1로 매핑되며, 동일한 도메인을 가진 A 레코드를 여러 개 만들어 사로 다른 IP 주소와 매핑할 수 있음

 

- AAAA

: 도메인 주소를 IPv6 주소로 변환

 

- CNAME (Canonical Name)

: 도메인 주소와 별칭을 매핑

: 2mukee.net을 A 레코드로 IP 주소를 매핑하고 www.2mukee.net을 CNAME으로 으로 매핑하면 IP 주소가 변경되어도2mukee.net만 변경해도 www.2mukee.net으로   접속이 가능함 

: 즉 2mukee.net에 대해서만 IP 주소로 매핑하고 www.2mukee.net에  에 대해 2mukee.com으로 매핑하면 서버 IP가 변경되어도 하나의 레코드만 수정하면 되어 관리가 용이하다는 것

 

- SOA (Sort Of Authority)

: 도메인 영역에 대한 권한을 나타내는 필수적인 레코드

: 현재 네임서 버가 이 도메인 영역에 대한 관리 주체임을 의미

: 현재 도메인 관리에 필요한 설정을 담당 (도메인 동기화에 필요한 타이머 값, TTL, DNS 및 관리자 정보  등)

 

- NS (Name Server)

: 도메인에 권한이 있는 네임 서버를 설정하는 레코드

: 하위 도메인에 대한 권한을 다른 네임 서버로 위임할때도 사용

 

- MX (Mail eXchange)

: 메일 서버를 구성할때 설정하는 레코드

: 설정한 도메인을 메일 주소로 갖는 서버를 정의

: 우선순위 값을 통해 다수의 MX 레코드를 선언할 수 있음

 

- PTR (Pointer)

: IP 주소에 대한 질의를 도메인 주소로 응답하기 위한 레코드 (역방향 조회)

: A 레코드와 달리 IP 주소에 대해 하나의 도메인 주소만 가질 수 있음

: 주로 화이트 도메인 구성용으로 사용

 

- TXT (TeXT)

: 도메인에 대한 설명을 입력하는 레코드. (대소문자를 구분하며 최대 255자까지 가능)

: 화이트 도메인을 위한 SPF 레코드로도 활용 가능

 

 

 

 

 

DNS 기타 레코드

- TTL (Time To Live)

: DNS에 질의해 응답받은 결과값을 캐시에서 유지하는 시간

: DNS에서 TTL 값을 늘려 캐시를 많이 이용하면 응답시간을 줄일 수 있음

: TTL 값이 너무 큰 경우 변경된 값으로의 반영이 늦어질 수 있고, 너무 작은 경우 쿼리 횟수가 많아지기 때문에 부하가 발생할 수 있으므로 적절한 값으로 설정이  필요

 

- Refresh

: 보조 네임 서버에서 Zone Transfer를 통해 zone 파일을 받아오는 주기 (Master - Slave)

 

- retry

: 보조 네임 서버가 주 네임 서버로 접근이 불가능할 때 재시도 하는 주기 (Master - Slave)

 

- expire

: 보조 네임 서버가 주 네임 서버로 부터 도메인 정보를 받아오지 못할때 유지되는 시간

: 설정한 시간 동안 정보를 받아오지 못하면 주 네임 서버에서 삭제된 것으로 간주하고 보조 네임 서버에서도 정보를 삭제

 

 

 

 

 

화이트 도메인

: 불법적인 방법으로 발송되는 스팸 메일 차단을 위해 정상적인 도메인을 인증, 관리하는 제도

: KISA RBL 사이트에서 화이트 도메인으로 등록해야함

: 사전에 등록할 도메인에 SPF (Sender Policy Framework) 레코드가 설정되어 있어야함

: SPF 레코드를 통해 메일 서버 정보를 사전에 공개하여 스팸 메일 차단을 방지

: SPF 레코드는 최대 512 바이트까지 등록 가능 (13개의 IP까지 등록 가능)

: SPF 레코드는 TXT 레코드를 통해 작성 가능

 

- RBL (Realtime Blocking List)

: 실시간으로 불법적인 사이트를 관리하는 리스트

 

 

 

 

 

 

도메인 위임 (DNS Delegation)

: 도메인 관리 권한을 다른 곳으로 위임하여 세부 레코드를 관리하도록 역할을 분할하는 것

: 도메인은 계층 구조이기 때문에 특정 계층의 레코드를 위임하면 하위 레코드까지 함께 위임됨

: CDN이나 GSLB를 활용하는 경우가 해당

: 위임 정보를 원본 네임 서버에 설정하고 위임할 권한을 위임을 받는 네임 서버에 정의하면 위임이 완료

 

 

 

 

GSLB (Global Service Load Balancing / Intelligence DNS)

: DNS는 설정된 서비스의 상태를 확인하지 않고 도메인에 대한 설정된 값을 반환하여 설정된 서버에 문제가 발생한 경우 사용자는 서비스를 이용할 수 없게됨

: GSLB는 이러한 문제점을  해결한 도메인에 대한 로드밸런싱을 지원함

: DNS와 동일하게 도메인 질의에 응답하면서 등록된 도메인에 연결된 서비스가 정상적인지 주기적으로 헬스 체크를 수행하여 정상인 레코드에 대해서만 응답

 

- 예시

: 2개의 서버가 있고 하나의 도메인을 사용할 때 DNS에서는 비정상인 서버의 IP를 응답할 수 있지만, GSLB는 정상인 서버의 IP로만 응답함 (일반 DNS는 라운드 로빈 방식으로 응답)

 

 

 

 

 

GSLB 구성 방법

: 도메인 자체를 GSLB로 사용할 경우 해당 도메인에 속하는 모든 레코드 설정을 GSLB에서 관리 (GSLB가 도메인에 대한 네임 서버가 되는 경우)

: 위 경우, 헬스 체크 기능이 불필요해지고 모든 레코드에 대한 질의가 GSLB를 통해 이루어지므로 GSLB에 부하가 발생

: 도메인 내의 특정 레코드에 대해서만 GSLB로 사용 (별칭 (CNAME)과 위임 (NS)으로 GSLB를 사용)

 

- CNAME

: 실제 도메인과 다른 별도의 도메인 레코드로 GSLB에 등록

: 일반적으로 외부 CDN을 사용하거나 내부의 GSLB를 사용할 도메인이 많은 경우 한 꺼번에 관리하기 위해 사용

: DNS에 등록된 CNAME 레코드의 값으로 GSLB로 재질의 해 서버를 찾아감

: CDN 처럼 GSLB를 운영해주는 외부 사업자가 있거나 GSLB를 사용해야하는 도메인이 많은 경우, 별도의 GSLB를 운영하기 위해 사용

 

- NS

: NS로 등록한 경우 실제 도메인과 동일한 도메인 레코드를 사용하여 도메인 전체를 위임함

: 최초 요청한 FQDN을 그대로 재질의하기 때문에 하위 도메인에 대한 위임 처리가 필요하지 않으므로 DNS 설정을 최소화 화 하면서 다수의 FQDN을 위임 처리할 수 있음

: 특정 도메인에 대해 GSLB에 위임하여 하위 도메인에 대한 추가 위임을 하지 않아도 됨

: DNS와 같은 도메인으로 GSLB를 운영하면서 계층적으로 GSLB를 이용한 FQDN을 관리할 때 사용

 

※ FQDN (Fully Qualified Domain Name / 전체 도메인 네임)

: www.2mukee.com과  과 같이 전체 도메인을 입력하는 방식

 

※ PQDN (Partially Qualified Domain Name / 부분 도메인 네임)

: 2mukee.com과 같이 하위 일부 경로만 입력하는 방식

 

 

 

 

 

GSLB 분산 방식

- GSLB 분산의 목적

: 서비스 제공의 가능 여부를 체크하여 트래픽 분산

: 지리적으로 멀리 떨어진 IDC에 트래픽 분산

: 지리적을 가까운 서비스에 접속하여 빠른 서비스 제공을 위한 트래픽 분산

 

 

 

 

 

 

 

 

Reference

 

IT 엔지니어를 위한 네트워크 입문 | 고재성 - 교보문고

IT 엔지니어를 위한 네트워크 입문 | 클라우드/데브옵스 시대에 알아야 할 인프라 지식 서버실이 있고, 서버 관리자가 따로 있었던 시대를 지나 클라우드 서비스가 보편화되었다. 클라우드 서비

product.kyobobook.co.kr

 

 

300x250
728x90