Published 2022. 8. 9. 17:21

(Week 5 - Day 1) - (2/2)

(Week 5 - Day 2) - (1/2)

DNS 서버

도메인 네임을 IP (정방향), IP주소를 도메인 네임으로(역방향) 변환하는 프로토콜

도메인 주소를 root 도메인 부터 계층적으로 구성하고 관리하는 프로토콜

도메인 주소는 계층적으로 구성되어 있음

DNS 동작 방식

DNS 서버는 DNS 서버 한 대에서 모든 DNS 정보를 처리하는 방식이 아닌,

계층적으로 이루어진 구조를 통해 단계별로 정보를 제공하고 있다.

DNS 구조

재귀적 쿼리(Recursive Query)

클라이언트가 DNS 서버에게 요청하는 쿼리

반복적 쿼리(Iterative Query)

재귀적 쿼리를 요청 받은 DNS 서버가 root 도메인 부터 해당 도메인을 관리하는 도메인 네임 서버를 찾아가는 쿼리

정방향 영역(Forward Zone)

도메인 네임에 대한 IP 주소정보를 관리하는 영역

역방향 영역(Inverse Zone)

IP 주소에 대한 도메인 네임 정보를 관리하는 영역

DNS Cache

이전에 질의하여 이미 시스템이 알고 있는 도메인 네임과 IP 주소 정보

DNS 레코드

레코드 종류 의미
A, AAAA 특정 호스트의 주소(IPv4, IPv6)
CHAME 호스트의 별칭(Alias) 정보(Canonical Name)
MX 메일 교환기(Mail Exchanger)에 대한 정보
NS 도메인의 네임 서버 정보(Name Server)
PTR 도메인 이름에 대한 포인터(Pointer)
SOA 영역의 권한 시작 정보(Start of Autority)
TXT 다양한 정보를 포함할 수 있는 텍스트 문자열
주요 DNS 레코드 목록

DNS 조회 방법

host

host [OPTION] name [SERVER]
# host google.com 8.8.8.8

-v : 상세한 정보를 표시

-t : 조회할 레코드의 타입을 지정

-a : DNS를 조회할 때 모든 타입의 레코드를 조회

-l : 리스트 모드로 결과를 출력

(리스트 모드 : 일반적인 DNS 레코드 조회가 아닌 영역 전송 형태로 서버에서 영역의 정보를 전송 시도)

nslookup

기본적으로 대화형으로 실행된다.

nslookup 만을 사용하여 대화형으로 요청을 전달하거나

이름과 서버를 지정하여 비대화형으로 명령을 실행할 수 있다.

nslookup [OPTION] [NAME] [SERVER]
# nslookup google.com 8.8.8.8
nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address : 8.8.8.8#53
> set type=ns
> naver.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-autoritiative answer:
naver.com		nameserver = ns2.naver.com
naver.com		nameserver = ns1.naver.com

dig

다른 명령에 비해 기본 출력 정보가 상세한 특징을 가지고 있다.

하지만 host 명령이 dig 명령처럼 상세한 정보를 표시할 수 있기에 주로 host를 사용한다.

dig [@SERVER] [OPTION] [NAME]
# dig @8.8.8.8 google.com

DNS 서버 설치 및 구성

BIND 설치

yum info bind

DNS 서비스 상태 확인

설치 직후 named 서비스의 상태 확인
systemctl status named.service

재부팅 해도 실행 유지
systemctl status named.service

name파일 설정

vim /etc/named.conf

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        directory       "/var/named";    // DNS Zone 파일 디렉터리 위치

        allow-query     { any; };  // DNS 쿼리 허용 대상
        recursion yes;   // 다른 도메인에 대한 쿼리 허용 여부 지정
  
}

systemctl start named.service
systemctl enable named.service

DNS 서비스 방화벽 허용

firewall-cmd --add-service=dns 
firewall-cmd --add-service=dns --permanent

Zone 구성

DNS 서버를 캐싱 용도로만 사용할 수도 있지만, 특정 도메인에 대하여 직접 DNS 레코드를 관리하면서

DNS 응답을 수행하도록 설정할 수 있다.

이를 위해서는 영역(Zone)을 생성해야 한다.

관리할 Domain Zone 추가

vim /etc/named.rfc1912.zones

zone "DOMAIN" IN {
        type master;
        file "ZONE_FILE";
        allow-update { none; };
        
// Work Domains

zone "example.com" IN {
        type master;
        file "example.com.zone";
        allow-update { none; };
};

관리할 Domain Zone 파일 생성 및 작성

cd /var/named
vim ZONE_FILE
$TTL 1D
@	IN SOA	ns1 hostmaster.example.com. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	IN	A	192.168.56.102
ns1	IN	A	192.168.56.102
ns2	IN	A	192.168.56.110
www	IN	A	192.168.56.102
ftp	IN	A	192.168.56.110
@	IN	NS	ns1
@	IN	NS	ns2
test1	IN	CNAME	www
test2	IN	CNAME	ftp

DNS BIND 서비스 재시작

systemctl restart named.service

역방향 Zone 설정

vim /etc/named.rfc1912.zones
zone "56.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.56.rev";
        allow-update { none; };
};
cd /var/named/
cp named.localhost 192.168.56.rev
vim 192.168.56.rev

Slave 서버 구성

MASTER 서버

vim /etc/named.rfc1912.zones
zone "example.com" IN {
	type master;
	file "example.com.zone";
	allow-update { none; };
	allow-transfer { 192.168.56.101; };
};
cd /var/named/
cp namd.localhost example.com.zone
vim example.com.zone
$TTL 1D
@       IN SOA  ns1 domainmaster (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      A       192.168.56.102
ns1     IN      A       192.168.56.102
ns2     IN      A       192.168.56.101
@       IN      NS      ns1
@       IN      NS      ns2

www     IN      A       192.168.56.101
ftp     IN      A       192.168.56.102
chown :named example.com.zone
systemctl restart named.service

Slave 서버

vim /etc/named.rfc1912.zones
zone "example.com" IN {
        type slave;
        file "slaves/example.com.zone";
        masters { 192.168.56.102; };
};
systemctl restart named.service

 

'Linux' 카테고리의 다른 글

[Linux] 23. NFS 스토리지  (0) 2022.08.10
[Linux] 22. FTP 서버  (0) 2022.08.09
[Linux] 20. SELinux  (0) 2022.08.09
[Linux] 19. 소프트웨어 패키지  (0) 2022.08.03
[Linux] 18. 리눅스 부트 프로세스  (0) 2022.08.03
복사했습니다!