정보보안공부

Linux_리눅스 DNS 위임 본문

Linux

Linux_리눅스 DNS 위임

Steady_sp 2018. 8. 4. 18:32

리눅스 DNS 위임

- 오라클 가상 머신 사용

- CentOS7    -> 34사용 1.0.0.100 ( 1차 DNS 서버) , 1.0.0.110 ( 2차 DNS 서버 ) , 1.0.0.151 ( Client ) 1.0.0.150 ( Web Server )

- Windows 7 -> 1.0.0.101

 

<DNS 위임>

- DNS서버와 웹서버 클라이언트를 구분해 DNS과정을 확실하게 이해해보자

 

#1 DNS ( Domain Name System )

-> 도메인을 IP주소로 변환시켜주는 관리 서비스

 

#2 DNS 서버 구축 - 1.0.0.100 ( 1차 DNS 서버 )

 

*** DNS 서버 : 1.0.0.100

 

*** 설치

 

 

*** 호스트이름 설정

#> vi /etc/hostname

-> /var/named/에 설정하는 zone파일이 여기서 작성한 호스트이름으로 파일을 만들어야한다.

 

 

 

*** 설정파일

#> vi /etc/named.conf

-> DNS 서버 전체설정 파일

 

 

< 기본설정 >

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

-> 클라이언트가 서버의 53번 포트로 물어본다.  127.0.0.1 은 루프백 설정 ( 자기자신을 의미 ) -> any ( 모두허용 ) 으로 바꿔야한다.
-> 네임 서버 접속을 허용할 IP 주소 ( 53번 포트의 접속을 허용할 IP -> any (클라이언트) )

directory       "/var/named";

-> 각 도메인의 zone파일의 위치를 지정

dump-file       "/var/named/data/cache_dump.db";

-> 정보가 갱신될때 저장되는 파일

statistics-file "/var/named/data/named_stats.txt";

-> 통계파일이 생성되는 절대 경로와 파일의 이름을 지정

memstatistics-file "/var/named/data/named_mem_stats.txt";
-> 메모리 관련 통계파일이 생성되는 절대 경로와 파일 이름을 지정

allow-query     { any; };

-> 도메인 이름의 쿼리가 허용 된 IP 주소이다. localhost에서 any로 바꿔야한다.


#> vi /etc/named.rfc1912.zones

-> zone { } 으로된게 각각의 도메인이고 기본으로 적혀져있는건 루프백에 대한 내용이다.

 

 

-> type : master는 1차 네임서버, slave는 2차 네임서버이다.
-> file : zone파일의 이름을 작성한다.

-> allow-update : 슬레이브 ( 2차 네임서버가 있을때 사용한다. ) -> 지금은 위임과정만 확인하기위해 none으로 설정해도 문제가 없다.

 

#> /var/named/*

#> touch /var/named/naver.com.zone

/var/named/naver.com.zone
-> DNS 서버가 관리하는 설정파일

 

 

-> named 데몬이 읽기권한을 가지고있다.
-> 소유그룹을 named로 권한을 640으로 변경


#> vi /var/named/naver.com.zone

-> naver.com이라는 네임서버 존파일을 작성해본다.

 

 

< 설정의미 >

1. $TTL

->TTL은 test.com 도메인의 정보를 캐시 네임서버에서 가져간 다음 캐시 네임서버에 얼마나 보관할 것인가를 지정하는 시간이다.

2. @

->@는 origin 도메인을 의미하는 것으로 named.conf 파일에 설정되어있는 도메인명을 의미한다.

3. SOA

SOA는 도메인에 대해 설정한 네임서버가 모든정보를 가지고 있음을 선언한 것으로 도메인에 대한 네임서비스의 모든 권한을 의미한다.
4. Serial

Refresh, Retry, Exprire, Minimum 값들은 모두 secondary 네임서버와 primary 네임서버와의 연동을 어떻게 할 것인가에 대한 설정입니다 대부분의 도메인 설정은 주 네임서버에서 하고 보조네임서버는 주 네임서버의 설정 값을 주기적으로 가져간다. 주네임서버의 serial 값을 높여주게 되면 보조네임서버에서 설정이 변경된것으로 확인해고 새로운 zone 파일로 갱신하게된다.

- Refresh : 보조 네임서버에서 1차 네임서버의 변경된내용이 있는지 체크하는 시간이다. ( D : day )
- Retry : 2차 네임서버가 1차 네임서버로의 접근이 안될때  얼마 만에 접근을 시도할 것인가를 결정하는 값이다. ( H : hour)

- Expire : 보조 네임서버는 주 네임서버에서 동기화 과정중 retry 주기마다 지속적으로 연결을 시도하였지만 expire 시간동안 계속해서 연결이 되지 않으면 보조 네임서버는 해당 도메인의 정보가 삭제되었거나 폐기되었다고 판단하여 그후부터 연결시도를 하지 않는다. ( W : week)

- Minimum : TTL(Time to Live)를 의미하는 것으로 도메인 정보를 다른 네임서버에서 가져갔을 때에 가져간 도메인정보를 얼마나 보관하고 있을 것인가에 대한 시간 값이다. ( H : hour )

5. NS레코드

NS레코드는 해당 도메인의 네임서버를 지정하는 레코드다.

6. A레코드

A레코드는 지정한 도메인의 실제로 접속할 IP 주소를 설정하는 레코드다.

7. MX레코드

MX레코드는 해당 도메인으로 메일을 사용할 경우 메일서버를 지정한 것이다. IP로 지정이 가능하지만 IP변경으로 인한 정보의 변경을 최소화하기 위해 도메인을 사용하는 것이 좋다. 도메인으로 지정할 경우에는 마지막에 "."으로 끝나야 한다.

8. CNAME 레코드

CNAME 레코드는 일명 별칭 레코드이며 naver.com IP주소가 1.0.0.200이라면 www.test.com으로 지정시에 IP주소가 같다는 의미입니다 쉽게 말해 naver.com의 www.naver.com 도메인이 동일한 의미를 가진것입니다

 

-> naver.com 네임서버의 IP는 1.0.0.100이고 웹브라우저가 구축된 IP는 1.0.0.150이므로 A레코드를 이용해 실제로 접속할 1.0.0.150을 지정한다.

-> www.naver.com 했을때도 웹브라우저가 구축된 1.0.0.150을 가리키도록 한다.

 

*** 설정후 확인

#> cd /var/named

#> named-checkzone naver.com naver.com.zone

 

 

-> /var/named 디렉토리에 들어가서 named-checkzone을 이용해 설정사항이 올바르게 됬는지 확인한다.

 

*** 서비스 시작

-> named 데몬을 시작하고 enable로 부팅시 자동으로 실행되도록 설정한다.

 

 

*** 방화벽 설정

-> dns를 방화벽에 추가한다.

 

 

#2 클라이언트에서 기존 DNS서버로 확인 - 168.126.63.1 ( DNS 서버 )

 

- 클라이언트 IP : 1.0.0.120

 

*** nslookup 명령을 사용하기 위해 bind-utils.x86_64 설치

 

 

-> bind-utils.x86_64 설치

 

*** DNS 서버를 확인

-> 해당 파일은 /etc/sysconfig/network-scripts/ifcfg-ens33 파일의 DNS설정내용을 보여준다.

#> vi /etc/resolv.conf

 

 

*** nslookup 실행

-> KT DNS 168.126.63.1에 의해 실제 naver.com 과 www.naver.com 의 IP를 알려주고있다.

 

 

#3 클라이언트에서 변경한 DNS서버로 확인 - 1.0.0.100 

 

- 클라이언트 IP : 1.0.0.120

 

*** DNS 서버를 위에서 구축한 DNS서버로 변경

-> DNS서버를 168.126.63.1 에서 1.0.0.100으로 변경

-> 변경된 사항은 임시로바꿨을뿐 systemctl restart network를 하게되면 기존의 DNS서버로 초기화된다.

-> 원래는 /etc/sysconfig/network-scripts/ifcfg-ens33 에서 변경해야 완벽히 변경되는 것이다.
#> vi /etc/resolv.conf

 

 

*** nslookup 실행

-> 1.0.0.100 DNS서버에 등록되어있는 naver.com 과 www.naver.com에 대해 1.0.0.150이라고 알려주고있다.

 

 

#4 1.0.0.150 에 웹서버 구축 -> tistory홈페이지 코드 붙여넣기

 

- 웹서버 IP : 1.0.0.150

 

*** 설치

#> yum -y install httpd.x86_64

 

 

*** 설정파일

#> vi /etc/httpd/conf/httpd.conf

 

 

-> 80번 포트를 사용한다.

 

*** 서비스 시작

-> 서비스를 시작한다. enable을 이용해 부팅시 자동 시작되도록 설정

 

 

*** 방화벽 설정

-> 방화벽을 http 서비스에 대해서 허용한다. 

 

 

*** tistory 코드를 index.html 파일에 붙여넣기

-> index.html 파일은 웹서버의 기본파일이다. 해당 서버로 접근시 처음 보여주는 화면

 

 

*** 웹서버에 코드붙여넣기

-> 웹서버의 기본디렉토리 /var/www/html로 이동해 웹서버의 기본파일인 index.html에 코드 복사하기

 

 

-> /var/www/html 에 index.html파일을 만들어 복사한 코드 붙여넣기

-> 해당 아이피 1.0.0.150에 접근하는 호스트가 있다면 index.html에 작성되어있는 tistory홈페이지 화면을 보여주게 될 것이다.

 

#5 Window7에서 구축한 DNS 사용해 구축해 놓은 웹서버-> naver.com(1.0.0.150) 접속해보기

 

*** Window7 가상머신 에서 ip 를 고정ip로 설정

-> DNS서버는 구축해놓은 1.0.0.100로 설정

 

 

*** www.naver.com 또는 naver.com 입력해보기 -> 붙여넣은 tistory 코드가 나온다.

-> 미리 정상적이 naver.com 또는 www.naver.com 에 접속한 적이 있다면 브라우저에서 검색기록 삭제와 cmd창에서 ipconfig /flushdns를 해주고 진행하면된다.

 

 

==> DNS서버를 구축해서 실제 구축한 DNS서버가 어떻게 동작하는지 확실히 이해해야한다.

#6 2차 DNS 서버 구축 - 1.0.0.110 ( 2차 DNS 서버 )

 

*** 설치

 

 

*** 호스트이름 설정

#> vi /etc/hostname

-> /var/named/에 설정하는 zone파일이 여기서 작성한 호스트이름으로 파일을 만들어야한다.

 

*** 설정파일

#> vi /etc/named.conf

-> DNS 서버 전체설정 파일

 

 

< 기본설정 >

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

-> 클라이언트가 서버의 53번 포트로 물어본다.  127.0.0.1 은 루프백 설정 ( 자기자신을 의미 ) -> any ( 모두허용 ) 으로 바꿔야한다.
-> 네임 서버 접속을 허용할 IP 주소 ( 53번 포트의 접속을 허용할 IP -> any (클라이언트) )

directory       "/var/named";

-> 각 도메인의 zone파일의 위치를 지정

dump-file       "/var/named/data/cache_dump.db";

-> 정보가 갱신될때 저장되는 파일

statistics-file "/var/named/data/named_stats.txt";

-> 통계파일이 생성되는 절대 경로와 파일의 이름을 지정

memstatistics-file "/var/named/data/named_mem_stats.txt";
-> 메모리 관련 통계파일이 생성되는 절대 경로와 파일 이름을 지정

allow-query     { any; };

-> 도메인 이름의 쿼리가 허용 된 IP 주소이다. localhost에서 any로 바꿔야한다.


#> vi /etc/named.rfc1912.zones

-> zone { } 으로된게 각각의 도메인이고 기본으로 적혀져있는건 루프백에 대한 내용이다.

 

 

-> type : master는 1차 네임서버, slave는 2차 네임서버이다.
-> file : zone파일의 이름을 작성한다.

-> allow-update : 슬레이브 ( 2차 네임서버가 있을때 사용한다. ) -> 지금은 위임과정만 확인하기위해 none으로 설정해도 문제가 없다.

 

#> /var/named/*

#> touch /var/named/naver.com.zone

/var/named/naver.com.zone
-> DNS 서버가 관리하는 설정파일

 

 

-> named 데몬이 읽기권한을 가지고있다.
-> 소유그룹을 named로 권한을 640으로 변경


#> vi /var/named/naver.com.zone

-> naver.com이라는 네임서버 존파일을 작성해본다.

 

 

< 설정의미 >

1. $TTL

->TTL은 test.com 도메인의 정보를 캐시 네임서버에서 가져간 다음 캐시 네임서버에 얼마나 보관할 것인가를 지정하는 시간이다.

2. @

->@는 origin 도메인을 의미하는 것으로 named.conf 파일에 설정되어있는 도메인명을 의미한다.

3. SOA

SOA는 도메인에 대해 설정한 네임서버가 모든정보를 가지고 있음을 선언한 것으로 도메인에 대한 네임서비스의 모든 권한을 의미한다.
4. Serial

Refresh, Retry, Exprire, Minimum 값들은 모두 secondary 네임서버와 primary 네임서버와의 연동을 어떻게 할 것인가에 대한 설정입니다 대부분의 도메인 설정은 주 네임서버에서 하고 보조네임서버는 주 네임서버의 설정 값을 주기적으로 가져간다. 주네임서버의 serial 값을 높여주게 되면 보조네임서버에서 설정이 변경된것으로 확인해고 새로운 zone 파일로 갱신하게된다.

- Refresh : 보조 네임서버에서 1차 네임서버의 변경된내용이 있는지 체크하는 시간이다. ( D : day )
- Retry : 2차 네임서버가 1차 네임서버로의 접근이 안될때  얼마 만에 접근을 시도할 것인가를 결정하는 값이다. ( H : hour)

- Expire : 보조 네임서버는 주 네임서버에서 동기화 과정중 retry 주기마다 지속적으로 연결을 시도하였지만 expire 시간동안 계속해서 연결이 되지 않으면 보조 네임서버는 해당 도메인의 정보가 삭제되었거나 폐기되었다고 판단하여 그후부터 연결시도를 하지 않는다. ( W : week)

- Minimum : TTL(Time to Live)를 의미하는 것으로 도메인 정보를 다른 네임서버에서 가져갔을 때에 가져간 도메인정보를 얼마나 보관하고 있을 것인가에 대한 시간 값이다. ( H : hour )

5. NS레코드

NS레코드는 해당 도메인의 네임서버를 지정하는 레코드다.

6. A레코드

A레코드는 지정한 도메인의 실제로 접속할 IP 주소를 설정하는 레코드다.

7. MX레코드

MX레코드는 해당 도메인으로 메일을 사용할 경우 메일서버를 지정한 것이다. IP로 지정이 가능하지만 IP변경으로 인한 정보의 변경을 최소화하기 위해 도메인을 사용하는 것이 좋다. 도메인으로 지정할 경우에는 마지막에 "."으로 끝나야 한다.

8. CNAME 레코드

CNAME 레코드는 일명 별칭 레코드이며 naver.com IP주소가 1.0.0.200이라면 www.test.com으로 지정시에 IP주소가 같다는 의미입니다 쉽게 말해 naver.com의 www.naver.com 도메인이 동일한 의미를 가진것입니다

 

-> hello.naver.com 네임서버의 IP는 1.0.0.110이고 웹브라우저가 구축된 IP는 1.0.0.150이므로 A레코드를 이용해 실제로 접속할 1.0.0.150을 지정한다.

-> www.hello.naver.com 했을때도 웹브라우저가 구축된 1.0.0.150을 가리키도록 한다.

 

*** 설정후 확인

#> cd /var/named

#> named-checkzone naver.com naver.com.zone

 

 

-> /var/named 디렉토리에 들어가서 named-checkzone을 이용해 설정사항이 올바르게 됬는지 확인한다.

 

*** 서비스 시작

-> named 데몬을 시작하고 enable로 부팅시 자동으로 실행되도록 설정한다.

 

 

*** 방화벽 설정

-> dns를 방화벽에 추가한다.

 

 

#7 클라이언트에서 1차 DNS서버 2차 DNS서버 확인

 

*** 클라이언트에서 nslookup 명령어를 통해 해당 도메인에 어떤 IP가 부여되었는지 확인

 

 

-> 1차 DNS서버와 2차 DNS서버에 등록한 대로 정상 작동한다.

 

*** Windows에서 웹브라우저로 확인해보기

-> Windows 가상머신에서 DNS서버를 1.0.0.100으로 설정해놓고 접속해야한다.

-> 미리 정상적이 naver.com 또는 www.naver.com 에 접속한 적이 있다면 브라우저에서 검색기록 삭제와 cmd창에서 ipconfig /flushdns를 해주고 진행하면된다.

 

 

 

 

 

 

'Linux' 카테고리의 다른 글

Linux_리눅스 DHCP  (0) 2018.08.07
Linux_리눅스 DNS - 마스터 / 슬레이브  (2) 2018.08.07
Linux_리눅스 DNS  (0) 2018.08.03
Linux_ 리눅스 원격제어 - VNC  (2) 2018.08.02
Linux_리눅스 원격제어 - Telnet / SSH  (1) 2018.08.02
Comments