[네이버클라우드] AIaaS 개발자 과정/Linux

[네이버클라우드캠프] 2023.5.2 Linux(1) - DNS server

_꼬마돌 2023. 5. 2. 10:25
반응형

DNS server

Domain과 Hostname 개념

domain은 네트워크의 외부 이름
ex) naver.com

hostname은 네트워크 내부의 컴퓨터를 구분하기 위한 이름
ex) www.naver.com

 

DNS가 필요한 이유

domain을 ip로 변환해주고 반대의 기능도 한다.
네트워크에 참여하는 컴퓨터가 많지 않을 때는 /etc/hosts 파일만으로 통신할 수 있었지만 네트워크에 참여하는 컴퓨터가 늘어나면서 모든 정보를 기억하는 것이 불가능해졌다.

 

DNS란

Dns에 들어가기에 앞서 중요한 정보들을 소개한다.

nslookup
입력하는 주소에 대한 ip 정보를 가져온다.
ip를 입력할 경우 컴퓨터의 hostname을 볼 수 있다. 

리눅스에서 nslookup 명령어로 naver.com의 ip정보를 출력한 모습.

 

네임서버의 구조

네임서버의 작동은 높은 곳에서 부터 시작된다.
만약 naver.com을 사용자가 입력하면 개인 네임서버 → Root 네임서버 → Com 네임서버  Naver의 순으로 작동.

 

BIND

Berkeley Internset Name Domain의 약어로, 인터넷에서 가장 널리 사용되는 DNS서버 소프트웨어이다.
BIND는 DNS 시스템의 구성, 관리 및 조회를 가능하게 하는 기능을 제공한다. 

BIND 설치 방법

apt install -y bind9 bind9utils bind9-doc dnsutils

시작

systemctl start bind9

수정 후 적용

systemctl restart bind9

 

Zone

DNS에서 Zone은 동일한 DNS 정보를 포함하는 영역을 말한다.
Zone은 일반적으로 인터넷에 공개되어 있는 Domain이름 (예: google.com, facebook.com)을 포함하며, DNS 서버는 각각의 Zone을 관리한다. 각 Zone에는 해당 영역의 DNS 레코드 정보가 포함된다. 이DNS 레코드 정보는 해당 Zone에 속한 호스트 이름과 IP 주소 간의 매핑 및 기타 정보를 포함한다.

예를 들어, "example.com"도메인의 경우, "example.com"을 포함하는 Zone이 존재하며, 이 Zone에는 "www.example.com" 및 "mail.example.com"과 같은 호스트 이름과 해당 호스트의 IP주소가 포함된다. DNS 클라이언트가 "www.example.com"에 대한 IP주소를 찾으려면 DNS 서버가 "example.com" Zone에서 해당 정보를 찾아 반환해야 한다.

 

Zone 만들어보기

Zone 만들기 조건
nc.zone , nc.rev
Domain: nc.co.kr
200.100.50.10 ns.nc.co.kr
200.100.50.20 www.nc.co.kr
200.100.50.30 ftp.nc.co.kr
200.100.50.40 mail.nc.co.kr
CNAME web www
ai bind9      # bind9 설치   alias ai='apt -y install'

cd /etc/bind  # /etc/bind 디렉터리로 이동

vi named.conf.options   # named.conf.options 편집기 실행

named.conf.options 편집기를 실행한 모습
위 화면과 같이 입력

편집기 입력내용
21     dnssec-validation no; // auto => no   # '//' 표시로 주석처리하여 수정하기 전 상태를 표시
22     recursion yes;
23     allow-query { any; };
24     listen-on-v6 { any; };
위 내용 편집기에서 저장 한 뒤,
vi named.conf.default-zones   # named.conf.default-zones 편집기 실행

named.conf.default-zones 편집기 실행한 모습. 맨 아래로 내려준다.
사진과 같이 입력해준다.

편집기 입력 내용
 30 zone "nc.co.kr" {
 31     type master;
 32     file "/etc/bind/nc.zone";
 33 };
 34
 35 zone "50.100.200.in-addr.arpa" {
 36     type master;
 37     file "/etc/bind/nc.rev";
 38 };
cp db.local nc.zone   # db.local 을 nc.zone으로 복사

vi nc.zone     # nc.zone 편집기 실행

nc.zone 편집기 실행한 모습.
위 사진과 같이 입력해준다.

편집기 입력 내용
  1 ;
  2 ; BIND data file for local loopback interface
  3 ;
  4 $TTL    604800
  5 @   IN  SOA nc.co.kr.   master.nc.co.kr. (
  6                   2     ; Serial
  7              604800     ; Refresh
  8               86400     ; Retry
  9             2419200     ; Expire
 10              604800 )   ; Negative Cache TTL
 11 ;
 12 @   IN  NS  nc.co.kr.
 13     IN  A   200.100.50.10
 14 ns  IN  A   200.100.50.10
 15 www IN  A   200.100.50.20
 16 ftp IN  A   200.100.50.30
 17 mail    IN  A   200.100.50.40
 18 web     IN  CNAME   www
cp nc.zone nc.rev   # nc.zone을 nc.rev로 복사

vi nc.rev   # nc.rev 편집기 실행

nc.rev 편집기 실행한 모습.
위 사진과 같이 입력해준다.

 편집기 입력내용
  1 ;
  2 ; BIND data file for local loopback interface
  3 ;
  4 $TTL    604800
  5 @   IN  SOA nc.co.kr.   master.nc.co.kr. (
  6                   2     ; Serial
  7              604800     ; Refresh
  8               86400     ; Retry
  9             2419200     ; Expire
 10              604800 )   ; Negative Cache TTL
 11 ;
 12 @   IN  NS  nc.co.kr.
 13     IN  A   200.100.50.10
 14     IN  PTR nc.co.kr.
 15 10  IN  PTR ns.nc.co.kr.
 16 20  IN  PTR www.nc.co.kr.
 17 30  IN  PTR ftp.nc.co.kr.
 18 40  IN  PTR mail.nc.co.kr.
 19 web CNAME   www
systemctl restart named   # named 실행

nslookup    # nslookup 실행
> server 127.0.0.1          # 서버를 내 IP로 변경
Default server: 127.0.0.1
Address: 127.0.0.1#53
> server                    # 서버가 정상적으로 바뀌었는지 확인
Default server: 127.0.0.1   # 설정한 대로 127.0.0.1이 나오는 것을 볼 수 있다.
Address: 127.0.0.1#53
> nc.co.kr                  # 만들어 놓은 Zone 입력
;; communications error to 127.0.0.1#53: timed out
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   nc.co.kr
Address: 200.100.50.10      # 설정해 놓은 IP주소가 정상적으로 출력된다. Zone 만들기 성공!

> 200.100.50.30             # 반대로 IP주소를 입력했을 때도 정상적으로 작동하는지 확인
;; communications error to 127.0.0.1#53: timed out
30.50.100.200.in-addr.arpa    name = ftp.nc.co.kr. # ftp.nc.co.kr 이 정상적으로 출력되는 것을 볼 수 있다. 성공!!

Zone이 설정한 대로 정상적으로 만들어졌다.

 

각 레코드에 대한 설명

Record Record의 의미
  @   domain 자체를 의미. 여기서는 nc.co.kr을 말한다. origin이라고도 함.
  IN   Internet address class를 뜻하며, 일반적으로 사용.
  SOA   Start of Authority. 해당 domain에 대한 모든 권리를 갖는다.
  여기서는 nc.co.kr domain에 대해 ns.nc.co.kr이 모든 권한을 갖는다.
  NS   nameserver domain에 대한 nameserver 를 지정한다.
  A   Address domain에 대한 ip정보를 나타낸다.
  PTR   Pointer ip에 대해 domain 정보를 나타낸다.
  MX   main Exchange domain에 대해 들어온 메일을 포워딩할 서버를 지정한다.
  숫자가 적을수록 우선순위가 높다.
  CNAME   Canoical Name. 하나의 domain에 여러개의 이름을 가질 수 있도록 alias해주는 기능.
  HINFO   HareWare information 서버의 cpu 종류와 OS 종류를 표기한다. 대부분 사용하지 않음.

 

2차 DNS의 개념과 필요성

nameserver가 중지되면 모든 서비스가 마비된다. nameserver가 한 대 밖에 없는데, 그 서버에 문제가 발생하여 서비스를 할 수 없다면 web, ftp, mail 등 다른 서버가 잘 작동하고 있다고 할지라도 서비스를 할 수 없다.
Master 서버에 문제가 발생할 것에 대비하여 slave 2차 서버를 준비해두는 것이다.
두 서버는 스스로 통신하며 항상 새로운 데이터를 가지게 되는데, 아래의 표는 master와 slave가 서로 통신할 때 필요한 설정을 나타낸다.
표기 각 표기의 의미
  Serial   master의 version 표시. slave가 비교할 수 있게 해야한다.
  Refresh   접속 주기 기본 값 (8시간)
  Retry   재접속 주기.
  접속을 시도했는데 master에 문제가 발생하여 접속되지 않을 때 다시 접속을 시도하는 시간.
  (기본 4시간)
  Expire   파기할 시간. 
  일정기간 접속되지 않으면 기존 정보를 파기한다. (기본 약 41일)
  Minimum   다른 ns가 자신의 ns정보를 가져갔을 때 가져간 측의 cache에 살아있는 시간(TTL)
  기본 1일.

반응형