[CS] DNS: DomainNameServer

Nam_JU·2022년 9월 11일
0

Computer Science

목록 보기
2/6

DNS - Domain Name Server

  • IP주소를 대신하여 사용하는 주소이다
  • DNS라는 시스템을 이용해서 IP와 도메인을 매칭한다
  • DNS란 웹사이트의 IP와 도메인 주소를 이어주는 환경/시스템이다
  • DNS 시스템 안에서 IP와 도메인 매칭을 하는 역할을 하는 것이 DNS서버이다.
  • DNS서버와 네임서버는 같은 의미이다

OSI-7Layer Protocol

네트워크 프로토콜은 크게 두가지로 나뉘어진다. 실제로 데이터를 실어 나르는 데이터 프로토콜과 데이터 프로토콜이 잘 동작하도록 도와주는 컨트롤 프로토콜이다.

  • 데이터 프로토콜 : 실제로 데이터를 실어나르는 데이터 프로토콜
  • 컨트롤 프로토콜: 데이터 프로토콜이 잘 동작하도록 도와주는 프로토콜

DNS는 컨트롤 프로토콜이다

컨트롤 프로토콜에는 ARP, ICMP, DNS가 있다.
DNS는 도메인 주소를 IP주소로 변환하는 역할을 한다.

등장 배경

인터넷에 연결한 컴퓨터가 많이 없던 당시 컴퓨터 주소인 IP를 쉽게 외울수 있었다. 하지만 지금과 같이 무수한 컴퓨터가 있고 다양한 네트워크가 생기면서 IP주소를 외우기엔 어려워졌다.

hosts 파일의 등장

외운 것을 적어놓으면 어떨까?
IP주소를 적고 영희네집 번호 라고 적어두는 것이다.
102.54.94.97 - 영희네집 번호
이렇게 영희네집이라고 검색을 하면 hosts파일을 검색하여 해당 IP를 찾아 접속할수 있는 시스템이 등장했다.

영희네집이 번호를 바꿔버렸네?

핸드폰을 바꾸면 종종 번호도 바뀌듯이 이런 바뀐 번호는 각자 알아서 hosts 파일에 수정을 해야했다. 하지만 이런게 수십 수백건이 된다면 처리하기가 어려워진다.
그래서 이것을 전문으로 일하는 서버가 필요해졌고 이를 네임서버 또는 DNS 서버라고 부르게 되었다.

네임 서버는 인터넷에서 변화하는 모든 컴퓨터의 URL과 IP정보를 거의 실시간으로 제공하므로 사용자는 더이상 URL에 해당하는 IP주소를 신경 쓸 필요가 없어졌다. URL만 알면 어디서든 해당 컴퓨터에 접속 할 수 있게 되었다.


네임서버 확인해보기


  1. nslookup명령어
  2. server 입력
  3. 구글과 네이버 를 검색하면 IP주소를 확인할 수 있다.

    www는 없애고 검색해야 한다


DNS 실습1 : 로컬


로컬 DNS

내 핸드폰에 친구들의 모든 주소를 갖고 있지 않듯이 로컬 네임 서버 혼자 세계 모든 컴퓨터의 도메인 이름을 관리할 수 없다.
로컬 DNS 서버에 등록된 주소로 다른 클라이언트 haha가 해당 IP가 있는지 물어보고 접속이 가능한지 확인



  • 매일서버가 설치되어있는지 확인
[root@server3 ~]# rpm -qa|grep bind
bind-utils-9.9.4-72.el7.x86_64
bind-libs-9.9.4-72.el7.x86_64
bind-license-9.9.4-72.el7.noarch
keybinder3-0.3.0-1.el7.x86_64
bind-libs-lite-9.9.4-72.el7.x86_64
rpcbind-0.2.0-47.el7.x86_64
[root@server3 ~]#
[root@server3 ~]# dnf -y install bind bind-chroot
  • 로컬 네임서버와 관련된 설정파일 수정
[root@server3 ~]# vi /etc/named.conf
  • set :nu 를 입력해서 13,14,21,36 수정
    • 가상 머신 네트워크 누소 내 모든 컴퓨터가 DNS를 사용할 수 있게 설정함

  • 서비스 재시작 systemctl restart named
  • 서비스 상시 가동 systemctl enable named
  • 서비스 상태 확인 systemctl status named
[root@server3 ~]# vi /etc/named.conf
[root@server3 ~]# systemctl restart named
[root@server3 ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@server3 ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2022-09-11 10:29:27 KST; 29s ago
 Main PID: 15137 (named)
   CGroup: /system.slice/named.service
           └─15137 /usr/sbin/named -u named -c /etc/named.conf

Sep 11 10:29:27 server3.com named[15137]: network unreachable resolving './D...3
Sep 11 10:29:27 server3.com named[15137]: network unreachable resolving './N...3
Sep 11 10:29:27 server3.com named[15137]: network unreachable resolving './D...3
Sep 11 10:29:27 server3.com named[15137]: network unreachable resolving './N...3
Sep 11 10:29:27 server3.com named[15137]: network unreachable resolving './D...3
Sep 11 10:29:27 server3.com named[15137]: network unreachable resolving './N...3
Sep 11 10:29:27 server3.com named[15137]: network unreachable resolving './D...3
Sep 11 10:29:27 server3.com named[15137]: network unreachable resolving './N...3
Sep 11 10:29:27 server3.com named[15137]: resolver priming query complete
Sep 11 10:29:27 server3.com named[15137]: managed-keys-zone: Key 20326 for z...d
Hint: Some lines were ellipsized, use -l to show in full.
[root@server3 ~]#
  • 방화벽 설정
[root@server3 ~]# firewall-cmd --permanent --add-port=53/tcp
success
[root@server3 ~]# firewall-cmd --permanent --add-port=53/udp
success
[root@server3 ~]# firewall-cmd --permanent --add-service=dns
success
[root@server3 ~]#
  • dig 명령어 수행
[root@server3 ~]#
[root@server3 ~]# dig @192.168.56.103 www.kakao.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> @192.168.56.103 www.kakao.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41965
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.kakao.com.                 IN      A

;; ANSWER SECTION:
www.kakao.com.          600     IN      A       211.249.221.105

;; AUTHORITY SECTION:
kakao.com.              172800  IN      NS      ns1.kakao.com.
kakao.com.              172800  IN      NS      ns2.kakao.com.

;; ADDITIONAL SECTION:
ns1.kakao.com.          172800  IN      A       113.61.106.5
ns2.kakao.com.          172800  IN      A       113.61.107.5

;; Query time: 53 msec
;; SERVER: 192.168.56.103#53(192.168.56.103)
;; WHEN: Sun Sep 11 10:34:00 KST 2022
;; MSG SIZE  rcvd: 126

[root@server3 ~]#

해당 서버에 haha라는 유저를 생성하여 접속한다

제대로 DNS가 작동되는지 확인

  • 완료사진


DNS 실습2 : 마스터


마스터 네임 서버 (Master DNS)

  • 도메인에 속해 있는 컴퓨터들의 이름을 관리
  • 외부에서 www.john.com이나 ftp.john.com등의 컴퓨터 IP주소를 알고자 할때 해당 컴퓨터의 IP주소를 알려주는 네임서버를 말한다.
  • 도메인에 속해있는 컴퓨터들의 이름을 관리하고 외부에 해당 컴퓨터의 IP 주소를 알려주는 역할을 한다

구현 과정

  • 웹서버가 설치되어있는지 확인

  • 방화벽 해제

[root@server3 ~]#
[root@server3 ~]# firewall-cmd --permanent --zone=dmz --add-service=http
success
[root@server3 ~]# firewall-cmd --permanent --zone=dmz --add-service=https
success
[root@server3 ~]#
  • vi /var/www/html/index.html : 테스트할 html 넣기
  • vi /etc/named.conf → 가장 아랫줄에 명령문 넣기
zone "john.com" IN {
        type master;
        file "john.com.db";
        allow-update { none;};
};
  • 문법확인
[root@server3 ~]# named-checkconf
[root@server3 ~]#
  • vi john.com.db
$TTL            3H
@       SOA     @       root.   ( 2     1D      1H      1W      1H )
        IN      NS      @
        IN      A       192.168.56.103

WWW     IN      A       192.168.56.103
ftp     IN      A       192.168.56.102
  • 문법확인
[root@server3 named]# named-checkzone john.com john.com.db
zone john.com/IN: loaded serial 2
OK
[root@server3 named]#
  • 설정 적용
[root@server3 named]# systemctl restart named
[root@server3 named]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2022-09-11 11:38:23 KST; 5s ago
  Process: 17528 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 17544 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 17540 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 17545 (named)
    Tasks: 7
   CGroup: /system.slice/named.service
           └─17545 /usr/sbin/named -u named -c /etc/named.conf

Sep 11 11:38:23 server3.com named[17545]: network unreachable resolving './N...3
Sep 11 11:38:23 server3.com systemd[1]: Started Berkeley Internet Name Domai....
Sep 11 11:38:23 server3.com named[17545]: network unreachable resolving './D...3
Sep 11 11:38:23 server3.com named[17545]: network unreachable resolving './N...3
Sep 11 11:38:23 server3.com named[17545]: network unreachable resolving './D...3
Sep 11 11:38:23 server3.com named[17545]: network unreachable resolving './N...3
Sep 11 11:38:23 server3.com named[17545]: network unreachable resolving './D...3
Sep 11 11:38:23 server3.com named[17545]: network unreachable resolving './N...3
Sep 11 11:38:24 server3.com named[17545]: resolver priming query complete
Sep 11 11:38:24 server3.com named[17545]: managed-keys-zone: Key 20326 for z...d
Hint: Some lines were ellipsized, use -l to show in full.
[root@server3 named]#

  • 완료사진


profile
개발기록

0개의 댓글