본문 바로가기
Base/Linux(CentOS)

19. Server (1 - DNS)

by 귀멸 2022. 6. 28.

0. DNS
  - Domain Name Service or Domain Name System
  - Internet에 존재하는 무수히 많은 서버들을 사람이 쉽게 기억하고 접근할 수 있도록
    문자주소(FQDN)를 이용한 접근을 도와주는 서버
     >> 문자주소(FQDN) ↔ IP address 상호 변환
  - FQDN은 일반적으로 말하는 도메인 주소
     >> host name과 domain name으로 구성
 (ex. www.google.com 이라는 주소가 있다면 www가 host name, google.com이 domain name)
     >> 영문자 및 숫자를 사용한 이름으로 자원에 대한 접근이 가능
  - DNS server가 FQDN을 IP address로 변경할 때 Domain Namespace를 바탕으로 하여
     domain name을 사용하는 nameserver에서 FQDN에 대한 IP address를 받아온다. 
     >> Domain Namespace에 등록된 서버의 IP를 알아온다.
 
  - 정보
    패키지    : bind-*
    데몬        : named
    방화벽    : port=53/tcp, service=dns
    설정파일 : /etc/named.conf


  - 설치 및 설정파일 
    yum -y install bind-*
    vi /etc/named.conf

     12 options {
     13         listen-on port 53 { any; }; : 아무나 들어와서 요청할 수 있도록 변경
     14         listen-on-v6 port 53 { ::1; };
     15         directory       "/var/named"; : 아래 파일들이 들어 있는 디렉토리
     16         dump-file       "/var/named/data/cache_dump.db";
     17         statistics-file "/var/named/data/named_stats.txt";
     18         memstatistics-file "/var/named/data/named_mem_stats.txt";
     19         recursing-file  "/var/named/data/named.recursing";
     20         secroots-file   "/var/named/data/named.secroots";
     21         allow-query     { any; }; : 아무나 들어와서 요청할 수 있도록 변경

     33         recursion yes;

     54     zone "." IN { : root hint
     55             type hint;
     56             file "named.ca";
     57     };

     59 include "/etc/named.rfc1912.zones"; : named.conf 파일에서 해당 파일을 읽어와서 쓰겠다
                                                                      dns 구성에 관련된 파일
     60 include "/etc/named.root.key";          : named.conf 파일에서 해당 파일을 읽어와서 쓰겠다 


      vi /etc/named.rfc1912.zones  : 기본적으로 5개의 zone 영역이 셋팅되어 있다
                                                        rfc는 통신 규약들을 모아서 저장해 놓은 파일


     43 zone "linux.edu" IN { : 해당 zone 영역 추가
     44         type master;
     45         file "linux.edu.zone"; : 이 파일을 /var/named에 만들어 준다
     46         allow-update { any; };
     47         allow-transfer { any; };
     48 };

        * zone 영역 설명
         zone "이름" IN {
         옵션들
         type ; 종류 옵션
               - master : G 영역
               - slave : G 영역의 읽기 전용 복사본 (기존 master를 보조하는 역할)
         file ; 상세 설정이 저장된 파일 이름
         allow-update ; 업데이트 알림 전송 (서버의 데이터 업데이트를 slave에게 알려줌)
         allow-transfer ; 영역 전송 (서버 데이터를 slave에게 전송)
         };

 

++ 마스터와 슬레이브 보충 설명 (출처 :https://thebook.io/00/007046/ch07/02/04/)

DNS 서버는 마스터(Master, Primary) 서버와 슬레이브(Slave, Secondary) 서버로 나눌 수 있습니다. 마스터 서버가 우선순위가 더 높지 않고 두 서버 모두 도메인 쿼리에 응답합니다. 마스터와 슬레이브는 도메인에 대한 존(Zone) 파일을 직접 관리하는지 여부로 구분합니다. 마스터 서버는 존 파일을 직접 생성해 도메인 관련 정보를 관리하고 슬레이브 서버는 마스터에 만들어진 존 파일을 복제합니다. 이 과정을 ‘영역 전송(Zone Transfer)’이라고 합니다. 마스터 서버는 도메인 영역을 생성하고 레코드를 직접 관리하지만 슬레이브 서버는 마스터 서버에 설정된 도메인이 가진 레코드값을 정기적으로 복제합니다.

     [root@server named]# vi linux.edu.zone : cd /var/named 이동하여 파일 작성
      1 $TTL 86400
      2 @       IN SOA  linux.edu.              root(
      3                                                       0           ; serial
      4                                                       86400   ; refresh
      5                                                       3600     ; retry
      6                                                       604800 ; expire
      7                                                       10800 ) ; minimum
      8         IN      NS      linux.edu.
      9         IN      A       192.168.10.128
     10
     11 www     IN      A       192.168.10.128

  정방향 조회 영역 ; FQDN을 IP주소로 변환
  사용자의 편의를 위한 영역

  역방향 조회 영역 ; IP주소를 FQDN으로 변환
  정방향 영역의 신뢰성을 높이기 위해 사용
  메일 서버 구성 시 사용

  * 정방향/역방향 조회 영역에 대한 설정
    linux.edu.zone & 
    192.168.10.zone & 
    동일한 내용의 파일 마지막 줄만 다르다
      
    TTL : 생존 기간
    IN : internet에서 사용한다
    SOA(start of authority) : 인증 레코드(네임서버에서 사용하는 자원)
    NS : 네임서버 레코드
    A : Host IP 레코드
    PTR : 
         11 www     IN      A       192.168.10.128 (정방향 조회)
         11 128     IN      PTR     www.linux.edu. ( 
    serial  : 시리얼 넘버 (이 데이터의 개정 번호) - 보조 영역이 비교하고 업데이트 여부 알게 됨
    refresh : 갱신 시도 시간  
    retry : 갱신 실패 시 대기 시간
    expire : 갱신에 계속 실패하여 해당 시간이 흐르면 정보 파기
    minimum : 정보의 최소 생존값 

    [root@server named]# vi /etc/named.rfc1912.zones : zone영역 추가
     50 zone "10.168.192.in-addr.arpa" IN {
     51         type master;
     52         file "192.168.10.zone";
     53         allow-update { any; };
     54         allow-transfer { any; };
     55 };

    [root@server named]# vi 192.168.10.zone    : cd /var/named에서 해당 파일 작성
      1 $TTL 1D
      2 @       IN SOA  linux.edu.              root(
      3                                                       0         ; serial
      4                                                       1D      ; refresh
      5                                                       1H      ; retry
      6                                                       1W     ; expire
      7                                                       3H )    ; minimum
      8         IN      NS      linux.edu.
      9         IN      A       192.168.10.128
     10
     11 128     IN      PTR     www.linux.edu.
      
     [root@server named]# chmod 660 *.zone : 만들어준 파일들 권한 수정
     [root@server named]# chown .named *.zone
     [root@server named]# systemctl restart named : 데몬 재실행

     [root@server named]# vi /etc/resolv.conf
     nameserver 192.168.10.128 : 추가 (재부팅 시 초기화 되므로 다시 입력)

     [root@server named]# nslookup : 설정 완료 되었는지 확인
     > 
     > www.linux.edu
     Server:         192.168.10.128
     Address:        192.168.10.128#53

     Name:   www.linux.edu
     Address: 192.168.10.128
     > 192.168.10.128
     128.10.168.192.in-addr.arpa     name = www.linux.edu.
     >
     > exit
     
1. Domain Namespace
    - InterNIC에서 관리, Tree 구조로 구성되어 있다
       > 효율적인 관리를 위해 최상위에 root domain을 운용하고 root domain에서 top-level domain으로,
    - top-level domain에서 second-level domain으로 각각 위임 처리를 한다
       > second-level domain에서는 목적지 FQDN의 IP를 확인하여 돌려준다

    - 구조 예시
.      ───┬ com ────┬ naver.com                ┌ drive
               ├ net             ├ google.com ─────├ map
               └ org             └ nate.com                   www
       root     top-level     second-level                   host
       domain   domain      domain                        name

   - root domain
     > InterNIC에서 관리하는 Domain namespace의 최상위 서버
     > 전 세계에 총 13개가 있으며 a ~ m 까지의 이름을 붙여서 식별

   - top-level domain
     > FQDN의 마지막 단락
       (ex. com, net, org 등)
     > 해당 이름으로 끝나는 second-level domain들의 주소를 갖고 있다
        (위임 처리가 되어 있어서 해당 nameserver의 주소를 알려준다)

   - second-level domain
     > 일반적으로 각 회사에서 운용하는 nameserver
        (ex. google.com, nate.com 등)
     > FQDN에서의 host name을 record를 이용하여 특정 IP address에 매핑
        (host name + domain name이 되면서 해당 IP address를 안내)

2. DNS server의 역할
 ㄱ. IP address와 FQDN을 상호 변환
       * 사용자가 자신의 컴퓨터(DNS client)에 FQDN을 입력하면 
  1) client는 자신의 cache 확인(hosts 파일 확인 후 DNS cache 확인)
  2) IP 설정의 DNS server 주소를 확인하여 해당 장치에 FQDN에 대한 IP address 질의
  3) 질의를 받은 DNS server는 자신의 zone 영역을 확인
  4) zone 영역에 해당 주소가 없다면 자신의 cache 확인(hosts 파일 확인 후 DNS cache 확인)
  5) root hint를 확인하여 root domain의 IP address를 확인하고 FQDN을 질의
  6) root domain은 FQDN 중 top-level domain을 확인하여 해당 nameserver의 주소를 돌려준다
  7) DNS server는 top-level domain에 FQDN을 질의
  8) top-level domain은 FQDN 중 second-level domain을 확인, 해당 nameserver 주소를 돌려줌
  9) DNS server는 second-level domain에 FQDN을 질의
  10) second-level domain은 자신의 record를 확인하여 FQDN 중 host name과 일치하는 이름의 
        record에 적혀있는 IP address를 DNS server에게 돌려준다 
  11) DNS server는 5 ~ 10번 과정을 거치면서 알게 된 주소들을 자신의 cache에 저장
  12) client에게 FQDN에 대한 IP adress를 돌려준다
  13) client는 자신의 cache에 FQDN에 대한 IP address를 저장 후 해당 주소로 연결

    ** root hint : root domain들의 주소를 담고 있는 파일
                        DNS server 설치 시 함께 설치
 
 ㄴ. nameserver 구성
   - DNS server를 설치하면 nameserver를 구성할 수 있는(= zone 영역을 만들 수 있는) 파일이 함께 설치
      > 파일의 내용을 작성하여 nameserver로 동작이 가능하다
   - root domain, top-level domain, second-level domain은 전부 nameserver

3. Linux에 기본적으로 존재하는 DNS 관련 파일
 1) /etc/hosts

    vi /etc/hosts

    IP주소 문자주소 [문자주소] ... [문자주소]

    컴퓨터에 해당 문자주소가 입력되면 같은 줄에 적혀 있는 IP주소로 연결한다
    해당 파일을 변조하여 공격 할 수 있음 (hosts 파일 변조 공격)


  2) /etc/resolv.conf
    vi /etc/resolv.conf
    nameserver <DNS IP>

    컴퓨터에 입력된 FQDN에 대한 IP 주소를 모른다면 이 파일을 보고 DNS server로 찾아간다
     > network 데몬이 실행 될 때 마다 IP 설정 중 DNS 주소가 resolv.conf에 작성된다

'Base > Linux(CentOS)' 카테고리의 다른 글

21. Server (3 - DB Server mariadb)  (0) 2022.06.29
20. Server (2 - Web server httpd)  (0) 2022.06.28
18. samba / DHCP  (0) 2022.06.28
17. NFS / autofs 네크워트 마운트 사용  (0) 2022.06.27
16 . auto mount  (0) 2022.06.27

댓글