LINUX(Server)

DNS

천천히, 한 걸음씩 2024. 4. 28. 09:44

DNS

* DNS ( Domain Name Service )
- 사람이 사용하는 도메인 주소를 컴퓨터가 사용하는

   IP주소로 변환해주는 기능을 가진 프로그램 서비스
  
- IP주소를 암기 -> /etc/hosts사용 -> DNS사용으로 발전


! DNS 서버 구축
@Server-A
#setenforce 0
#service iptables stop


#yum install -y bind bind-utils bind-libs bind-chroot

bind   // dns 서버 프로그램
bind-utils  // dns 질의용 프로그램
bind-libs    // dns 서버에 필요한 라이브러리
bind-chroot  // chroot환경을 적용시키기위한 파일 제공


#vi /etc/named.conf
---------------------------
options {
        
(11번행)listen-on port 53 { any; }; // dns 53번포트를 사용
  53번 포트에 접속할 IP 주소 설정 ( any = 모두 )

(12번행)listen-on-v6 port 53 { none; }; // IPv6연결은 허용하지 않음
       
(17번행)allow-query     { any; }; // 해당 네임서버로 질의할 수 있는 
  클라이언트의 IP 주소 ( any = 모두 )
        
(18번행)recursion yes; // 해당 네임서버가 관리하는 도메인이
아닐경우 root네임서버에게 해당정보를
전달하여 대신 응답하도록 설정

(20번행)dnssec-enable no; // dns_sec 사용x
(21번행)dnssec-validation no;

:wq
-----------------------------


#vi /etc/named.rfc1912.zones

- zone 정보를 설정하기 위한 파일

------------------------------
~~~ 제일 하단에 추가 ~~~

zone "jaehyun.com" IN { // 해당 도메인
type master; // 실제 정보를 제공하는 서버
file "jaehyun.zone"; // 도메인에 대한 정보를 가지고 있는
   데이터베이스 파일명 ( /var/named에 위치 )

allow-update { none; }; // 원격에서 업데이트가 
   가능할 경우 허용할 IP 주소

};

zone "100.100.100.in-addr.arpa" IN { //100.100.100.0대역의 역방향 질의 설정

Ex)192.168.5.100 -> 5.168.192
   192.168.5.200 -> 5.168.192
type master;
file "jaehyun.rev.zone";
allow-update{ none; };
};

:wq!
--------------------------------

#named-checkconf /etc/named.rfc1912.zones // 정상일 경우 결과가 없음


#cd /var/named // zone파일이 위치해 있는 디렉터리
#cp named.empty jaehyun.zone // zone파일 형식 복사
// /etc/named.rfc1912.zones에 설정한
   파일이름과 같아야 된다.

#cp named.empty jaehyun.rev.zone // zone파일 형식 복사
// 역방향 zone파일
   (관용적으로 이름뒤에 .rev를 붙인다.)

#chown root.named jaehyun.* // named 데몬이 해당 파일을 읽을 수 
있어야 한다. 


#vi jaehyun.zone // 정방향 파일 편집
---------------------------------------
$TTL 3H
@       IN SOA  ns.jaehyun.com. admin.jaehyun.com. (
0       ; serial
1D      ; refresh
1H      ; retry
1W      ; expire
3H )    ; minimum
NS      ns.jaehyun.com.
A       100.100.100.100

ns      IN      A       100.100.100.100
ftp     IN      A       100.100.100.100
www     IN      A       100.100.100.100

:wq!
---------------------------------------


#vi jaehyun.rev.zone // 역방향 파일 편집
--------------------------------------------
$TTL 3H
@       IN SOA  ns.jaehyun.com. admin.jaehyun.com. (
0       ; serial
1D      ; refresh
1H      ; retry
1W      ; expire
3H )    ; minimum
NS      ns.jaehyun.com.

100     PTR     ns.jaehyun.com.
100     PTR     ftp.jaehyun.com.
100     PTR     http://www.jaehyun.com.

:wq!
--------------------------------------

#named-checkzone jaehyun.zone jaehyun.rev.zone // zone파일 오류검사
( 오류가 없으면 ok 출력 )

#service named start // 오타 및 오류가 없을경우
   서버가 정상적으로 동작
// 오타 및 오류가 있을경우
다시 수정하고 서비스 실행
   

@Client_Linux

#yum install -y bind-utils // 클라이언트용 프로그램 설치
#cat /etc/resolv.conf // 현재 nameserver 확인
  nameserver 168.126.63.1
  nameserver 168.126.63.2
  
#nslookup
>server // 지금 사용하는 서버
168.126.63.1
>http://www.google.com// o
>http://www.daum.net// o
>ftp.jaehyun.com // x
>http://www.jaehyun.com// x


>server 100.100.100.100 // 지금 사용하는 서버를
100.100.100.100으로 수정
>server  // 100.100.100.100

>http://www.google.com// o
>http://www.daum.net// o
>ftp.jaehyun.com // o ( 로컬 dns에 등록되어 있기 때문 )
>http://www.jaehyun.com// o
>exit

#cat /etc/resolv.conf // 현재 사용되는 dns 서버
168.126.63.1
168.126.63.2

#ping http://www.google.com// o
#ping   http://www.jaehyun.com// x
#ping   ftp.jaehyun.com // x

#vi /etc/resolv.conf
--------------------------
nameserver 100.100.100.100  //일시적으로 dns서버 변경

:wq
--------------------------

#ping http://www.google.com// o
#ping   http://www.jaehyun.com// o ( 로컬 dns에 등록되어 있기 때문 )
#ping   ftp.jaehyun.com // o



! DNS 서버 이중화

Server-B 가상머신 생성
IPADDR=100.100.100.250
NETMASK=255.255.2550
GATEWAY=100.100.100.2
DNS1=168.126.63.1

( 네트워크 설정 이후로 스냅샷 저장 ) 


#setenforce 0
#service iptables stop

#yum install -y bind bind-utils bind-libs bind-chroot



#vi /etc/named.conf
---------------------------
options {
        
(11번행)listen-on port 53 { any; }; // dns 53번포트를 사용
  53번 포트에 접속할 IP 주소 설정 ( any = 모두 )

(12번행)listen-on-v6 port 53 { none; }; // IPv6연결은 허용하지 않음
       
        (17번행)allow-query     { any; }; // 해당 네임서버로 질의할 수 있는 
  클라이언트의 IP 주소 ( any = 모두 )
        
(18번행)recursion yes; // 해당 네임서버가 관리하는 도메인이
아닐경우 root네임서버에게 해당정보를
전달하여 대신 응답하도록 설정



        (20번행)dnssec-enable no; // dns_sec 사용x
        (21번행)dnssec-validation no;


:wq
-----------------------------


#vi /etc/named.rfc1912.zones
-----------------------------
~~~ 하단에 추가 ~~~

zone "jaehyun.com" IN {
type slave;
file "slaves/jaehyun.zone";
masters { 100.100.100.100; };
allow-uptdate { none; };
};

zone "100.100.100.in-addr.arpa" IN {
type slave;
file "slaves/jaehyun.rev.zone";
masters { 100.100.100.100; };
allow-uptdate { none; };
};



:wq
-----------------------------


@Server-A

#vi /etc/named.rfc1912.zones
---------------------------------------
zone "jaehyun.com" IN {
type master;
file "jaehyun.zone";
allow-update { none; };
allow-transfer { 100.100.100.250; };

};

zone "100.100.100.in-addr.arpa" IN {
type master;
file "jaehyun.rev.zone";
allow-update{ none; };
allow-transfer { 100.100.100.250; };
};



:wq
----------------------------------------

#vi jaehyun.zone // 정방향 파일 편집
---------------------------------------
$TTL 3H
@       IN SOA  ns.jaehyun.com. admin.jaehyun.com. (
0       ; serial
1D      ; refresh
1H      ; retry
1W      ; expire
3H )    ; minimum
NS      ns.jaehyun.com.
NS ns2.jaehyun.com.

ns      IN      A       100.100.100.100
ns2 IN A 100.100.100.250
ftp     IN      A       100.100.100.100
www     IN      A       100.100.100.100

:wq!
---------------------------------------


#vi jaehyun.rev.zone // 역방향 파일 편집
--------------------------------------------
$TTL 3H
@       IN SOA  ns.jaehyun.com. admin.jaehyun.com. (
0       ; serial
1D      ; refresh
1H      ; retry
1W      ; expire
3H )    ; minimum
NS      ns.jaehyun.com.
NS ns2.jaehyun.com.

100     PTR     ns.jaehyun.com.
250 PTR ns2.jaehyun.com.
100     PTR     ftp.jaehyun.com.
100     PTR     http://www.jaehyun.com.

:wq!
--------------------------------------

#service named restart


@Server-B
#cd /var/named/slaves // zone파일을 수신할 위치
#ll // 아직 수신 x

#service named start     // Server-B DNS시작
#ll // jaehyun.zone
   jaehyun.rev.zone 수신 확인


! dns 이중화 테스트

@Client_Linux

#yum install -y bind-utils // dns질의용 프로그램

#vi /etc/sysconfig/network-scripts/ifcfg-eth0
--------------------------------------------
~~~ 생략 ~~~

(변경)
DNS1=100.100.100.100
DNS2=100.100.100.250

:wq!
---------------------------------------------

#service network restart

#cat /etc/resolv.conf // 변경된 설정 확인
nameserver 100.100.100.100
nameserver 100.100.100.250

#nslookup

>server // 100.100.100.100
   100.100.100.250

>http://www.naver.com// 외부 , 100.100.100.100응답
>http://www.jaehyun.com// 로컬 , 100.100.100.100응답 

@Server-A
#service named stop // master dns서비스 중지

@Client_Linux
>http://www.naver.com// 외부 , 100.100.100.250응답
>http://www.jaehyun.com// 로컬 , 100.100.100.250응답 

@Server-B
#service named stop // slave dns서비스 중지

@Client_Linux
>http://www.naver.com// 외부 , 서비스 이용 x
>http://www.jaehyun.com// 로컬 , 서비스 이용 x 

@Server-B
#service named start // slave dns서비스 시작 
   slave dns만 시작된 상태

@Client_Linux
>http://www.naver.com// 외부 , 100.100.100.250응답
>http://www.jaehyun.com// 로컬 , 100.100.100.250응답 


@Server-A
#service named start // master dns서비스 시작 
   master,slave 모두 시작된 상태

@Client_Linux
>http://www.naver.com// 외부 , 100.100.100.100응답
>http://www.jaehyun.com// 로컬 , 100.100.100.100응답




+@ /etc/hosts // 보안적 관점에서 중요

@Server-A

( X-window 설정 이후로 스냅샷이동 )

#yum install -y firefox //firefox 웹브라우저 설치

#echo "nameserver 168.126.63.1" > /etc/resolv.conf

// 실습을 위해서 kt dns서버로 변경


firefox를 이용해서 http://www.nate.com 접속  // o
firefox를 이용해서 120.50.131.112 접속  // o
     ( nate ip )

#vi /etc/resolv.conf
-------------------------
#nameserver 168.126.63.1 // dns서버 주석처리

:wq!
--------------------------

firefox를 이용해서 http://www.nate.com 접속  // x  
firefox를 이용해서 120.50.131.112 접속  // o
     ( nate ip )


#vi /etc/hosts // 도메인 주소 등록
------------------------
~~~ 하단에 추가 ~~~

120.50.131.112 http://www.nate.com

:wq!
-------------------------

firefox를 이용해서 http://www.nate.com 접속  // o  
firefox를 이용해서 120.50.131.112 접속  // o
     ( nate ip )



#vi /etc/hosts // 도메인 주소 등록
------------------------
~~~ 하단에 추가 ~~~

120.50.131.112 http://www.naver.com

:wq!
-------------------------

firefox를 이용해서 http://www.nate.com 접속  // x  
firefox를 이용해서 http://www.naver.com 접속  // nate홈페이지의 ip로 접속 
firefox를 이용해서 120.50.131.112 접속  // o
     ( nate ip )

'LINUX(Server)' 카테고리의 다른 글

NTP  (0) 2024.04.30
PXE , Kick start  (0) 2024.04.29
NFS  (2) 2024.04.27
FTP  (2) 2024.04.26
DHCP  (0) 2024.04.25