네트워크 인프라 7. DNS
컨트롤 프로토콜과 데이터 프로토콜
- 컨트롤 프로토콜
: 통신에 직접 관여하지는 않지만 통신 관계를 맺거나 유지하기 위한 프로토콜
: 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