##############################################

## 주제 : DNS (Domain Name System)                   ##

##                                                         ##

## Written by K.S.W      2014051901                     ##

## boaniyagi@naver.com                                ##

## date : 2014.5.19                                       ##

##############################################


o DNS 관련 사이트 

김승영의 Powered by DNS

- https://wiki.kldp.org/KoreanDoc/html/PoweredByDNS-KLDP/

http://dns.kisa.or.kr 

http://domain.kisa.or.kr

http://dnssec.kisa.or.kr      <-- DNS보안 

http://cafe.naver.com/dnspro 


o BIND DNS 설치 및 운영


공식 사이트 : http://isc.org


# yum search bind


yum 과 소스로 설치하는 두 가지 방식이 있다.


1. 소스설치하기 

o 소스설치

1. 다운로드

2. 압축해제/환경설정

3. 컴파일

4. 설치

5. 세팅

6. 데몬실행


# wget ftp://ftp.isc.org/isc/bind9/9.7.6-P1/bind-9.7.6-P1.tar.gz



# tar xzf bind-9.7.6-P1.tar.gz

# cd bind-9.9.1-P1

# ls 

CHANGES FAQ README HISTORY ...  <-- 읽어볼 것!!!



# ./configure --help  <-- 어떤 옵션이 있는지 확인



--prefix=PATH         <-- 설치경로 지정 

--with-libtool        <-- 공유라이브러리 빌드를 가능하게 하는 옵션

--with-openssl=PATH   <-- openssl의 경로를 지정 DNSSEC 을 지원

--enable-threads      <-- threads 지원


# yum remove bind-utils bind-libs



# ./configure \

--prefix=/usr/local/bind \

--with-libtool \

--with-openssl=/usr/local/openssl \

--enable-threads 


# make && make install



2. 패키지를 이용해서 설치하는 방법


2-1. DVD/CD 를 이용해서 설치하는 방법

- CD/DVD 를 넣고 아래 명령어를 사용해서 설치한다.

# mount -t iso9660 -o ro /dev/cdrom /media

# rpm -Uvh /media/CentOS/bind-9.3.6-20.P1.el5.i386.rpm

# rpm -Uvh /media/CentOS/bind-chroot-9.3.6-20.P1.el5.i386.rpm 

# rpm -Uvh /media/CentOS/caching-nameserver-9.3.6-20.P1.el5.i386.rpm 

# rpm -Uvh /media/CentOS/bind-utils-9.3.6-20.P1.el5.i386.rpm 

# rpm -Uvh /media/CentOS/bind-libs-9.3.6-20.P1.el5.i386.rpm 

# eject



2-2. yum 을 이용해서 설치하는 방법


- 패키지 그룹 : DNS Name Server

- 패키지 : caching-nameserver, bind-utils


- 네임서버를 구동하기 위한 패키지그룹을 설치

# yum -y groupinstall "DNS Name Server"

  :

bind-libs 

bind     

bind-chroot  

  :


# yum -y install caching-nameserver  <-- 캐쉬전용 네임서버 세팅 



# yum -y install bind-utils          <-- DNS 전용 유틸리티 명령어 설치 



# /etc/init.d/named start   <-- 네임서버 시작


# cat /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no            <-- IPV6 사용여부 확인

HOSTNAME=localhost.localdomain


# netstat -nltpu | grep 53  <-- 데몬포트 확인!!!

tcp  0  0 127.0.0.1:53    0.0.0.0:*   LISTEN   18963/named  <-- IPV4

tcp  0  0 127.0.0.1:953   0.0.0.0:*   LISTEN   18963/named  <-- IPV4

tcp  0  0 ::1:53          :::*        LISTEN   18963/named  <-- IPV6 

tcp  0  0 ::1:953         :::*        LISTEN   18963/named  <-- IPV6

udp  0  0 127.0.0.1:53    0.0.0.0:*            18963/named  <-- IPV4

udp  0  0 ::1:53          :::*                 18963/named  <-- IPV6 



========================================================================

DNS-LAB1> 특정 도메인의 DNS에 등록된 정보를 확인해보자.


- /etc/resolv.conf 에 등록된 nameserver 로 질의하는 방법 

# dig daum.net



# dig daum.net mx



# dig daum.net ns



# dig daum.net soa



- 자신의 DNS 서버로 질의하는 방법 

- 사용방법은 @<nameserver ip address> 를 사용한다.

# dig @localhost daum.net 

# dig @localhost daum.net mx   

# dig @localhost daum.net ns   

# dig @localhost daum.net soa


========================================================================


========================================================================

DNS-LAB2> caching-nameserver 를 설치하고 외부의 DNS를 허용할 수 있게 세팅해보자.


caching-nameserver IP : 172.16.10.147


1. caching-nameserver 설치 

  # yum install caching-nameserver



  # rpm -ql caching-nameserver  



2. 데몬을 실행 

  설정파일을 수정해서 127.0.0.1 <-- 0.0.0.0 으로 변경

  127.0.0.1:53  -> 0.0.0.0:53 


3. 외부의 쿼리를 받도록 설정을 변경

!!! 예전에는 nameserver 설정파일이 named.conf 였고 버전이 올라오면서

!!! 이 파일이 두개로 분리가 되었다.

!!! named.caching-nameserver.conf , named.rfc1912.zones 

!!! 예전 내용과 호환이 되기 위해서는 named.rfc1912.zones 를 

!!! /etc/named.conf 로 링크를 걸어주면 된다.

# ln -s /var/named/chroot/etc/named.rfc1912.zones  /etc/named.conf


# ls -l /etc/named.*

lrwxrwxrwx 1 root named 51 Mar  5 01:36 /etc/named.caching-nameserver.conf -> /var/named/chroot/etc/named.caching-nameserver.conf

lrwxrwxrwx 1 root named 41 Mar  5 01:36 /etc/named.rfc1912.zones -> /var/named/chroot/etc/named.rfc1912.zones



# vi /etc/named.caching-nameserver.conf  

options {

 ...

 query-source      port 53;

 listen-on port 53 { any; };   <-- any 로 변경

 // listen-on-v6 port 53 { ::1; };

 allow-query       { any; };   <-- any 로 변경

 allow-query-cache { any; };   <-- any 로 변경

}


view localhost_resolver {

 match-clients      { any; };   <-- any 로 변경

 match-destinations { any; };   <-- any 로 변경

 recursion yes;                 <-- (나중에 보안상 yes를 no로 변경)

 ...

}


(스샷처럼 변경)


# /etc/init.d/named restart

# netstat -nltu|grep 53

tcp        0      0 192.168.56.102:53           0.0.0.0:*                   LISTEN      

tcp        0      0 10.0.2.15:53                0.0.0.0:*                   LISTEN      

tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      

tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      

udp        0      0 192.168.56.102:53           0.0.0.0:*                               

udp        0      0 10.0.2.15:53                0.0.0.0:*                               

udp        0      0 127.0.0.1:53                0.0.0.0:*                 




윈도우 cmd에서 확인


ipconfig /flushdns <-- cache 삭제

ipconfig /displaydns | findstr daum.net

nslookup daum.net 192.168.0.13 (리눅스 DNS 서버의 주소)


========================================================================


notepad %systemroot%\system32\drivers\etc\hosts




리눅스에서의 /etc/hosts 파일

========================================================================

DNS-LAB3> 아래 도메인명에 해당하는 간단한 네임서버 세팅하기!! 


리눅스 IP : 192.168.56.200 allow-transfer { 192.168.56.210 ; };


도메인명 : sbs.com

호스트명 : www.sbs.com


-- 작업 순서 --

1. 설정파일에 도메인 영역 추가

2. forward zone 파일 생성  

3. 심볼릭 링크생성

4. 네임서버 설정 확인

5. 네임서버 재시작

6. 확인 

-- 작업 순서 --


- 전체설정 

- 호스트 방화벽에서 DNS 53번 룰을 설정

# iptables -F

# iptables -I INPUT -p udp --dport 53 -j ACCEPT

# iptables -nvL

# ifconfig eth1:1 192.168.56.200



1. 설정파일에 도메인 영역 추가

- 실제 파일 : /var/named/chroot/etc/named.rfc1912.zones

- 링크 파일 : /etc/named.rfc1912.zones


# vi  /etc/named.rfc1912.zones 



-- /etc/named.rfc1912.zones --

  :

  :

 zone "sbs.com" IN {            <-- 파일의 끝에 추가한다.

    type master;

    file "sbs.com.zone";

    allow-update { none; };

 };

-- /etc/named.rfc1912.zones --



2. forward zone 파일 생성  <-- host 가 담겨있는 DB 파일이다.

- 실제파일 : /var/named/chroot/var/named/sbs.com.zone 

# cd /var/named/chroot/var/named

# cp -a localhost.zone sbs.com.zone

# vi sbs.com.zone



-- sbs.com_zone --

$TTL  60

@ IN SOA @       root (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum


       IN NS @

IN A 192.168.56.200

www IN A 192.168.56.200

-- sbs.com_zone --



3. 심볼릭 링크생성

- ln -s `pwd`/<tab>

# ln -s /var/named/chroot/var/named/sbs.com.zone /var/named/sbs.com.zone


4. 네임서버 설정 확인

# named-checkconf /etc/named.rfc1912.zones

# named-checkzone sbs.com sbs.com.zone 

zone sbs.com/IN: loaded serial 42

OK



5. 네임서버 재시작

# /etc/init.d/named restart



6. 확인 

- linux 에서 확인

- dig, nslookup, host

# dig @localhost sbs.com +short

192.168.56.200

# dig @localhost www.sbs.com +short

192.168.56.200


# nslookup sbs.com localhost

# nslookup www.sbs.com localhost



- windows 에서 확인

시작-> cmd -> c:\> nslookup sbs.com 192.168.56.200 (리눅스 DNS 서버 IP)



!!! 팁 : 네임서버가 세팅이 잘안되면 아래를 확인 !!!

!!! 1. 로그를 확인    <---  ****

       /var/log/messages

!!! 2. 설정 확인

       /var/named/chroot/etc/named.rfc1912.zones

       /var/named/chroot/etc/named.caching-nameserver.conf

!!! 3. 권한 확인

       /var/named/chroot/var/named/zonefile*  named 가 읽기권한 O

       /var/named/chroot/var/named/*  -> /var/name/*  링크생성

!!! 4. 데몬이 떠있는지 확인 netstat -natu <-- 53 포트 (udp 확인)

!!! 5. 방화벽에 53번 포트가 막혀있는지 확인

========================================================================


========================================================================

DNS-LAB4> 아래 도메인명에 해당하는 간단한 네임서버 세팅하기!! 

--> 해보길..


리눅스 IP : 192.168.56.200


도메인명 : kbs.com  : 192.168.56.200

호스트명 : www.kbs.com : 192.168.56.200


-- 작업 순서 --

1. 설정파일에 도메인 영역 추가

2. forward zone 파일 생성  

3. 심볼릭 링크생성

4. 네임서버 설정 확인

5. 네임서버 재시작

6. 확인 

-- 작업 순서 --



1. 설정파일에 도메인 영역 추가

- 실제 파일 : /var/named/chroot/etc/named.rfc1912.zones


# vi  /etc/named.rfc1912.zones 

-- /etc/named.rfc1912.zones --

  :

  :

 zone "kbs.com" IN {

    type master;

    file "kbs.com.zone";

    allow-update { none; };

 };

-- /etc/named.rfc1912.zones --


2. forward zone 파일 생성  <-- host 가 담겨있는 DB 파일이다.

- 실제파일 : /var/named/chroot/var/named/kbs.com.zone 

# cd /var/named/chroot/var/named

# cp -a sbs.com.zone kbs.com.zone

# vi kbs.com.zone

-- kbs.com.zone --

$TTL  60

@ IN SOA @       root (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum


       IN NS @

IN A 192.168.56.200

www IN A 192.168.56.200

-- kbs.com.zone --


3. 심볼릭 링크생성

# ln -s /var/named/chroot/var/named/kbs.com_zone /var/named


4. 네임서버 설정 확인

# named-checkconf /etc/named.rfc1912.zones

# named-checkzone kbs.com kbs.com.zone 

zone kbs.com/IN: loaded serial 42

OK


5. 네임서버 재시작

# /etc/init.d/named restart


6. 확인 

- linux 에서 확인

# dig @localhost kbs.com +short

192.168.56.200

# dig @localhost www.kbs.com +short

192.168.56.200


- windows 에서 확인

시작-> cmd -> c:\> nslookup kbs.com 192.168.56.200


!!! 팁 : 네임서버가 세팅이 잘안되면 아래를 확인 !!!

!!! 1. 로그를 확인    <---  ****

       /var/log/messages

!!! 2. 설정 확인

       /var/named/chroot/etc/named.rfc1912.zones

       /var/named/chroot/etc/named.caching-nameserver.conf

!!! 3. 권한 확인

       /var/named/chroot/var/named/zonefile*  named 가 읽기권한 O

       /var/named/chroot/var/named/*  -> /var/name/*  링크생성

!!! 4. 데몬이 떠있는지 확인 netstat -natu <-- 53 포트 (udp 확인)

========================================================================


========================================================================

DNS-LAB5> 아래 조건에 해당하는 도메인명에 대한 네임서버 세팅하기!! 

--> 해보길..

forward zone file : mbc.com.zone

도메인명 : mbc.com          192.168.56.200

호스트명 : www.mbc.com      192.168.56.200

호스트명 : db.mbc.com       192.168.56.101

호스트명 : backup.mbc.com   192.168.56.110

========================================================================


========================================================================

DNS-LAB5> 아래 조건에 해당하는 네임서버와 가상호스트 세팅하기!! 

============ 조건 ==================

-- WEB 세팅 --

도메인명 : ytn.com, www.ytn.com 

시스템 사용자 : ytnuser

DocumentRoot  : /home/ytnuser/public_html

index.html 내용 : Welcome to ytn.com 


-- DNS 세팅 --

도메인명 : ytn.com          

IP 주소  : 192.168.56.200

forward zone file : ytn.com.zone

호스트명 : www.ytn.com      192.168.56.200

호스트명 : db.ytn.com       192.168.56.201

호스트명 : backup.ytn.com   192.168.56.202

============ 조건 ==================


-- WEB 작업 순서 -- 

1. 사용자를 생성

2. 사용자 디렉토리의 권한을 변경 

3. index.html 생성

4. 웹 설정파일에서 가상호스트를 세팅

5. 아파치 재시작

6. 확인 

-- WEB 작업 순서 -- 


-- DNS 작업 순서 --

1. 설정파일에 도메인 영역 추가

2. forward zone 파일 생성  

3. 심볼릭 링크생성

4. 네임서버 설정 확인

5. 네임서버 재시작

6. 확인 

-- DNS 작업 순서 --



-- WEB 작업 순서 -- 

1. 사용자를 생성

# useradd -D -b /home

# useradd -D

 :

HOME=/home         <-- /home 이 아니면 /home 변경

 :

# ls /etc/skel

public_html/       <-- 없으면 생성



# useradd ytnuser


2. 사용자 디렉토리의 권한을 변경 

# chmod 711 /home/ytnuser   <-- 755 는 보안상 711보다 약하다 그래서 변경


3. index.html 생성

# echo "Welcome to ytn.com" > /home/ytnuser/public_html/index.html

# chown ytnuser.ytnuser /home/ytnuser/public_html/index.html


4. 웹 설정파일에서 가상호스트를 세팅

# vi /usr/local/apache/conf/httpd.conf



-- /usr/local/apache/conf/httpd.conf --

  :

  :

<VirtualHost *:80>

  DocumentRoot /home/ytnuser/public_html

  ServerName   ytn.com

  ServerAlias  www.ytn.com

</VirtualHost>

-- /usr/local/apache/conf/httpd.conf --



5. 아파치 재시작

# apachectl configtest

# apachectl restart



6. 확인 

# vi /etc/resolv.conf



-- /etc/resolv.conf --

nameserver 127.0.0.1

-- /etc/resolv.conf --



# vi /etc/hosts


-- /etc/hosts --

192.168.56.200  ytn.com

192.168.56.200  www.ytn.com

-- /etc/hosts --



# yum -y install lynx


# lynx --dump ytn.com


   Welcome to ytn.com


# lynx --dump www.ytn.com


   Welcome to ytn.com



-- WEB 작업 순서 --


-- DNS 작업 순서 --

1. 설정파일에 도메인 영역 추가

# vi /etc/named.rfc1912.zones



-- /etc/named.rfc1912.zones --

  :

  :

zone "ytn.com" IN {

        type master;

        file "ytn.com.zone";

        allow-update { none; };

};

-- /etc/named.rfc1912.zones --



2. forward zone 파일 생성  

# cd /var/named/chroot/var/named

# cp -a sbs.com.zone ytn.com.zone

# ls -l ytn.com.zone <-- named 사용자가 읽을 수 있는 권한이 있어야 한다. ** 중요 **

-rw-r----- 1 root named 217 Mar 21 09:12 ytn.com.zone  

# vi ytn.com.zone 



-- ytn.com.zone --

$TTL 60

@ IN SOA @       root (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum


       IN NS @

IN A 192.168.56.200

www           IN A 192.168.56.200

db           IN A 192.168.56.201

backup         IN A 192.168.56.202

-- ytn.com.zone --



3. 심볼릭 링크생성

# ln -s /var/named/chroot/var/named/ytn.com.zone  /var/named/ytn.com.zone


4. 네임서버 설정 확인

# named-checkconf  /etc/named.rfc1912.zones 

# named-checkzone  ytn.com ytn.com.zone 

zone ytn.com/IN: loaded serial 42

OK


5. 네임서버 재시작

# /etc/init.d/named restart



6. 확인 


# vim /etc/hosts



# cat /etc/resolv.conf

-- /etc/resolv.conf --

nameserver 127.0.0.1 

-- /etc/resolv.conf --

# dig ytn.com +short     <-- /etc/resolv.conf 가 현재 자신의 서버로 등록이 

192.168.56.200           <-- 되어있다면 네임서버를 지정하지 않아도 된다.

# dig www.ytn.com +short

192.168.56.200

# dig db.ytn.com +short

192.168.56.201

# dig backup.ytn.com +short

192.168.56.202



Host OS 에서 DNS를 192.168.56.200 으로 설정하고 브라우저에서 확인해서

Welcome to ytn.com 이 나오면 성공!!!


========================================================================