-
DNS 서버 2linux/centOS 2018. 7. 17. 14:25
3) 도메인 등록
■ RR(Record Type, Resource Record) 종류에 따른 등록 방법
------------------------------------------------------------------------------------
(ㄱ) NS Record Type (Name Server)
linux2XX.example.com. IN NS ns1.linux2XX.example.com.
ns1.linux2XX.example.com. IN A 172.16.9.2XX
(ㄴ) A Record Type (Address)
www.linux2XX.example.com. IN A 172.16.9.2XX
ftp.linux2XX.example.com. IN A 172.16.9.2XX
cafe.linux2XX.example.com. IN A 172.16.9.2XX
(ㄷ) MX Record Type (Mail Exchange)
linux2XX.example.com. IN MX 10 mail.linux2XX.example.com.
mail.linux2XX.example.com. IN A 172.16.9.2XX
linux2XX.example.com. IN MX 20 mail2.linux2XX.example.com.
mail2.linux2XX.example.com. IN A 172.16.9.241
(ㄹ) CNAME Record Type (Canonical Name)
www IN A 172.16.9.2XX
ftp IN A 172.16.9.2XX
or
www IN A 172.16.9.2XX
ftp IN CNAME www
(ㅁ) PTR Record Type (Pointer Address)
2XX IN PTR ns1.linux2XX.example.com.
2XX IN PTR www.linux2XX.example.com.
------------------------------------------------------------------------------------
(시나리오) 도메인 등록 요청이 들어 왔다. 요청이 들어온 내용을 확인해 보면 다음과 같다.
▪ WEB 서버 등록 요청: www.linuxXXX.example.com -> 172.16.9.XXX
▪ FTP 서버 등록 요청: ftp.linuxXXX.example.com -> 172.16.9.XXX
▪ MAIL 서버 등록 요청: mail.linuxXXX.example.com -> 172.16.9.XXX
▪ CAFE 서버 등록 요청: cafe.linuxXXX.example.com -> 172.16.9.XXX
(도메인 등록 방법)
(ㄱ) Forward Zone 파일에 등록
# vi /var/named/chroot/var/named/exampleXXX.zone (Domain -> IP)
-> 반드시 등록 해야 함. (www IN A 172.16.9.2XX)
(ㄴ) Reverse Zone 파일에 등록
# vi /var/named/chroot/var/named/exampleXXX.rev (IP -> Domain)
-> 반드시 등록할 필요 없음. (2XX IN PTR www)
① Forward Zone 파일에 등록
# cd /var/named/chroot/var/named
# vi example2XX.zone
$TTL 4
@ IN SOA ns1.linux2XX.example.com. root.linux2XX.example.com. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns1
ns1 IN A 172.16.9.2XX
;; (1) WEB Server
www IN A 172.16.9.2XX
;; (2) FTP Server
ftp IN A 172.16.9.2XX
;; (3) MAIL Server
linux2XX.example.com. IN MX 10 mail.linux2XX.example.com.
mail IN A 172.16.9.2XX
;; (4) etc
cafe IN A 172.16.9.2XX
-> 실습할 때는 Reverse Zone 파일에 등록하지는 않는다.
-> Reverse Zone 파일에는 반드시 등록할 필요가 없기 때문이다.
-> 이 파일에 Zone Entry를 등록할 때 필드와 필드 구분은 탭/스페이스로 한다.(권장: 탭)
# service named restart
-> Zone 파일이 수정되면 변경된 사항을 적용시키기 위해서 데몬(named) restsart가 필요하다.
-> 서비스를 restart 할때는 반드시 /var/log/messages 파일을 같이 모니터링 한다.
# nslookup www.linux2XX.example.com (# nslookup www)
# nslookup ftp.linux2XX.example.com (# nslookup ftp)
# nslookup cafe.linux2XX.example.com (# nslookup cafe)
# nslookup -q=MX linux2XX.example.com
② DNS와 웹서버 연동
----- DNS Client ---- ----- DNS Server ----- ---- WEB Server -----
http://www.linuxXXX.example.com ------> named(53)
<------ # cat exampleXXX.com
www.linuxXXX.example.com. IN A 172.16.9.XXX
----------------------------------------------------> httpd(80)
<---------------------------------------------------- httpd.conf
# ls /etc/httpd/conf --> httpd.conf 파일 존재 확인
httpd.conf magic
# ls /var/www/html --> index.html 파일 존재 확인
#
-> index.html 파일 존재하지 않는다.
# cp /etc/passwd /var/www/html/index.html
# service httpd restart
Stopping httpd: [FAILED]
Starting httpd: [ OK ]
[참고] 리눅스에서 호스트이름(Hostname) 변경하는 경우
# system-config-network-tui
or
# vi /etc/sysconfig/network 파일 수정
# vi /etc/hosts <----- 일부 프로그램들이 호스트이름을 확인(예: oracle, apache, ....)
# service network restart
[참고] "service httpd restart" 에러메세지
# service httpd restart
Stopping httpd: [FAILED]
Starting httpd: httpd: apr_sockaddr_info_get() failed for linux249.example.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for
ServerName
# vi /etc/hosts
.......
172.16.9.2XX linux2XX.example.com linux2XX
# service httpd restat
# pgrep -lf httpd (# ps -ef | grep httpd)
5836 /usr/sbin/httpd
5838 /usr/sbin/httpd
5839 /usr/sbin/httpd
5840 /usr/sbin/httpd
5841 /usr/sbin/httpd
5842 /usr/sbin/httpd
5843 /usr/sbin/httpd
5844 /usr/sbin/httpd
5845 /usr/sbin/httpd
■ 윈도우 창에서 확인(IP 확인)
(Linux) # firefox http://172.16.9.2XX
■ 윈도우 창에서 확인(도메인 이름으로 확인)
(Linux) # firefox http://www.linux2XX.example.com
# cd /var/www/html
# vi index.html
<HTML>
<BODY>
<CENTER><H1>linux2XX</H1></CENTER>
</BODY>
</HTML>
■ 윈도우 창에서 확인 (http://www.linux2XX.example.com)
-> http://www.linux2XX.example.com
-> 파트너시스템들에 대해서 http://www.linux249.example.com 요청을 해 본다.
(Linux) # firefox http://www.linux2XX.example.com
(Linux) # firefox http://www.linux249.example.com
4) DNS 부하 분산(DNS Load Balancing)
(L4 부하분산)
+------ Web1 ------+
| |
----- L4 ------+------ Web2 ------+------ NAS/NFS
| |
+------ Web3 ------+
(DNS 부하분산)
+------ Web1 ------+
| |
---- DNS ------+------ Web2 ------+------ NAS/NFS
| |
+------ Web3 ------+
DNS load balancer는 오로지 round robin(순서대로 돌아가면서 배정) 밖에 사용할 수 없다.
L4 switch는 RR(round robin) 외에 다른 여러 기능들도 사용할 수 있다.
다음은 "Windows Vista"의 "cmd" 창에서 실행한것이다.
<CTRL + ESC> => cmd => <ENTER>
c:\> nslookup www.daum.net
서버: qns1.hananet.net
Address: 210.220.163.82
권한 없는 응답:
이름: top.g.daum.net
Addresses:211.115.77.213
211.115.77.214
211.32.117.30
211.115.77.211
211.115.77.212
Aliases: www.daum.net
c:\> nslookup www.daum.net
서버: qns1.hananet.net
Address: 210.220.163.82
권한 없는 응답:
이름: top.g.daum.net
Addresses:211.115.115.212
222.231.51.40
222.231.51.77
222.231.51.78
211.115.115.211
Aliases: www.daum.net
c:\> nslookup www.daum.net
서버: qns1.hananet.net
Address: 210.220.163.82
권한 없는 응답:
이름: top.g.daum.net
Addresses:211.115.77.214
211.32.117.30
211.115.77.211
211.115.77.212
211.115.77.213
Aliases: www.daum.net
-> 1~2초 정도에 한번씩 nslookup 명령어를 통해 정보를 요청해 보면, 첫번째 오는 아이피 주소가 변경된다는 것을
알수 있다. 출력된 내용의 첫번째 아이피쪽으로 도메인에 대한 IP 요청을 하게 된다.
(시나리오) 다음과 같이 도메인 등록을 해 달라고 요청이 들어왔다. 하나의 도메인 이름에 대해서 3개의 아이피가
연결 된다고 한다.
▪ 도메인이름(www.linux2XX.example.com) -> (172.16.9.2, 172.16.9.3, 172.16.9.4)
① Forward Zone 파일에 등록
# cd /var/named/chroot/var/named
# vi example2XX.zone
$TTL 4
@ IN SOA ns1.linuxXXX.example.com. root.linuxXXX.example.com. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns1
ns1 IN A 172.16.9.XXX
;; (1) WEB Server
;www IN A 172.16.9.2XX <----- 주석(;)처리
www IN A 172.16.9.2 <----- 새로운 라인 등록
www IN A 172.16.9.3 <----- 새로운 라인 등록
www IN A 172.16.9.4 <----- 새로운 라인 등록
;; (2) FTP Server
ftp IN A 172.16.9.XXX
;; (3) MAIL Server
IN MX 10 mail
mail IN A 172.16.9.XXX
;; (4) etc
cafe IN A 172.16.9.XXX
# service named restart
-> Zone 파일 수정 내용 적용
② DNS 부하 분산 테스트
# nslookup www.linux2XX.example.com (# nslookup www)
Server: 172.16.9.XXX
Address: 172.16.9.XXX#53
Name: www.linuxXXX.example.com
Address: 172.16.9.3
Name: www.linuxXXX.example.com
Address: 172.16.9.4
Name: www.linuxXXX.example.com
Address: 172.16.9.2
# nslookup www.linux2XX.example.com (# nslookup www)
Server: 172.16.9.XXX
Address: 172.16.9.XXX#53
Name: www.linuxXXX.example.com
Address: 172.16.9.2
Name: www.linuxXXX.example.com
Address: 172.16.9.3
Name: www.linuxXXX.example.com
Address: 172.16.9.4
# nslookup www.linux2XX.example.com (# nslookup www)
Server: 172.16.9.XXX
Address: 172.16.9.XXX#53
Name: www.linuxXXX.example.com
Address: 172.16.9.4
Name: www.linuxXXX.example.com
Address: 172.16.9.2
Name: www.linuxXXX.example.com
Address: 172.16.9.3
5) Master DNS Server/ Slave DNS Server 구축
----- Master DNS Server ----- ----- Slave DNS Server -----
(172.16.9.2XX) (172.16.9.1XX)
----------------------------- ----------------------------
[그림] 실습 구조(Master/Slave DNS Server)
(전제조건) Master DNS Server를 Clone을 통해 Slave DNS Server를 구축한다.
[Master DNS Server] Original OS
Master DNS Server 네트워크 설정 파일들의 MAC 주소를 삭제한다.
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
[Slave DNS Server] Clone OS
▪ Power ON
▪ 네트워크 설정
- 호스트 이름 : linux2XX.example.com -> linux1XX.example.com
- 아이피 : (eth0) 172.16.9.2XX -> 172.16.9.1XX
(eth1) 192.168.10.2XX -> 192.168.10.1XX
- /etc/hosts 파일 편집 (-> # service sendmail restart)
172.16.9.1XX linux1XX.example.com linux1XX
▪ 로그아웃 -> 로그인
[Master DNS Server] Original OS
▪ Power ON
▪ Master DNS Server : 172.16.9.2XX (ns1.linuxXXX.example.com)
▪ Slave DNS Server : 172.16.9.1XX (ns2.linuxXXX.example.com)
▪ 한개의 도메인(example2XX.com)에 두개의 DNS 서버(ns1/ns2.example2XX.com)가 존재한다.
▪ 두개의 DNS 서버는 각각 다른 IP(172.16.9.2XX/172.16.9.1XX)를 가지고 있다.
▪ (윈도우) cmd.exe
<CTRL + ESC> => "cmd"
C:\> nslookup –q=NS seoul.ac.kr
C:\> nslookup –q=NS kornet.net
C:\> nslookup –q=NS naver.com
C:\> nslookup –q=NS daum.net
[Master DNS Server] 172.16.9.2XX
-> Master DNS 서버의 전원 ON
① 주설정 파일 정보 확인 및 설정
Master DNS 서버에서 주 설정 파일은 특별히 설정할 필요가 없다.
# cat /etc/named.caching-nameserver.conf (# vi /var/named/chroot/etc/named.caching-nameserver.conf)
-> 정보만 확인
# vi /etc/named.rfc1912.zones (# vi /var/named/chroot/etc/named.rfc1912.zones)
..... (중략) .....
zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};
zone "linux2XX.example.com" IN {
type master;
file "exampleXXX.zone";
also-notify { 172.16.9.1XX; 172.16.9.2XX; }; <----- 라인 추가
};
zone "9.16.172.in-addr.arpa" IN {
type master;
file "exampleXXX.rev";
also-notify { 172.16.9.1XX; 172.16.9.2XX; }; <----- 라인 추가
};
"also-notify { 172.16.9.140; 172.16.9.2XX; };" 자신의 Slave DNS 서버에게 변경 사항을 알려주는 설정
(주의) 이 설정이 없으면, 실시간적으로 Slave DNS 서버에 업데이트가 가능하지 않다.
② Forward-Zone/Reverse-Zone 파일 설정
# cd /var/named/chroot/var/named
# ls
data example2XX.zone localhost.zone named.ca named.ip6.local named.zero
example2XX.rev localdomain.zone named.broadcast named.ca.old named.local slaves
-> Forward Zone, Reverse Zone 파일을 변경할 것이다.
# vi example2XX.zone
$TTL 4
@ IN SOA ns1.linux2XX.example.com. root.linux2XX.example.com. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns1
IN NS ns2 <----- 새로운 라인 추가
ns1 IN A 172.16.9.2XX
ns2 IN A 172.16.9.1XX <----- 새로운 라인 추가
;; (1) Web Server
;www IN A 172.16.9.2XX
www IN A 172.16.9.2
www IN A 172.16.9.3
www IN A 172.16.9.4
;; (2) FTP Server
ftp IN A 172.16.9.2XX
;; (3) MAIL Server
IN MX 10 mail
mail IN A 172.16.9.2XX
;; (4) etc
cafe IN A 172.16.9.2XX
# vi exampleXXX.rev
$TTL 4
@ IN SOA ns1.linuxXXX.example.com. root.linuxXXX.example.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.linux2XX.example.com.
IN NS ns2.linux2XX.example.com. <----- 새로운 라인 추가
2XX IN PTR ns1.linux2XX.example.com.
1XX IN PTR ns2.linux2XX.example.com. <----- 새로운 라인 추가
③ 존 파일 수정 적용
/var/log/messages 파일을 모니터링 하면서 named를 restart 한다.
[TERM1] # tail -f /var/log/messages
[TERM2] # service named restart
# nslookup -q=NS linux2XX.example.com
Server: 172.16.9.249
Address: 172.16.9.249#53
linux249.example.com nameserver = ns1.linux249.example.com.
linux249.example.com nameserver = ns2.linux249.example.com.
[Slave DNS Server]
-> Slave DNS 서버의 전원 ON
① 네트워크 설정
Slave DNS 서버는 Master DNS 서버를 Clone 한것이므로 IP 설정이 같다. 따라서 IP 설정이 중첩되므로 IP 설정 부터 해야 한다.
Slave DNS 서버를 부팅한 후에 "system-config-network-tui" 실행후 IP 설정을 할 때, DHCP에 체크가 되어 있을 것이다. 그럼 DHCP 체크를 제거하고 IP 설정을 한다.
# system-config-network-tui (# setup)
-> 네트워크 설정을 한다.
■ Static IP : 172.16.9.1XX / 255.255.255.0
■ DNS Server : 172.16.9.2XX
■ DNS Server : 172.16.9.1XX
■ Hostname : linux1XX.example.com
■ Primary DNS : 172.16.9.2XX
■ /etc/hosts 파일 편집
■ /etc/sysconfig/network-scripts/ifcfg-(eth0|eth1).bak 삭제
# service network restart
-> 설정 내용 적용
② 주 설정 파일 확인 및 설정
(필요하면 명령어 수행)
# vi /etc/resolv.conf
# yum -y install caching-nameserver
# vi /etc/named.caching-nameserver.conf
# vi /etc/named.rfc1912.zones
# cd /var/named/chroot/var/named
# ls
# cat /etc/named.caching-nameserver.conf
-> 내용만 확인한다.
# vi /etc/named.rfc1912.zones
..... (중략) .....
};
zone "0.in-addr.arpa" IN {
type master;
file "named.zero";
allow-update { none; };
};
zone "linux2XX.example.com" IN {
type slave; <----- 정보변경(master -> slave)
masters { 172.16.9.2XX; }; <----- 새로운 라인 추가(172.16.9.2XX : Master DNS Server)
file "slaves/example2XX.zone"; <----- 정보변경
};
zone "9.16.172.in-addr.arpa" IN {
type slave; <----- 정보변경(master -> slave)
masters { 172.16.9.2XX; }; <----- 새로운 라인 추가(172.16.9.2XX : Master DNS Server)
file "slaves/example2XX.rev"; <----- 정보변경
};
# service named restart
-> 변경 내용 적용
③ 존 파일 확인
# cd /var/named/chroot/var/named/slaves
# ls -l
-rw-r--r-- 1 named named 419 Aug 8 11:23 exampleXXX.rev
-rw-r--r-- 1 named named 567 Aug 8 11:23 exampleXXX.zone
-> 2개의 파일이 만들어진것을 확인 할 수 있다.
# cat exampleXXX.zone
$ORIGIN .
$TTL 4 ; 4 seconds
linuxXXX.example.com IN SOA ns1.linuxXXX.example.com. root.linuxXXX.example.com. (
42 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns1.linuxXXX.example.com.
$ORIGIN linuxXXX.example.com.
cafe A 172.16.9.XXX
ftp A 172.16.9.XXX
MX 10 mail
mail A 172.16.9.XXX
ns1 A 172.16.9.XXX
www A 172.16.9.2
A 172.16.9.3
A 172.16.9.4
# cat exampleXXX.rev
$ORIGIN .
$TTL 4 ; 4 seconds
9.16.172.in-addr.arpa IN SOA ns1.linuxXXX.example.com. root.linuxXXX.example.com. (
1997022700 ; serial
28800 ; refresh (8 hours)
14400 ; retry (4 hours)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
NS ns1.9.16.172.in-addr.arpa.
$ORIGIN 9.16.172.in-addr.arpa.
140 PTR ns2
XXX NS ns2
PTR ns1
☆ dns 보안 및 참고
(1) DNS 서버 점검
회사에서 DNS 서버를 구축하고 DNS 서버가 정상적으로 세팅이 되었는지, 또는 보안적인 설정이 잘 되었는지 확인 하기 위해서는 "한국인터넷진흥원"에서 제공하고 있는 점검 서비스를 이용하면 된다.
DNS 보안 설정 점검 사이트
● http://krnic.or.kr/jsp/business/operate/dnsModify.jsp
DNS 최적화 설정 점검 사이트
● http://www.serverchk.com
● http://www.dnsstuff.com
(2) DNS 보안
DNS 보안에 대한 몇가지 이슈
■ chroot 환경 설정
■ DNS 프로그램 업데이트/패치
■ allow-transfer, allow-query 사용
■ 최근 보안 버그 확인
■ 인증방식/데이터암호화