서버/Linux III 2016. 3. 22. 11:44

Linux III - 09. DNS 서비스 이해

 


 

login as: root
root@192.168.1.100's password:
Last login: Tue Mar 22 14:23:32 2016 from 192.168.1.1
[root@main /root]#

 



 

1. DNS(Domain Name System)

 

호스트가 특정 사이트 및 시스템/장비를 접속할 경우, 목적지 IP 주소가 설정되어야 한다. 이때, 호스트가 모든 IP 주소 정보를 알고 있거나, 관리하는 방법은 상당히 번거로운 작업이 될 것이다.

 

이때, DNS 서버(Name Server)를 운영하면, 호스트는 DNS 서버에게 DNS 요청을 실시하여, 해당 사이트 및 시스템/장비에 대한 IP 주소 정보를 학습하게 된다. 이러한 서비스를 DNS 서비스라고 하며, IP 주소 정보를 응답해주는 시스템을 DNS 서버라고 한다.

 

다음은 PC(Windows)에서 'nslookup' 명령어를 이용하여 DNS 요청 및 응답 테스트를 실시한것이다.

 

 

C:\Users\kjw>nslookup www.google.com
Server:  kns.kornet.net
Address:  168.126.63.1 <- 코넷 DNS 서버

 

Non-authoritative answer:
Name:    www.google.com
Addresses:  2404:6800:4004:80f::2004 <- 'www.google.com' 웹-서버 IPv6 주소
                  216.58.220.228 <- 'www.google.com' 웹-서버 IPv4 주소

 

 

다음은 main(Linux)에서 'nslookup' 명령어를 이용하여 DNS 요청 및 응답 테스트를 실시한것이다.

 

[root@main /root]# nslookup www.google.com
Server:         168.126.63.1
Address:        168.126.63.1#53

 

Non-authoritative answer:
Name:   www.google.com
Address: 216.58.220.228                [클릭] http://216.58.220.228

 

 

호스트에서 'www.google.com' 실시

 

 

'/etc/host.conf' 파일을 참조한다. 만약,'multi on'으로 되어있으면, '/etc/hosts' 파일을 참조한다.

 

[root@main /root]# cat /etc/host.conf
multi on

 

 

'/etc/hosts' 파일을 참조한다. 해당 IP 주소 정보가 없다면, '/etc/resolv.conf' 파일을 참조한다.


[root@main /root]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.20.1.1  main main.com
172.20.1.101 clone1 clone1.com
172.20.1.111 clone2 clone2.com

 

 

'/etc/resolv.conf' 파일을 참조하여, DNS 서버 '168.126.63.1'에게 DNS 요청을 실시한다.

[root@main /root]# cat /etc/resolv.conf
# Generated by NetworkManager


# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
nameserver 168.126.63.1


 

'168.126.63.1' DNS 서버는 자신의 DNS Zone를 참조하여 IP 주소 정보를 호스트에게 응답한다.

 

 

호스트는 IP 주소 정보 응답을 받았다면, 해당 사이트 및 서버/장비로 접속을 실시한다.

 

 

 

 

 

 

2. 도메인 구조

 

 

 

Ex) 'linux.main.or.kr' 도메인 구조

 

  kr - 1단계 도메인

  or.kr - 2단계 도메인

  main.or.kr - 3단계 도메인

  linux - 호스트 네임

 

도메인은 Root 도메인(.)에서 시작하는 트리 구조로 운영된다. 도메인을 사용하기 위해서는 한국인터넷 진흥원으로부터 도메인을 신청 및 등록하여 사용해야 한다. 또한 도메인은 대소문자 구분이 없으며, 고정 IP 주소가 있어야 한다. 그래야지만 등록된 도메인과 해당 고정 IP 주소를 이용하여 네임 서버를 운영할 수 있으며, 서브 도메인과 호스트를 생성 및 관리할 수 있다.

 

 

[도메인 참고 사이트] http://www.iana.org/domains/root/db

1단계 도메인(Top Level)

2단계 도메인(Second Level)

  com - 일반 기업

  net  - 인터넷 네트워크 기업

  org - 비영리 단체

  gov - 정부 기관

  int - 국제 기구

  edu - 교육 기관

  info - 정보제공 관련

  kr - KISA(한국인터넷진흥원)

  ac - 대학/대학원

  co - 기업/상용 기관

  or - 비영리 기관/단체

  go - 정부 기관

  re - 연구소

  ne - 네트워크

  es, ms, hs - 초, 중, 고등학교

  seoul - 서울시 

 

 

Ex) 'www.main.com' 도메인 해석

 

 - www : 호스트 네임

 - main.com : 도메인 이름

 - www.main.com : FQDN(Fully Qualified Domain Name)

 

도메인 구조는 역순으로 시작한다. main의 도메인은 'main.com'이지만, 실제는 'main.com.'이 된다. 이때, root 도메인(.)은 사용시 생략 가능하다. 도메인 네임 앞에 붙어 있는 'www'는 웹-서버로 사용할 서버의 호스트 네임을 의미하며, 해당 도메인의 네임 서버에서 설정할 수 있다. 만약, 'ftp.main.com', 'mail.main.com'이라는 도메인이 있다면, 이는 각각 FTP 서비스, 이메일 서비스를 하는 서버의 도메인 이름이 되는 것이다.

 

예를들어 쇼핑몰을 운영하기 위해서 'main.com' 도메인을 등록했다고 가정하도록 하자. 도메인을 등록할때는 1차 네임 서버를 지정해야 하며, 필요한 경우 2차 네임 서버도 지정해야 한다. 네임 서버를 지정할 경우, 일반적으로 ns(네임 서버), ns1(1차 네임 서버), ns2(2차 네임 서버) 등의 호스트 네임을 사용하지만, 다음과 같이 다른 호스트 네임을 사용해도 무관하다.

 

 

[패션, 전자기기, 자동차 쇼핑몰을 별도로 운영할 경우]

 

 패션몰 

전자기기몰 

자동차몰 

  도메인

 fashion.main.com

 electronics.main.com 

 motors.main.com

 서브 도메인

fashion.sales.main.com

 electronics.sales.main.com

 motors.sales.main.com

 

 

 

 

 

3. DNS 요청 및 응답 처리 과정

 

 

 ① 사용자가 'linux.main.or.kr'를 접속하기 위해서 1차 네임 서버에게 DNS 요청을 실시한다.

 

 ② DNS 요청을 수신한 1차 네임 서버는 root 네임 서버에게 'linux.main.or.kr' 도메인을 질의한다.

 

 ③ root 네임 서버는 kr 네임서버에게 질의하라고 응답한다.

 

 ④ 1차 네임 서버는 kr 네임 서버에게 'linux.main.or.kr' 도메인을 질의한다.

 

 ⑤ kr 네임 서버는 or.kr 네임 서버에게 질의하라고 응답한다.

 

 ⑥ 1차 네임 서버는 or.kr 네임 서버에게 'linux.main.or.kr' 도메인을 질의한다.

 

 ⑦ or.kr 네임 서버는 main.or.kr 네임 서버에게 질의하라고 응답한다.

 

 ⑧ 1차 네임 서버는  main.or.kr 네임 서버에게 'linux.main.or.kr' 도메인을 질의한다.

 

 ⑨  main.or.kr 네임 서버는 'linux.main.or.kr' 도메인은 'linux.main.or.kr' 네임 서버인 'ns.linux.main.or.kr'에게 위임하였으니,

     'ns.linux.main.or.kr' 네임 서버에게 질의하라고 응답한다.

 

 ⑩ 1차 네임 서버는 ns.linux.main.or.kr 네임 서버에게 'linux.main.or.kr' 도메인을 질의한다

 

 ⑪  ns.linux.main.or.kr 네임 서버는 'linux.main.or.kr' 도메인에 대한 IP 주소 정보를 1차 네임 서버에게 응답한다.

 

 ⑫ 1차 네임 서버는 사용자에게 'linux.main.or.kr' 도메인에 대한 IP 주소 정보를 응답한다.

 

 

대부분의 1차 네임 서버는 DNS 요청/응답 내용을 데이터베이스에 캐싱하기 때문에 위의 과정이 매번 진행되는 것은 아니다.

 

또한, 다음과 같이 클라이언트도 DNS 캐싱 정보를 운영한다.

 

 

C:\Users\kjw>ipconfig/flushdns

Windows IP Configuration

Successfully flushed the DNS Resolver Cache

 

 

 - 인터넷 실시

 

 

C:\Users\kjw>ipconfig/displaydns

 

 

 

 

 

4. DNS 서버 유형

 

Primary DNS 서버는 평상시 동작하는 DNS 서버이며, Secondary DNS 서버는 Primary DNS 도메인 정보를 백업하거나, Primary DNS 서버가 장애 발생 및 분산 기능을 수행하는 백업 DNS 서버이다. Primary DNS 서버와 Secondary DNS 서버 구조는 권장사항이다.  

 

Cache DNS 서버는 도메인 정보를 캐싱하여 클라이언트가 Primary DNS로 요청할 필요 없이 바로 사용할 수 있는 DNS 서버이다. 만약, DNS 서버가 원거리에 있을 경우, 로컬 환경에 Cache DNS 서버 운영하여 이용하면 효율적이다. 단, Cache DNS 서버에 등록된 도메인 정보는 일정시간 사용하지 않으면 삭제된다.

 

 유형

내용 

 Primary DNS(Master)

  해당 도메인을 관리하는 DNS 서버

 Secondary DNS(Slave)

  해당 도메인에 대한 백업본 유지 및 Primay 백업 DNS 서버

 Cache DNS

  캐싱 기능만 수행하는 DNS 서버

 Forwarding DNS

  포워딩 기능만 수행하는 DNS 서버

 

 

 

 

 

 

5. DNS 서버 목록

 

인터넷 사용자에게 제공되는 DNS 서버는 다음과 같다.

 

 

 DNS 서버

 

주-서버 

 보조-서버

 Google

 8.8.8.8

8.8.4.4 

 KT

 168.126.63.1

168.126.63.2

 SK

 210.220.163.82

 219.250.36.130

 두루넷

 210.117.65.1

 210.117.65.2

 신비로

 202.30.143.11

 203.30.143.11

 데이콤

 164.124.101.2

 203.248.252.2

 하나로

 131.107.1.7

 210.94.0.7

 드림라인

 210.181.4.25

 210.181.1.24

 

 

 

 

 

6. 네임 서버 정보 검색 명령어

 

[root@main /root]# rpm -ql bind-utils
/usr/bin/dig
/usr/bin/host
/usr/bin/nslookup
/usr/bin/nsupdate
/usr/share/man/man1/dig.1.gz
/usr/share/man/man1/host.1.gz
/usr/share/man/man1/nslookup.1.gz
/usr/share/man/man1/nsupdate.1.gz

 

 

 1) host 명령어

 

[root@main /root]# host www.google.com
www.google.com has address 216.58.221.4
www.google.com has IPv6 address 2404:6800:4004:80f::2004

 

 

[root@main /root]# host -t A -d www.google.com
Trying "www.google.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54601
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 8

 

;; QUESTION SECTION:
;www.google.com.                        IN      A

 

;; ANSWER SECTION:
www.google.com.         139     IN      A       216.58.199.4

 

;; AUTHORITY SECTION:
google.com.             44549   IN      NS      ns4.google.com.
google.com.             44549   IN      NS      ns3.google.com.
google.com.             44549   IN      NS      ns1.google.com.
google.com.             44549   IN      NS      ns2.google.com.

 

;; ADDITIONAL SECTION:
ns1.google.com.         157677  IN      A       216.239.32.10
ns2.google.com.         157640  IN      A       216.239.34.10
ns3.google.com.         157678  IN      A       216.239.36.10
ns4.google.com.         157743  IN      A       216.239.38.10
ns1.google.com.         157706  IN      AAAA    2001:4860:4802:32::a
ns2.google.com.         157682  IN      AAAA    2001:4860:4802:34::a
ns3.google.com.         156144  IN      AAAA    2001:4860:4802:36::a
ns4.google.com.         157683  IN      AAAA    2001:4860:4802:38::a

Received 296 bytes from 168.126.63.1#53 in 4 ms

 

 

 2) dig 명령어


[root@main /root]# dig www.google.com

 

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.7 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32370
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

 

;; QUESTION SECTION:
;www.google.com.                        IN      A

 

;; ANSWER SECTION:
www.google.com.         297     IN      A       216.58.221.4

;; AUTHORITY SECTION:
google.com.             80991   IN      NS      ns2.google.com.
google.com.             80991   IN      NS      ns3.google.com.
google.com.             80991   IN      NS      ns1.google.com.
google.com.             80991   IN      NS      ns4.google.com.

 

;; ADDITIONAL SECTION:
ns1.google.com.         253792  IN      A       216.239.32.10
ns2.google.com.         253792  IN      A       216.239.34.10
ns3.google.com.         253792  IN      A       216.239.36.10
ns4.google.com.         253792  IN      A       216.239.38.10

 

;; Query time: 7 msec
;; SERVER: 168.126.63.1#53(168.126.63.1)
;; WHEN: Fri Apr  1 10:35:15 2016
;; MSG SIZE  rcvd: 184

 

 

[root@main /root]# dig +trace www.google.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.1 <<>> +trace www.google.com
;; global options: +cmd
.                       244592  IN      NS      c.root-servers.net.
.                       244592  IN      NS      m.root-servers.net.
.                       244592  IN      NS      a.root-servers.net.
.                       244592  IN      NS      i.root-servers.net.
.                       244592  IN      NS      f.root-servers.net.
.                       244592  IN      NS      e.root-servers.net.
.                       244592  IN      NS      l.root-servers.net.
.                       244592  IN      NS      h.root-servers.net.
.                       244592  IN      NS      g.root-servers.net.
.                       244592  IN      NS      j.root-servers.net.
.                       244592  IN      NS      k.root-servers.net.
.                       244592  IN      NS      b.root-servers.net.
.                       244592  IN      NS      d.root-servers.net.
;; Received 492 bytes from 168.126.63.1#53(168.126.63.1) in 55169 ms

 

com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
com.                    172800  IN      NS      m.gtld-servers.net.
;; Received 508 bytes from 199.7.83.42#53(199.7.83.42) in 35128 ms

 

google.com.             172800  IN      NS      ns2.google.com.
google.com.             172800  IN      NS      ns1.google.com.
google.com.             172800  IN      NS      ns3.google.com.
google.com.             172800  IN      NS      ns4.google.com.
;; Received 280 bytes from 192.26.92.30#53(192.26.92.30) in 25108 ms

 

www.google.com.         300     IN      A       216.58.197.100
;; Received 48 bytes from 216.239.36.10#53(216.239.36.10) in 55 ms

 

 

 

 3) nslookup 명령어


[root@main /root]# nslookup www.google.com
Server:         168.126.63.1
Address:        168.126.63.1#53

Non-authoritative answer:
Name:   www.google.com
Address: 216.58.221.4

[root@main /root]#

 

 

 

 

[참고] Windowd에서 'nslookup' 명령어

 

 

C:\Users\Administrator>nslookup www.naver.com
DNS request timed out.
    timeout was 2 seconds.
서버:    UnKnown
Address:  168.126.63.1

 

권한 없는 응답:
DNS request timed out.
    timeout was 2 seconds.
이름:    www.naver.com.nheos.com
Addresses:  202.179.177.22
          125.209.222.141
Aliases:  www.naver.com

 

 

C:\Users\Administrator>nslookup
기본 서버:  kns.kornet.net
Address:  168.126.63.1

 

> set type=all
> naver.com


서버:    kns.kornet.net
Address:  168.126.63.1

 

권한 없는 응답:
naver.com       text =

 

        "v=spf1 include:_spfblocka.naver.com include:_spfblockb.naver.com include:_spfblockc.naver.com in
d.naver.com include:_spfblocke.naver.com include:_spfblockf.naver.com include:spf.worksmobile.com ~all"
naver.com       MX preference = 10, mail exchanger = mx1.naver.com
naver.com       MX preference = 10, mail exchanger = mx3.naver.com
naver.com       MX preference = 10, mail exchanger = mx4.naver.com
naver.com       internet address = 125.209.222.142
naver.com       internet address = 202.179.177.22
naver.com       internet address = 125.209.222.141
naver.com       internet address = 202.179.177.21
naver.com       nameserver = ns1.naver.com
naver.com       nameserver = ns2.naver.com

naver.com       nameserver = ns2.naver.com
naver.com       nameserver = ns1.naver.com
mx1.naver.com   internet address = 125.209.238.100
mx3.naver.com   internet address = 125.209.222.14
mx4.naver.com   internet address = 125.209.238.137
ns1.naver.com   internet address = 125.209.248.6


 

 

 

 

C:\Users\Administrator>ipconfig/displaydns

 

 

C:\Users\Administrator>ipconfig/flushdns

 

 

 

 

 

 

 

'서버 > Linux III' 카테고리의 다른 글

Linux III - 11. Apache 웹-서버 (PHP & MySQL)  (0) 2016.04.06
Linux III - 10. DNS 서버  (0) 2016.03.25
Linux III - 08. NFS 서버  (0) 2016.03.18
Linux III - 07. FTP 서버(vsftpd)  (0) 2016.03.16
Linux III - 06. FTP 클라이언트  (0) 2016.03.15
Posted by 김정우 강사(카카오톡 : kim10322)
,


Q