한님폐하 2022. 9. 12. 14:06

1. DNS(Domain Name System)

  • 클라이언트는 도메인에 대한 IP 주소 정보를 학습하기 위해서 DNS 요청 메세지를 DNS 서버에게 전송한다.
  • DNS 서버는 DNS 요청을 수신한 이후, 도메인에 대한 IP 주소 정보를 DNS 응답 메세지로 응답한다.
  • 클라이언트는 도메인에 대한 IP 주소 정보를 학습한 이후 목적지 IP 주소를 설정하여 사이트/시스템/서버로 접속을 실시한다.

 

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

② '/etc/hosts' 파일에 IP 주소가 없다면, '/etc/resolv.conf' 파일의 168.126.63.1' DNS 서버에게 DNS 요청 메세지를 전송한다.

③ DNS 서버는 자신의 DNS Zone 정보를 참조하여 IP 주소 정보를 클라이언트에게 응답한다.

④ 클라이언트은 DNS 응답을 수신하면 해당 IP 주소를 목적지로 설정하여 사이트/시스템/서버로 접속을 실시한다.

 

2. 도메인 구조

  • 도메인 구조는 계층적 구조로 되어 있으며 우측에서 좌측으로 해석해야 한다.
  • 루트 도메인 -> 1단계 도메인 -> 2단계 도메인 -> 3단계 도메인 -> 호스트네임
  • 도메인은 기관으로부터 할당받아서 사용해야 한다.
  • 호스트 네임은 아무거나 사용해도 무관하다. 대신, 서비스와 관계 있는 이름으로 하는것을 권장한다.

 

3. DNS 서버 구성

3-1. bind 패키지 설치 및 활성화

yum -y install bind bind-utils
rpm -qa | egrep "^bind|^bind-utils"
rpm -ql bind | egrep -v '/man/|/doc/|/usr/lib'
systemctl enable --now named
systemctl status named

 

3-2. 환경 설정 파일을 만든다.

3-2-1. 'named.conf' 환경 설정 파일

vi /etc/named.conf 
options {
      listen-on port 53 { any; };	
#     listen-on-v6 port 53 { ::1; };		
	  directory   "/var/named";	
      allow-query     { any; };	
      dnssec-enable no;
      dnssec-validation no;		
 #    include "/etc/crypto-policies/back-ends/bind.config";	
      include "/etc/named.rfc1912.zones";

 

3-2-2. 'named.rfc1912.zones' 환경 설정 파일

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

zone "2.168.192.in-addr.arpa" IN {
	 type master;
	 file "192.168.2.rev";
	 allow-update { none; };
};

 

3-2-3. 정방향 Zone 파일을 생성하고, 테스트한다.

cd /var/named
cp -p named.empty megait.com.zone
cp -p named.empty 192.168.2.rev
vi /var/named/megait.com.zone
$TTL 3H						# 도메인/IP 주소 정보를 캐시에 저장하는 기간
@   IN SOA  ns.megait.com.  root.megait.com. (	# @ : /etc/named.rfc1912.zones 파일에 정의한 도메인(hannimpeha.com)을 의미한다.
						# In : 클래스 이름, 일반적으로 많이 사용함
                                                # Start of Authority(권한)
                                                # 네임서버 도메인
                                                # 관리자 이메일 정보
                     0   ; serial	# 파일이 변경될 때 마다 카운트를 증가시키는 일련 번호
                     1D  ; refresh	# 갱신 주기
                     1H  ; retry	# 재시도 주기
                     1W  ; expire	# 만료 주기
                     3H )    ; minimum	# 정보가 삭제되는 최소 주기
 
 hannimpeha.com.     IN NS   ns.hannimpeha.com.			# 네임 서버 도메인 지정
 ns.hannimpeha.com.  IN A    192.168.2.200			# Address, 호스트 이름에 대한 IP 주소를 지정
 hannimpeha.com.     IN MX 10 mail.hannimpeha.com.		# 메일 서버 도메인 지정('10'은 우선 순위값이며 낮을 수록 우선 순위가 높다.)
 mail            IN A    192.168.2.199	
 www             IN A    192.168.2.200
 ftp             IN A    192.168.2.200
 test            IN A    192.168.2.200
 blog            IN CNAME test					# 호스트 이름에 대한 Alias를 지정(호스트 이름이 긴 경우 사용 권장)
 named-checkzone hannimpeha.com hannimpeha.com.zone
 systemctl restart named
 
 nslookup ns.hannimpeha.com 
 nslookup www.hannimpeha.com
 nslookup ftp.hannimpeha.com
 nslookup mail.hannimpeha.com
 nslookup blog.hannimpeha.com

 

3-2-4. 역방향 '192.168.2.rev' 파일을 설정하고 테스트 한다.

vi /var/named192.168.2.rev
$TTL 3H
@   IN SOA  ns.hannimpeha.com. root.hannimpeha.com. (
                     0   ; serial
                     1D  ; refresh
                     1H  ; retry
                     1W  ; expire
                     3H )    ; minimum
                IN NS    ns.hannimpeha.com.
                IN MX 10 mail.hannimpeha.com.
200             IN PTR   ns.hannimpeha.com.		# 역방향 지정
199             IN PTR   mail.hannimpeha.com.
200             IN PTR   www.hannimpeha.com.
200             IN PTR   ftp.hannimpeha.com.
named-checkzone 2.168.192.in-addr.arpa 192.168.2.rev
systemctl restart named

nslookup 192.168.2.200

 

3-3. Master & Slave DNS 서버 구성

3-3-1. Master DNS 서버 구성

vi /etc/named.rfc1912.zones
also-notify { 192.168.2.199; };

 

3-3-2. Slave DNS 서버 구성

vi /etc/named.rfc1912.zones
zone "hannimpeha.com" IN {
      type slave;
      masters { 192.168.2.200; };
      file "slaves/hannimpeha.com.zone";
};