DNS 서버 설치
DNS 서버는 bind 패키지를 사용하며 패키지만 다운로드 받으면 됩니다.
#yum -y install bind bind-utils
DNS 설정 파일 개념 및 위치
/etc/named.conf 파일 구성
listen-on port 53 { 127.0.0.1; }; ----> listen-on port 53 { any; };
allow-query { localhost; }; -----> allow-query { any; };
listen-on port 53 { 127.0.0.1; }; → DNS port 53에 어떤 IP가 접근할 수 있는지 설정 합니다. 불특정 다수의 유저에게 서비스 할땐 listen-on port 53 { any; }; 으로 설정 하고, 사설 DNS 서버로 사용할때엔 서비스할 사설 IP 대역만을 고정시켜주어 설정해줘야 보안이 상승 합니다.
|
allow-query { localhost; }; → 재귀 질의가 올 때 응답할지에 대한 설정 입니다. 보안상의 문제가 있을 경우 재귀쿼리를 받을 IP 대역만을 허용하며, 일반적으로 allow-query { any; }; 를 사용 합니다. |
recursion yes: → 반복 질의에 대한 요청을 할지(DNS Cache Server), 안할지를 설정 합니다. 외부로 도메인을 접근할 수 없는 사설 DNS로 사용하는 경우가 아니면 yes 로 설정 합니다. |
dnssec-enable yes; / dnssec-validation yes; → DNS-SEC에 관한 설정 입니다. 별도로 DNS-SEC 설정을 하지 않는다면 의미가 없습니다. 만약 DNS 보안 설정에 대한 에러가 발생한다면 no로 바꿔주셔도 됩니다. |
bindkeys-file "/etc/named.root.key"; / managed-keys-directory "/var/named/dynamic"; → 마찬가지로 DNS-SEC에 관한 설정 입니다. (DLV : DNS Lookaside Validation) 무시하셔도 좋습니다.
|
pid-file "/run/named/named.pid"; → DNS의 PID가 작성된 파일
|
session-keyfile "/run/named/session.key"; → TSIG session key (Master ↔ Salve 보안 트랙잭션 설정) 마찬가지로 무시 합니다.
|
logggin { channel default_debug { file "data/named.run"; serverity dynamic; }; }; → DNS Server가 실행될때에 디버그 수준의 로그 파일을 남깁니다. 상대 경로 부분은 상단 옵션 중 directory에 작성된 경로를 기준으로 합니다.
|
zone "." IN { type hint; file "named.ca"; }; → 참조할 루트 힌트가 작성되어 있는 파일명을 가르킵니다. 이 파일에는 전세계 루트 도메인(최상위 도메인)에 대한 정보가 들어 있습니다. 만약 이 파일에 대한 설정이 잘못 되었거나 해당 파일 내용이 모두 손실될 경우 루트 도메인에 대한 정보가 없어지므로 반복 질의를 수행할 수 없게 됩니다.
|
include ~~~~ → include 두줄은 해당 경로에 있는 파일의 내용을 불러 옵니다. rfc는 존파일 등록 대한 정보를, root key는 DNS-SEC에 관한 설정을 담고 있습니다. 각 파일의 위치를 별도로 변경 시 이 부분을 수정해야 하며, 그냥 사용한다면 변경할 필요는 없습니다. (처음 설치할땐 rfc파일 안에 존파일 등록 정보를 넣지만, 블로그 글마다 파일명이나 위치 등이 다른 이유가 이 부분의 수정/설정 때문 입니다)
|
2. /var/named.rfc1912.zones
- DNS zone 파일을 등록하는 설정 파일, /etc/named.conf에서 별도로 디렉토리 경로를 설정한적 없다면 /var/named 기준으로 상대 경로를 사용해 zone 파일을 등록 하게 됩니다.
# zone 파일 등록 (기본 설정)
zone "도메인명" IN {
type master;
file "zone 파일명";
allow-update { none; };
};
ex) 정방향 zone 파일 등록
zone "nirsa.com" IN {
type master;
file "nirsa.zone";
allow-update { none; };
};
ex) 역방향 zone 파일 등록
zone "19.17.172" IN {
type master;
file "scourt.go.kr.rev.zone";
allow-update { none; };
한줄씩 설정 | 설명 |
zone "nirsa.com" IN { | 사용할 도메인명을 등록하고 설정을 시작 합니다. |
type master; | 어떤 타입으로 설정할지에 대한 내용 입니다. Master & Slave 서버 구축을 하지 않는다면 master로 넣어 주시면 됩니다. |
file "nirsa.zone"; | 사용될 zone 파일 이름을 작성 해줍니다. 꼭 어떤 이름으로 해야한다는건 없으나, 일반적으로 어떤 도메인에 대한 zone 파일인지 확인을 쉽게 하기 위해 '도메인명' 또는 '도메인명.zone' 형식으로 작성 합니다. |
allow-update { none; }; | Master & Slave 서버 구성의 Dynamic Update 을 위해 어떤 IP로부터 zone 파일 갱신을 할지에 대한 설정 입니다. Master & Slave 서버 구성일 땐 any보단 Slave 서버의 IP를 적어주는게 보안상 좋으며, Master & Slave 서버 구성이 아닐때엔 none; 으로 기능을 off 시켜줍니다. |
}; | Zone 파일 등록을 마무리 합니다. |
3. /var/named/
번에서는 zone 파일을 사용할 수 있도록 등록 하는 과정을 하였습니다. 이제 /var/named/ 에서 본격적으로 zone 파일을 구성하여 도메인에 대한 정보를 설정 합니다.
/var/named 로 이동하면 named.empty 라는 샘플 파일이 있으니, 2번에서 설정한 zone파일 명으로 복사하여 만들어 줍니다. (ex. cp -p /var/named/localhost~~~~ /var/named/nirsa.zone)
필드 | 설명 |
$TTL 3H | TTL은 Time To Live 약자로써 이 도메인의 정보를 받아간 DNS 서버에서 어느 시간동안 이 내용을 저장하고 보관할지에 대한 설정 입니다. 초단위로도 설정이 가능하고 굳이 TTL 값을 올려둘 필요가 없기 때문에 600초 정도로만 설정하셔도 무관 합니다. TTL값이 높을수록 후에 도메인 내용을 설정하거나 하게 되면 갱신이 늦어질 수 있습니다. |
@ | /var/named/rfc~ 에서 설정했던 도메인 명을 의미 합니다. 위에서 설정했던 예시로는 nirsa.com. 을 의미하게 됩니다. |
IN | 우측의 설정을 시작 합니다. |
SOA | tart Of Authority의 약자 입니다. zone 파일의 시작을 알리고 설정을 정의 합니다. |
@ | 이 부분에도 ORIGIN(@)이 오게 됩니다. 이곳은 일반적으로 1차 네임서버를 정의하며 ns1.nirsa.com. 과 같이 사용할 네임서버의 도메인을 정의 합니다. |
rname.invalid. | 관리자 메일 주소를 설정 합니다. 일반적으로 root.nirsa.com. 과 같이 도메인명 앞에 root. 를 입력 합니다. |
0 ; serial | zone 파일의 버전을 의미 합니다. 일반적으로 년월일당일버전 으로 작성 되는데, 예를들어 2020년 02월 05월 두번째 수정일 경우 20020502 와 같이 설정 합니다. 버전 관리 또는 slave와의 동기화 과정에서 이 시리얼은 중요하게 사용 됩니다. |
1D ; refresh | (Master & Slave 서버 구성) Slave 서버가 주기적으로 zone파일을 체크하는 시간을 설정 합니다. |
1H ; retry | (Master & Savle 서버 구성) refresh에서 zone 파일 체크를 실패할 경우 재시도할 시간을 설정 합니다. |
1W ;expire | (Master & Slave 서버 구성) Master 서버에서 가져온 Slave 서버의 zone 파일 내용을 얼마나 신용할지에 대한 설정(즉, Zone 파일의 유효기간) 입니다. Master 서버 장애 등의 이유로 통신이 불가능한 상황일 때 여기서 설정된 시간동안 Slave 서버는 Zone 파일의 내용을 신용하여 서비스 합니다. 시간이 지날 경우 파기 합니다. |
3H ; minimum | TTL값입니다. 만약 1line 에 TTL이 없을 경우 이 값을 참조 합니다. 일반적으론 1line의 TTL값과 똑같이 설정 합니다. |
이후는 DNS 레코드에 대한 설정으로 도메인과 유형, IP를 지정하게 됩니다. 문법 형식은 아래와 같으며 우선 순위(priority)는 일반적으로 MX 레코드에 사용되며 가독성을 위해 띄어쓰기로 작성하셔도 상관 없습니다.
- [FQDN] tab [IN] tab [record] tab [priority] tab [domain or ip]
* FQDN(Fully Qualified Domain Name) 이란? : FQDN은 호스트명(sub domain 이라고도 함)과 도메인명을 포함한 전체 도메인에 대한 주소 입니다. 호스트명(ex. www)와 도메인명(ex. nirsa.com)의 예시 주소를 합치면 www.nirsa.com. 과 같은 전체 도메인, FQDN이 됩니다.
레코드 | 설명 |
NS | Name Server를 지정 합니다. |
A | 좌측에 작성한 도메인의 IP를 지정 합니다. |
AAAA | 좌측에 작성한 도메인의 IPv6를 지정 합니다. |
CNAME | 좌측에 작성한 도메인의 별칭을 지정 합니다. test IN CNAME www 과 같이 사용할 경우 text.nirsa.com. 을 서비스 할 때 www.nirsa.com. 로 이동 됩니다. |
MX | 메일 서버를 지정 합니다. MX 레코드는 10, 20, 30과 같은 우선순위를 지정 해주며 낮을수록 우선순위가 높습니다. |
TXT | 도메인에 대한 텍스트 정보를 지정 합니다. SPF, DKIM등과 같은 레코드와 함께 사용되며 일반적으로 SPF와 함께 메일 스푸핑, 스팸을 방지하기 위해 사용합니다. |
PTR | 역방향 DNS에 사용되는 레코드 입니다. IP주소로 도메인을 찾는데 사용 됩니다. |
AP 서버에 대한 DNS 설정과 스토리지 노드당 DNS 설정
정방향 질의 - scourt.go.kr.zone
$TTL 1D
@ IN SOA @ ns1.scourt.go.kr root.scourt.go.kr (
0
1D
1H
1W
3H
)
IN NS ns1.scourt.go.kr.
ns1 A 172.17.19.22
www A 172.17.19.22
slidns01-node1 A 172.17.19.24
slidns01-node2 A 172.17.19.25
slidns01-node3 A 172.17.19.26
slidns01-node4 A 172.17.19.27
slidns01-node5 A 172.17.19.28
slidns01-node6 A 172.17.19.29
slidns01-node7 A 172.17.19.30
역뱡향 질의 - scourt.go.kr.rev.zone
$TTL 1D
@ IN SOA @ ns1.scourt.go.kr root.scourt.go.kr (
0
1D
1H
1W
3H
)
IN NS ns1.scourt.go.kr.
22 PTR ns1.scourt.go.kr.
22 PTR www.scourt.go.kr.
24 PTR slidns01-node1.scourt.go.kr.
25 PTR slidns01-node1.scourt.go.kr.
26 PTR slidns01-node1.scourt.go.kr.
27 PTR slidns01-node1.scourt.go.kr.
28 PTR slidns01-node1.scourt.go.kr.
29 PTR slidns01-node1.scourt.go.kr.
30 PTR slidns01-node1.scourt.go.kr.
## named.conf 파일 검증 및 서비스 시작
named-checkconf /etc/named.conf
## zone 파일 검증
# named-checkzone [domain] [zone file]
named-checkzone scourt.go.kr scourt.go.kr.zone
# 서비스 시작
systemctl start named
# 서버 재기동 시 서비스 자동 시작
systemctl enable named
chkconfig --add [실행/스크립트 파일명]
$ chkconfig --add httpd
chkconfig --level [runlevel] [실행/스크립트 파일명] on
$ chkconfig --level 2345 httpd on
-> httpd 서비스를 런 레벨 2,3,4,5로 부팅 시에 httpd 아파치 프로세스를 시작해라
서비스 on/off
chkconfig httpd off
-> httpd 서비스를 off 시킴
'linux > CentOS' 카테고리의 다른 글
Linux [계정관리] (0) | 2021.01.19 |
---|---|
RHEL 7 Teaming 설정 방법 (0) | 2021.01.19 |
vsftpd 설치 (0) | 2020.06.16 |
가상호스트(virtual host)란? (2) | 2020.06.16 |
[CentOS7 APM 설치] (0) | 2020.06.16 |