일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Apache
- js 내부함수 반복문
- MariaDB
- 아두이노
- redirect
- 아두이노 https post
- 리다이렉트
- 구글 클라우드 플랫폼
- 라즈베리파이 3b+
- 아두이노 https
- CentOS8
- 아두이노 ESP8266
- js 반복문
- 아두이노 DB
- js for 반복문
- 리디렉션
- Centos Node js
- 아두이노 fingerprint
- js 내부함수
- Raspbian
- 라즈베리파이
- 리디렉트
- Today
- Total
dinist
DNS 서버 구축 [CentOS8, Debian10] 본문
DNS서버는 Master서버만 운영하거나
Master 서버와 Slave 서버 두가지로 운영할 수 있다.
이번에는 Master / Slave서버 모두를 구축해본다.
Master DNS Server : Debian10
Slave DNS Server : CentOS8
- 운영체제 환경
Google Cloud Platform의 Compute Engine에 CentOS8버전과 Debian10버전을 각각 생성
다음 명령으로 DNS서버 구축을 위한 패키지 설치를 진행
(root권한 필요)
- 설치
CentOS8
dnf install bind bind-utils
Debian10
apt install bind9 bind9utils
- named.conf 및 zone 설정 (Master서버 - Debian10)
Master 서버 IP주소 : 10.10.10.20
패키지 설치가 완료되면 named.conf 파일을 수정하여 환경설정을 해준다.
데비안에서 bind9를 설치한 후 /etc/bind/named.conf 파일에 접근하면 다음과 같이 3개의 파일이 include 되어있다.
물론 include하지 않고 named.conf 파일 내에서 여러 설정을 해도 상관없다.
이중에서 named.conf.options 파일에 아래 내용을 추가 및 수정한다.
version none; // 버전정보를 공개하지 않는다. 입력한 내용이 버전정보로 표시됨
allow-transfer {Slave서버 IP;}; //Zone 정보 Transfer를 위한 Slave 서버 IP 입력
allow-update {none;};
listen-on-v6 {none;}; //IPV6 사용 안함
allow-update는 네트워크가 고정ip가 아닌 dhcp로 운영중인 경우 동적dns(DDNS)로 작동하기 위해 설정하는것이다.
allow-update {none;}; 의 경우에는 어떠한 ip에도 동적으로 dns정보를 업데이트 하지 않고
allow-update {192.168.0.0/24;}; 의 경우에는 192.168.0.0 대역의 네트워크에서만 동적dns기능을 제공한다.
그리고 named.conf.default-zones 파일에 아래 zone영역을 추가한다.
zone "domain.com"{
type master; // master 서버로 운영하겠다는 의미이다.
file "/etc/bind/domain.com"; // 해당 경로에 zone파일이 위치해 있음을 의미한다.
};
zone "10.10.10.in-addr.arpa"{ // 역방향 zone 설정
type master; // master 서버로 운영하겠다는 의미이다.
file "/etc/bind/domain.com.re"; //해당 경로에 zone파일이 위치해 있음을 의미한다.
};
네트워크 대역이 10.10.10.0/24 라고 가정하여 역방향 zone을 작성했다.
만약 네트워크 대역이 192.168.2.0/24 라면
zone "2.168.192.in-addr.arpa"로 정하면 된다.
이제 zone파일을 만들어야 한다.
정방향용 zone 파일과 역방향용 zone 파일을 만들어보자. 역방향질의를 제공하지 않을거라면 만들지 않으면 된다.
/etc/bind/ 경로에 있는 db.local 파일을 domain.com 으로 복사한다.
cp /etc/bind/db.local /etc/bind/domain.com
그리고 이번엔 역방향 zone파일용으로 domain.com.re 으로 복사한다.
cp /etc/bind/db.local /etc/bind/domain.com.re
이제 방금 복사한 정방향 zone파일인 domain.com 파일을 수정한다.
맨 위에 TTL은 (Time To Live)의 줄임말이다. 해당 zone의 수명이다.
TTL 100은 이 ZONE파일의 수명이 100초라고 보면 된다.
명칭(?) | 의미 |
TTL (Time To Live) | 해당 zone의 수명(?),유효기간 |
@ | named.conf.default-zones에 선언한 도메인 주소 예) named.conf.default-zones 파일에 "domain.com"에 대한 zone 추가 후 |
IN | 레코드 클래스를 지정한다. IN은 인터넷 클래스를 의미하며 IN이외의 클래스가 오는 경우는 거의 없다. |
SOA (Start Of Authority) | 해당 도메인에 대해서 네임서버가 인증된 정보를 가지고 있음을 의미하고, 정보를 최상의 상태로 유지 할 수 있도록 하는 레코드 SOA 다음에 있는 ns1.domain.com. 은 해당 도메인의 주 네임 서버 (마스터 네임서버)를 의미하고 그 다음 admin.domain.com은 dns관리자의 이메일 주소를 지정한다. 이메일 주소라면 admin@domain.com 형식일텐데 여기서는 @ 대신에 .으로 표현하고 있다. 이 zone파일 내에서 @는 다른 의미로 사용되고 있으므로 @ 대신에 .을 사용하여 메일주소를 작성한다. 또한 맨 마지막에.을 붙여야 한다. admin.domain.com 으로 작성하면 실제로는 admin.domain.com.domain.com으로 된다. admin.domain.com. 과 같이 맨 마지막에 .을 추가하여 주소의 끝을 뜻한다 라고 생각하면 된다. 은 1 ~ 4294967295 까지 범위로 지정할 수 있다. 이 값은 이 zone의 레코드를 업데이트 할때 값을 증가시켜줘야한다. Master/Slave 서버 운영시 Slave서버는 Master서버의 Serial 값이, 자신이 가지고 있는 zone파일의 Serial 값보다 크면 새롭게 zone파일을 받아온다. (Master서버의 Serial값이 Slave서버의 Serial값 보다 같거나 작으면 zone Transfer를 하지 않는다.) 이 값은 주로 날짜 형식으로 지정한다. 형식 : yyyymmddCC yyyy : 년도 mm : 월 dd : 일 CC : 일련번호 (00 ~ 99) ex) 2020년 11월 1일 첫번째 zone파일일 경우 2020110100; 으로 Serial을 설정하면 된다. 두번째 zone파일의 경우 2020110101;으로 Serial값을 증가시킨다.
Refresh : Slave가 Master의 변경 여부를 확인하는 주기 (새로고침 주기) Retry : Slave와 Master와의 통신이 되지 않았을 경우에 재 시도를 할 시간 주기 Expire : Slave서버에서 Expire로 지정된 시간동안 Master와 통신하지 못하면 해당 zone은 더이상 유효하지 않은 것으로 간주하고 해당 zone에 대한 응답을 하지 않는다. |
NS | NameServer를 의미한다. NameServer의 주소를 지정해준다. |
A | IPv4 형식의 IP주소를 의미한다. A타입으로 입력시에는 맨뒤에 .을 붙일 필요가 없다. |
공백 |
@ IN NS 로 시작하는 부분도 있고 |
CNAME | Canonical Name을 의미한다. 별칭을 생각하면 된다. (Alias) www IN CNAME domain.com. 의 의미 : www.domain.com은 은 domain.com 이었으므로
|
이제 역방향 zone파일을 수정한다.
정방향에서는 못보던 PTR이 있다.
PTR : Domain Name Pointer를 의미한다. 앞서 zone 영역을 10.10.10 까지만 설정했는데
zone 파일에서 호스트 주소부분을 지정해준다.
10 IN PTR domain.com 의 의미는 10.10.10.10은 domain.com 이다. 라는 의미가 된다.
- named.conf 및 zone 설정 (Slave서버 - CentOS8)
Slave서버 IP 주소 : 10.10.10.30
/etc/named.conf 파일에서 다음 부분을 수정한다.
listen-on port 53 {any;}; // 허용할 ip대역을 입력해도 된다.
allow-query {any;}; // 허용할 ip대역을 입력해도 된다.
recursion no; // 재귀 질의 기능 해제 (재귀질의 기능을 사용해야할 경우가 아니라면 해제를 권장)
그 다음 /etc/named.rfc1912.zones 파일에 다음 부분을 추가한다.
type slave : slave서버 이므로 type은 slave로 설정한다.
file "slaves/domain.com" : file지시자에는 slaves/mater서버의 zone파일명을 입력한다.
기본 경로가 /var/named/ 이므로 실제 경로는 /var/named/slaves/master서버zone파일명 이된다.
masters {10.10.10.20;}; masters 지시자에는 master 서버의 ip 주소를 입력해준다.
저장을 해주고 systemctl start named 명령으로 데몬을 시작해준다.
이후 tail /var/log/messages 명령으로 zone transfer 기록이 있는지 확인하고
/var/named/slaves/ 디렉터리에 zone파일이 저장되어있는지 확인해본다.
저장 되어 있다면 slave 서버 설정이 완료 되었다.
dig명령어로 질의를 해본다.
dig @ns1.domain.com domain.com
dig @ns2.domain.com domain.com
결과가 잘 나오면 성공이다.
혹시 slave서버에서 /var/named/slaves/ 디렉터리 내에 있는 zone파일의 내용을 확인해보려면 글자가 깨지는 경우가 있는데 제대로 보고 싶다면
/etc/named.conf/rfc1912.zones 파일에서
slave 영역의 masterfile-format text;를 추가한다.
'리눅스' 카테고리의 다른 글
/etc/passwd에 대하여 알아보기 (0) | 2021.01.30 |
---|---|
Apache 웹서버 (수동) 설치하기 (웹 헤더보안 위주) (2) | 2020.11.11 |
리눅스 페도라 DHCP서버 설치하기 (0) | 2020.10.23 |