1. DNS 개념
    1. 개념: IP Address를 Domain형식 (문자열)으로 변환해주는 서비스
    2. 도메인 등록 원칙
      1. 도메인 이름은 영문자, 숫자 10개, 특수기호 1를 합쳐 총 37개의 글자 조합으로 나타낼 수 있음.
      2. 영문자의 경우 대문자, 소문자의 구별은 하지 않으며 특수 기호인(-)은 도메인의 처음과 끝에 올 수 없음.
    3. DNS 관련 파일
      1. /etc/hosts

        • 인터넷 주소와 호스트 이름의 관계를 설정

          0002.jpg

          0003.jpg

        • 매우 간단하게 설정할 수 있는 장점이 있지만 이 파일의 내용은 로컬 시스템에서만 유효하게 사용할 수 있음

          0004.jpg

      2. /etc/resolv.conf

        • 호스트가 사용할 DNS 서버의 주소를 설정
        • 자신의 호스트가 DNS 서버라면 자신의 IP 주소를 적어줘야 함.
  2. Domain Name 구조
  3. Domain 동작 방식
    1. 재귀 쿼리

      • 사용자는 자신의 요청한 DNS 서버에게만 요청을 전송, 요청에 대한 응답을 수신.
      • 이렇게 이름 요청을 전송하고, 요청에 대한 정확한 응답을 수신하는 과정을 재귀 쿼리라고 함
      • 재귀 쿼리를 일반적으로 클라이언트가 DNS 서버에게 요청할 때 발생
      • 경우에 따라 DNS가 다시 다른 DNS 서버에게 요청하는 경우에도 사용
    2. 순환 쿼리

      • 클라이언트로 부터 받은 이름 요청에 대한 답변이 없을 경우 다른 DNS 서버로부터 단계적으로 질의하는 과정을 수

        출처: https://i.stack.imgur.com/ORZ2C.gif

        출처: https://i.stack.imgur.com/ORZ2C.gif

    3. 정방향 조회 / 역방향 조회

      1. 정방향 조회
        • DNS 서버는 호스트 이름에 대하나 요청을 수산한 후 요청 이름에 대한 IP 주소를 응답
        • 기본적 DNS 구조는 계층적 구조에서 도메인의 정보를 가지고 있는 DNS 서버를 찾고, 해당 DNS 서버에서 호스트의 정보를 확인하도록 설계
      2. 역방향 조회
        • IP 주소에 대한 요청을 수신 한후 요청한 IP 주소에 대한 호스트 이름을 응답
        • 역방향 조회는 IP 주소로 호스트 및 도메인의 이름을 조회하기 때문에 해당 IP 주소에 대한 레코드를 가지고 있는 DNS 서버를 찾는 것이 불가능
        • 이러한 문제점을 해결하기 위하여 역방향 조회를 지원하기 위한 특수 도메인이 설계되었는데 이 특수 도메인이 in-addr.arpa 도메인임
        • in-addr.arpa 도메인에서 다시 각 IP 주소의 대역별로 IP 주소를 조회할 수 있는 DNS 서버가 계층구조로 구성되어 있음
        • 역방향 조회를 사용하려면 DNS 서버가 서비스하고 있는 도메인의 각 호스트에 대한 역방향 조회 영역이 필요
        • 역방향 조회 영역에서는 포인트 레코드(PTR)가 필요
    4. DNS 캐시

      1. DNS 요청은 시스템이 모르는 이름에 대한 IP 주소가 필요할 때 이루어짐
      2. 최근에 조회했던 내용을 다시 조회 할때는 DNS 요청이 발생하지 않을 수도 있음 ⇒ 이미 시스템이 해당 이름에 대한 IP 주소를 알고 있기 때문 ⇒ DNS 캐시 활용
      3. 동일한 내용에 대한 반복적인 응답 수행으로 인해서 시스템에 과도한 부하가 발생하는 것을 방지함.
      4. DNS 캐시는 레코드의 수명을 설정하여 한번 조회한 레코드의 수명이 다하기 전까지는 해당 레코드를 그대로 사용하도록 함. ⇒ 레코드의 수명: TTL
      5. DNS 캐시는 엔드포인트 뿐 아니라 DNS 서버에도 존재함. ⇒ DNS 서버도 다른 DNS 서버에서 받은 정보를 캐시화 하여 저장함.
    5. 네임 서버의 유형

      1. 도메인에 대한 DNS 네임 처리를 해주기 위해서는 반드시 한대의 네임 서버가 필요하다.
      2. 주 네임서버 (Primary Name Server): 1차 네임 서버라고 부르며, 영역에 대한 모든 데이터를 가지고 있기 때문에 한명에 대한 모든 권한을 가지고 있는 가장 중요한 서버
      3. 보조 네임서버 (Secondary Name Server): 2차 네임 서버라고 부르며, 1차 네임 서버가 다운되었을때 동작하는 보조적인 역할을 한다.
      4. 캐쉬서버(Cache Server): 주 서버에서 정보를 가져와 캐시화 하여 저장하고 서비스하는 서버이다.
    6. DNS 레코드

      1. DNS서버는 단순히 특정 이름에 대한 응답만을 수행하는 것이 아니라 영역, 즉 도메인 전체에 대한 정보를 제공하기 함.

      2. DNS 서버는 다양한 형태로 되어있는 DNS 레코드를 저장하고 있어야 함.

      3. 레코드 종류

        종류 설명
        A,AAAA IP 주소와 도메인 이름을 연결하고 있는 레코드. (A: Ipv4, AAAA: IPv6)
        CNAME 다른 DNS 레코드의 별칭 레코드
        MX 메일 서버에 대한 정보를 저장
        NS 현재 도메인의 이름 서버(Name Server)를 지정
        PTR PTR 레코드는 A 레코드와 반대로 특정 IP 주소에 해당하는 도메인의 이름 정보를 저장
        SOA 영역의 권한 시작 정보(Start of Authority). 영역을 구성하는 가장 기본 레코드. 모든 영역은 한개의 SOA 레코드를 가지고 있음
        TXT 자유로운 형식의 텍스트 정보를 제공. 다양한 정보를 포함할 수 있는 텍스트 문자열
  4. DNS 조회 방법
    1. host command: host [option] name [server]

      1. -v 상세한 정보 표시

      2. -t: 조회할 레코드 타입 지정

      3. -a: 모든 타입의 레코드 조회

      4. -l: 리스트 모드로 결과 출력

        0009.jpg

    2. nslookup command: nslookup [name] [server]

      0006.jpg

      0007.jpg

    3. dig command

  5. DNS 서버 구성
  6. DNS 영역 구성
  7. Master/ slave