본문 바로가기

IT

DNS 구축(이중화/View)

DNS란?

네트워크 상에서 컴퓨터들은 IP주소를 이용하여 서로를 구별하고 통신을 한다.
사람들이 네트워크를 통해 원격의 컴퓨터에 접속하기 위해서는 IP주소를 이용하여야 하지만, 
숫자의 연속인 IP주소를 일일이 외울 수 없기 때문에 쉽게 기억할 수 있는 도메인 주소 체계가 만들어졌다. = DNS

 

DNS 동작과정

DNS 동작 과정

이와 같이 Local DNS 서버가 여러 DNS 서버를 차례대로 (Root DNS 서버 -> com DNS 서버 -> naver.com DNS 서버) 물어봐서 그 답을 찾아간다.

<용어 정리>
- 재귀쿼리(Recursive Query) : 요청을 전송하고 요청의 대한 응답을 수신
- 순환커리(Iterative Query) : 다른 DNS서버로부터 단계적으로 질의하는 과정
- FQDN(Fully Qualified Domain Name) : hostname(www) + domainname(naver.com)

 

DNS 구축(이중화/View)

<구축 환경>

- OS : CentOS 7.9

- Server : Master / Slave / Client1(외부) / Client2(내부)

- Bind Version : 9.11

 

<Master>

- 패키지 설치

yum -y install bind bind-chroot bind-utils

 

- Bind 시작 및 활성화

systemctl enable named-chroot; systemctl start named-chroot

 

- 환경 파일 수정(named.conf)

allow-transfer	{ Slave서버 IP; };
Version "UNKNOWN";
recursion no;

allow-transfer : zone 데이터 정보 수집으로 슬레이스 서버 아이피 등록

version : bind 버전 감추기

recursion no : no일때, zone 파일 내용으로만 응답. yes일때, 캐싱 네임서버로 사용

/*
zone "." IN {
		type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
*/

include "/etc/named.root.key";

view "internal" {
	match-clients {
    	내부IP/24;
        내부IP2/24;
    };
    
    recursion yes;
    
    zone "test.local" {
    	type master;
        file "internal/test.local.internal.zone";
    };
};

view "external" {
	match-clients {
    	any;
    };
    
    recursion no;
    
    zone "test.loacl" {
    	type master;
        file "external/test.local.external.zone";
    };
};

주석처리 : named.rfc.1912.zones 기본적으로 설정되어있는 존파일을 읽어오지 않도록 한다.

view 설정(internal, external)

** match-clients : 해당 조건에 맞는 존 파일 허용(dns 서버 대역+ 허용이 필요한 대역 등 설정)

 

- zone 파일 디렉토리 생성

mkdir /var/named/internal(external)

 

- zone 파일 디렉토리 권한 수정

chown root.named /var/named/internal(external)

 

- zone 파일 생성(internal)

cp -ap /var/named/named.empty /var/named/internal/test.local.internal.zone

 

- zone 파일 수정(internal)

$TTL 3H
@	IN	SOA	test.loac	admin.test.loacl.	(
                                    0		; serial
                                    1D		; refresh
                                    1H		; retry
                                    1W		; exprire
                                    3H		; minimum
	IN	NS	ns.test.loacl.
NS	IN	A	MasterIP
www	IN	A	MasterIP
@	IN	A	MasterIP

 

- zone 파일 생성(external)

cp -ap /var/named/named.empty /var/named/external/test.local.external.zone

 

- zone 파일 수정(external)

$TTL 3H
@	IN	SOA	test.loac	admin.test.loacl.	(
                                    0		; serial
                                    1D		; refresh
                                    1H		; retry
                                    1W		; exprire
                                    3H		; minimum
	IN	NS	ns.test.loacl.
NS	IN	A	외부IP
www	IN	A	외부IP
@	IN	A	외부IP

 

- 파일 체크

named-checkconf /etc/named.conf
named-checkzone abc.local /var/named/internal(external)/abc.local.internal(external).zone

 

- 서비스 재시작

systemctl restart named-chroot

 

<Slave>

- 패키지 설치

yum -y install bind bind-chroot bind-utils

 

- Bind 시작 및 활성화

systemctl enable named-chroot; systemctl start named-chroot

 

- 환경 파일 수정(named.conf)

/*
zone "." IN {
		type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
*/

include "/etc/named.root.key";

view "internal" {
	match-clients {
    	내부IP/24;
        내부IP2/24;
    };
    
    recursion yes;
    
    zone "test.local" {
    	type slave;
        masters { MasterIP; };
        file "internal/test.local.internal.zone";
        masterfile-format text;
    };
};

view "external" {
	match-clients {
    	any;
    };
    
    recursion no;
    
    zone "test.loacl" {
    	type slave;
		masters { MasterIP; };
        file "external/test.local.external.zone";
        masterfile-format text;
    };
};

masterfile-format text : zone 파일을 읽어올때 텍스트 형식으로 불러온다.

 

- 파일 체크

named-checkconf /etc/named.conf

 

- 서비스 재시작

systemctl restart named-chroot

 

- 존파일 생성 확인

ls -al /var/named/internal(external)

 

<Client(internal)>

- DNS 등록(resolv.conf)

- nameserver <DNS_IP>

- nslookup test.local

 

<Client(external)>

- DNS 등록(resolv.conf)

- nameserver <DNS_IP>

- nslookup test.local

 

 

'IT' 카테고리의 다른 글

Zabbix 구축  (0) 2025.03.10
Network(TCP/IP)  (0) 2023.07.17
MegaCli 사용법  (0) 2022.06.20
Linux 비프음 끄기  (0) 2022.06.17
Ansible 설치 방법  (0) 2022.06.17