[TIL 20. 리눅스(2) DNS]

Juhee Fred Lee·2023년 11월 6일
0

TIL

목록 보기
23/24
  1. DNS 개념

    1. 개념: IP Address를 Domain형식 (문자열)으로 변환해주는 서비스

    2. 도메인 등록 원칙

      1. 도메인 이름은 영문자, 숫자 10개, 특수기호 1를 합쳐 총 37개의 글자 조합으로 나타낼 수 있음.
      2. 영문자의 경우 대문자, 소문자의 구별은 하지 않으며 특수 기호인(-)은 도메인의 처음과 끝에 올 수 없음.
    3. DNS 관련 파일

      1. /etc/hosts

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

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

      2. /etc/resolv.conf

        • 호스트가 사용할 DNS 서버의 주소를 설정
        • 자신의 호스트가 DNS 서버라면 자신의 IP 주소를 적어줘야 함.
  2. Domain Name 구조

    • 인터넷상에서 사용되는 도메인은 전 세계적으로 고유하게 존재하는 이름으로 정해진 규칙 및 체계에 따라야 하며, 임의로 변경되거나 생성될 수 없음
    • 도메인의 체계적인 분류와 관리를 위해 도메인 이름은 몇 개의 짦은 영문자를 '. (닷, 점)'으로 연결한 계층 구조를 갖고 있다. 출처: https://www.kernel-panic.it/openbsd/dns/dns1.png 출처: https://www.kernel-panic.it/openbsd/dns/dns1.png
    • 각 단계별 도메인
      • 1단계 도메인 또는 최상위도메인, TLD, Top Level Doamin: 루트 바로 아래 단계의 도메인
        • 'kr'과 같이 국가를 나타내는 국가 코드 도메인
        • ccTLD (country code Top Level Domain)
        • .kr(한국) , .us(미국) , .jp(일본) , .cn(중국) , .uk(영국) , .fr(프랑스)
      • 2단계 도메인
        • 조직의 속성을 구분하는 도메인
        • .co(영리) , .or(비영리) , .go(정부) , .ac(대학/대학원) , .mil(국방조직)
      • 3단계 도메인
        • 조직이나 서비스의 이름을 나타내는 도메인 이름으로 도메인 사용자가 원하는 문자열을 사용할 수 있음
        • naver , google , nate , kernerl, nobreak
      • Subdomain
        • 호스트가 위치
        • www , blog , cafe , news
    • 도메인을 표기할 때는 낮은 단계부터 표현하여 최상위 도메인이 가장 뒤에 나타남
  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,AAAAIP 주소와 도메인 이름을 연결하고 있는 레코드. (A: Ipv4, AAAA: IPv6)
        CNAME다른 DNS 레코드의 별칭 레코드
        MX메일 서버에 대한 정보를 저장
        NS현재 도메인의 이름 서버(Name Server)를 지정
        PTRPTR 레코드는 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: 리스트 모드로 결과 출력

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

    3. dig command

      1. dig [@Server] [name]

      2. dig 명령은 DNS 서버를 지정할 때, 서버의 주소 앞에 ‘@’ 기호를 반드시 추가해야 함

  5. DNS 서버 구성

    1. 절차

      1. 패키지 설지

      2. 네트워크 구성 (고정 IP, DNS 서버 등록, 호스트네임 설정)

      3. 서비스 설정 (/etc/named.conf, /var/named/zonefile 설정)

      4. 서비스 활성화 (named)

      5. 방화벽 설정 (dns)

      6. 설정 확인

  6. DNS 영역 구성

    1. DNS 영역

      1. DNS 영역 이란 특정 기관이나 관리자에 의해 관리되는 DNS 정보의 영역
      2. DNS 정보를 관리상의 목적으로 계층적인 영역(Zone)으로 만든 개념이라 할 수 있음
      3. 최상위에 DNS root 도메인이 있고 이에 매칭되는 첫 DNS Zone은 이 root 도메인 영역을 담당
      4. 그다음 계층은 TLD(Top Level Domain), 그다음은 각각의 서브 도메인 순서로 만들어진다. 같은 계층의 도메인이라도 별도 관리가 필요한 경우 별도의 Zone으로 관리할 수 있음
    2. 영역 파일

      1. 영역 파일은 각 Zone의 정보와 Zone 내의 Record 정보들을 기술한 텍스트 파일

      2. 이 파일은 DNS 서버에 존재하며 설정 파일 및 정보를 제공하는 데이터베이스와 같은 역할을 함

      3. 영역 파일은 DNS의 마스터 - 슬레이브 설정 시, 슬레이브가 DNS 설정 복제(replication)을 위해 마스터에서 주기적으로 업데이트 여부를 확인하고, 업데이트가 있다면 가져오는 정보이기도 함

      4. 자체적으로 DNS를 운영하는 경우, Zone 파일은 /var/named/userdomainname.com.zone 와 같은 경로에서 얻을 수 있음

      5. 도메인에 대한 정보나 도메인 내의 호스트에 대한 정보를 가지고 있는 파일

      6. 영역 파일 생성 위치는 /var/named/ 디렉토리

      7. 영역파일의 필수 레코드는 SOA 레코드임

      8. SOA 레코드 구문 $TTL name class type mname rname serial refresh retry expire minimum

        • $TTL : 도메인 정보의 수명을 의미
        • name : 영역의 이름, 즉 origin. 필드를 @ 로 설정하면 BIND가 /etc/named.conf 에 정의된 영역 이름으로 확장
        • class : SOA 레코드에서는 이 필드를 항상 인터넷(IN)으로 설정해야 함
        • type : SOA 레코드에서는 이 필드를 항상 SOA 로 설정해야 함
        • mname (마스터 이름) : 이 영역의 기본 이름 서버의 호스트명
        • rname (Responsible name) : 이 영역을 담당하는 사용자의 이메일 주소 ⇒ ‘@’ 대신에 ‘.’이 들어간다
        • serial : 영역 파일의 버전 번호로 도메인 정보의 갱신 여부를 판단하기 위해서 사용 (yyyy-mm-dd or number)
        • refresh : 영역이 업데이트된 경우 기본 서버를 확인하기 전에 보조 서버가 대기하는 시간
        • retry : 실패한 시도 후 보조 서버가 주 서버를 쿼리하기 위해 다시 시도한 후의 시간
        • expire 날짜 : 이전 시도가 모두 실패한 경우 보조 서버가 주 서버 쿼리를 중지한 후의 시간
        • minimum : 캐싱 DNS 서버에서 도메인의 레코드가 유지될 기간을 지정
      9. 영역 파일은 /var/named/named.empty 파일을 템플릿으로 사용해서 생성함

      10. 정방향 조회 영역 파일

      11. 역방향 조회 영역 파일

    3. 영역 구성

      1. /etc/named.conf 영역 정보 설정

        • DNS 서버의 연결정보와 함께 BIND를 통해 서비스할 영역에 대한 설정을 저장
        • 루트 영역에 대한 정보를 담고 있음
        • 루트 영역은 일반적으로 ‘.’ 기호로 표시하고, 최상위 도메인을 의미
        • include로 시작하는 라인은 named.conf와 함께 포함시킬 설정 파일을 지정
      2. 전달 영역 설정

        1. 전달 영역은 이름을 IP 주소 및 기타 정보에 매핑

        2. 예를 들어 도메인 test.example.com을 담당하는 경우 www.test.example.com과 같은 이름을 확인하도록 BIND에 전달 영역을 설정할 수 있음.

        3. zone

          1. 도메인명 자리에 설정하려는 도메인 이름을 기재

          2. 리버스 존 파일에 대한 설정은 맨 마지막 주소를 제외하고 "50.247.203.in-addr.arpa" 형식으로 기재 (ip주소 반대로)

          3. type
            • DNS의 종류
            • master는 Primary, slave는 Secondary, hint는 resolving을 위한 root zone 서버를 나타냄

          4. file
            • 사용하려는 영역 파일명을 기재
            • 일반적인 존 파일명은 "도메인명.zone"으로 설정
            • 리버스 존 파일은 "도메인명.rev"로 설정하기도 함

  7. Master/ slave

    1. Secondary nameserver 의 사용
      1. Primary server 는 해당 도메인을 관리하는 주 네임 서버고 이를 backup 해주는
        server가 secondary server 임
        https://what-when-how.com/wp-content/uploads/2012/03/tmp195_thumb_thumb.jpg
        출처: https://what-when-how.com/wp-content/uploads/2012/03/tmp195_thumb_thumb.jpg
      2. Primary 가 비정상 운영될 때나 부하를 분산시키기 위해 다수 존재
      3. 상시 primary server의 data 를 backup 받기 위한 동기화 설정요구
    2. Master nameserver 설정: /etc/named.conf 추가 설정
    3. Master nameserver 설정: /var/named/zone file 추가 설정
    4. Slave nameserver 설정: /etc/named.conf 설정
profile
공릉동에 살며 백엔드를 공부하는 감자입니다.

0개의 댓글