[Network] DNS

Manx·2023년 4월 24일
0

네트워크

목록 보기
4/5

네트워크 프로토콜

  • 데이터 프로토콜
    • 실제로 데이터를 실어나르는 프로토콜
  • 컨트롤 프로토콜
    • 데이터 프로토콜이 잘 동작하도록 도움
    • 통신에 직접 관여하지 않지만 처음 통신 관계를 맺거나 유지하는 역할
    • TCP/IP 프로토콜 체계를 유지하기 위한 주요 컨트롤 프로토콜 : ARP, ICMP, DNS

1. DNS (Domain Name System)

도메인 주소를 IP 주소로 변환하는 역할

  • IP주소보다 도메인 주소를 이용하는 것이 일반 사용자에게 더 익숙
  • 서버 IP 변경에 쉽게 대처할 수 있음

내부 시스템의 서비스 간 연결에도 DNS를 사용

  • 보통 인터넷 연결을 위한 DNS와 내부 서비스 간의 이름 풀이와 통신을 위해 외부와 내부 DNS를 분리해 운영

2. DNS 구조

EX. www.naver.com

www : Third-Level Domain

naver : Second-Level Domain

com : Top-Level Domain (TLD)

Root 는 생략

최대 255바이트까지 사용, 문자는 알파벳, 숫자, “-”만 사용할 수 있고 대소문자 구분이 없다.

Root Domain

  • 도메인을 구성하는 최상위 영역
  • DNS 서버는 사용자가 쿼리한 도메인에 대한 값을 직접 갖고 있거나 캐시에 저장된 정보를 이용해 응답
  • 만약 DNS 서버에 해당 도메인의 정보가 없으면, 루트 DNS에 쿼리하게 된다.
  • 루트 DNS는 전 세계에 13개가 있고, DNS 서버를 설치하면 루트 DNS의 IP 주소를 기록한 힌트 파일을 가지고 있어 루트 DNS 관련 정보를 별도로 설정할 필요가 없다.

Top-Level Domain ( TLD )

  • TLD는 IANA에서 구분한 6가지 유형으로 구분
    • Generic(gTLD) : 일반적인 최상위 도메인 ( .com, .edu., .gov, .int, .mil, .net, .org )
    • country-code(ccTLD) : 국가 최상위 도메인 우리나라 : kr
    • sponsored(sTLD) : 특정 목적을 위한 스폰서를 두고 있는 최상위 도메인
    • infrastructure : 운용상 중요한 인프라 식별자 공간을 지원하기 위해 전용으로 사용됨
    • generic-restricted(gTLD) : 특정 기준을 충족하는 사람이나 단체가 사용할 수 있음
    • test(tTLD) : IDN 개발 프로세스에서 테스트 목적으로 사용

3. DNS Query

각 레벨을 담당하는 네임서버가 있으며, 각 서버는 바로 하위 레벨 도메인에 대한 네임서버 주소 밖에 알지 못한다.

  • Root Server는 Top-Level의 정보
  • Top-Level Server는 Second-Level의 정보
  • DNS 요청이 들어올 경우 Root 부터 시작해서 단계적으로 ip 주소를 찾아가게 된다.

클라이언트 → DNS Server → Root DNS → DNS Server → TLB DNS …

클라이언트 → DNS 서버 : Recursive Query

DNS 서버 → Roost NS, TLS, 등에 질의한 방식 : Iterative Query


4. DNS 레코드

A ( IPv4 ) 레코드

  • A 레코드는 기본 레코드로 도메인 주소를 IP 주소로 변환하는 레코드이다.
  • 사용자가 DNS에 질의한 도메인 주소를 A 레코드에 절성된 IP 주소로 응답
  • 하나의 A 레코드에는 한 개의 도메인 주소와 한 개의 IP 주소가 1:1로 매핑
  • 동일한 도메인을 가진 A 레코드를 여러 개 만들어 서로 다른 IP 주소와 매핑할 수 있다.
  • 반대로 다수의 도메인에 동일한 IP를 매핑한 A 레코드를 만들 수 있다.

서버 한 대에 여러 웹 서비스를 구동하는 방법

  • 여러 도메인에 동일한 IP를 매핑하고, HTTP 헤더의 HOST 필드에 도메인을 명시

AAAA( IPv6) 레코드

  • 역할은 IPv4와 같고, IPv6 주소 체계에서 사용되는 레코드이다.

CNAME ( Canonical Name ) 레코드

  • 별칭 이름을 사용하게 해주는 레코드
  • 도메인 주소를 매핑한다.
  • 네임 서버가 CNAME 레코드에 대한 질의를 받으면 CNAME 레코드에 설정된 도메인 정보를 확인하고 그 도메인 정보를 내부적으로 다시 질의한 결과 IP 값을 응답. ( Ex. www. )

naver.com, www.naver.com을 A 레코드로 매핑하면, IP 주소가 변경될 때 두 개의 레코드 값을 모두 변경해야 하지만, naver.com만 A 레코드로 매핑한 뒤, www.naver.com은 CNAME으로 naver.com으로 매핑하면 IP 주소가 변경될 때 naver.com만 변경해도 된다.

SOA ( Start Of Authority ) 레코드

  • 도메인 영역에 대한 권한을 나타내는 레코드
  • 현재 네임 서버가 이 도메인 영역에 대한 관리 주체임을 의미 → 해당 도메인에 대해서는 다른 네임 서버에 질의하지 않고 직접 응답한다.
  • SOA 레코드는 필수 항목으로 반드시 만들어야 한다.
  • 도메인 동기화에 필요한 타이머 값이나 TTL 값도 함께 도메인의 네임 서버나 관리자 정보도 SOA 레코드에서 설정한다.

PTR ( Pointer ) 레코드

  • A 레코드와 반대로 IP 주소에 대한 질의를 도메인 주소로 응답하기 위한 레코드
  • 하나의 IP 주소에 대해 하나의 도메인 주소만 가질 수 있음
  • 사용처 : 화이트 도메인 구성용으로 사용

그외 : NS ( Name Server ), MX ( Mail eXchange), TXT( TeXT ) 레코드


5. DNS 이중화

Master & Slave

  • 우선순위가 아닌 도메인에 대한 존(Zone) 파일을 직접 관리하는지 여부로 구분

Master

  • 존 파일을 직접 생성해 도메인 관련 정보를 관리
  • 자신이 가진 도메인 정보를 인가받지 않은 다른 DNS 서버가 복제해가지 못하도록 슬레이브 서버를 지정해 복제를 제한한다. → 설정하지 않으면 모두 복제 가능 → 보안 문제

Slave

  • 마스터에 만들어진 존 파일을 복제 ( 영역 전송 )

이중화에서 일반적으로 사용하는 Active-Standby, Active-Active 방식을 사용하지 않음

  • 이중화는 액티브 장비의 문제가 발생해도 다른 액티브나 스탠바이 장비가 그대로 서비스
  • 그러나, 마스터 서버에 문제가 발생하고 일정 시간이 지나면 슬레이브 서버도 도메인에 대한 질의에 정상적인 응답 불가능 → 이 시간을 만료 시간 이라고 하고, SOA 레코드에 설정.
  • 만료 시간 안에 슬레이브 서버가 마스터 서버에서 존 정보를 받아오지 못하면 슬레이브의 존 정보는 사용할 수 없어진다.

Active-Standby, Active-Active

  • 네트워크 서비스나 시스템 내부의 컴포넌트 일부가 정상동작하지 않아도 서비스가 지속될 수 있도록 고가용성 기술을 사용
  • 고가용성을 위해 일반적으로 사용하는 구조 ⇒ Active-Standby, Active-Active

Active-Active

  • 두 개의 노드가 동시에 서비스를 제공, 한 노드에 문제가 발생하면 다른 노드에서 서비스를 계속 제공하는 방식

Active-Standby

  • 두 개의 노드 중 액티브 노드만 서비스를 제공하고 스탠바이 노드는 대기하고 있다가 액티브 노드에 장애가 발생하면 서비스를 시작

6. 도메인 위임

DNS Delegation ( 도메인 위임 )

  • 도메인에 대한 정보를 관리할 수 있는 네임 서버를 지정하지만 도메인 내의 모든 레코드를 그 네임 서버가 직접 관리하지 않고 일부 영역에 대해서는 다른 곳에서 레코드를 관리할 수 있다.
  • 이 방식을 도메인 위임이라고 한다.
  • CDN을 이용하거나 GSLB (global server load banlancing) 를 사용하는 것이 가장 대표적이다.
  • naver.com을 관리하는 네임서버에서 하위에 post영역을 추가하고, 이 영역을 ‘B’ GSLB에서 관리하려고 할 때 post 관리 권한을 ‘B’에게 넘겨주는 방식이다.
  • 특정 영역에 대한 관리 주체를 분리하는 용도로 사용할 수 있다.

GSLB

Global Server Load Balancing

  • DNS와 동일하게 도메인 질의에 응답해주는 역할과 동시에 로드 밸런서처럼 등록된 도메인에 연결된 서비스가 정상적인지 헬스 체크를 수행
  • 지리적으로 가깝거나, 응답할 수 있는 DNS를 찾아 빠르게 서비스를 제공.
profile
백엔드 개발자

0개의 댓글