0. 방화벽 설정
DNS 서비스 방화벽 설정. DNS 기본 포트(53 port)에 대해 tcp/udp를 열어분다.
[root@localhost ~]# firewall-cmd --permanent --add-port=53/tcp
success
[root@localhost ~]# firewall-cmd --permanent --add-port=53/udp
success
[root@localhost ~]# firewall-cmd --reload
success
CentOS 6 경우 iptables 를 이용하여 53번 TCP 포트에 대해서 In/Out 룰 설정이 필요합니다.
[root@localhost ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
[root@localhost ~]# service iptables save
[root@localhost ~]# service iptables restart
1. BIND 패키지 설치
BIND 패키지를 사용하여 Domain Name Server를 구축한다.
패키지를 설치하기전 서버를 최신 상태(패키지 목록)인지 확인한다.
[root@localhost ~]# yum update && yum upgrade
[root@localhost ~]# yum install -y bind bind-utils
2. BIND 설정
2.1 전역 매개변수 설정
o listen-on port 53 { any; };
: BIND가 들어오는 DNS 요청을 수신할 포트를 설정한다. 기본적으로 53번 DNS 포트를 이용하며, "any" 설정을 하영 BIND까 사용 가능한 모든 인터페이스에 연결 하도록 지시 할 수 있다.
o recursion no
: recursion(재귀) 옵션은 구성 파일이 있는 도메인데 대한 정보로만 응답하도록 BIND를 구성할 수 있다. 해당 옵션이 YES로 설정되어 있다면 BIND 재귀적질의가 가능한 Domain Name Server 가 된다. (Local DNS 서버가 여러 DNS 서버를 차례대로 물어봐서 그 답을 찾는 과정을 Recursive Query, '재귀적질의'라고 부른다.)
recusion 옵션을 사용안함(recursion no;)으로 변경한다면, lterative Query(반복적 질의)를 사용하는 Domain Name Server 로 전환된다. (자신이 직접 관리하지 않는 질의 요청이 있을 경우 질의에 응답 가능한 NS 목록을 응답한다.)
o allow-query any;
: 모든 곳에서 요청하는 쿼리를 허용하도록 "any"로 설정합니다.
[root@localhost ~]# vim /etc/name.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { none; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
2.2 BIND가 제공할 도메인별 DNS 정보(영역 정보 및 영역 레코드) 생성
도메인에 대한 DNS 정보로 생성할 영역 정보 파일을 읽을 BIND를 구성한다.
o zone "IP address && Domain Name"
: BIND가 요청에 응답할 도메인 이름 또는 IP 주소
o type "type (master && slave);
: BIND는 로컬 저장소에서 영역 정보를 읽고 영역에 나열된 도메인에 대해 신뢰할 수 있는 정보를 제공한다. type으로 해당 서버가 Primary 서버인지 Secondary 서버인지 설정한다.
o file "ZONE File Path"
: 영역 정보가 포함된 파일.
[root@localhost ~]# vim /etc/named.rfc1912.zones
[root@localhost ~]# tail -15 /etc/named.rfc1912.zones
};
zone "test.com" IN {
type master;
file "test.com.zone";
allow-update { none; };
};
zone "129.88.168.192.in-addr.arpa" IN {
type master;
file "test.com.revzone";
allow-update { none; };
};
첫 번째 zone 영역은 도메인 정보를 IP 주소로 변환하며, 두 번째 영역은 서버 IP주소를 도메인 이름으로 변환. 즉, 역방향 레코드의 영역이다.
3. 영역 파일 구성
BIND 설정에서 명시한 test.com의 영역파일을 구성한다.
[root@localhost named]# cd /var/named/
[root@localhost named]# pwd
/var/named
[root@localhost named]# ls -al
total 16
drwxrwx--T. 8 root named 177 Oct 9 04:01 .
drwxr-xr-x. 20 root root 280 Oct 9 03:59 ..
drwxr-x---. 7 root named 61 Oct 9 04:01 chroot
drwxr-x---. 7 root named 61 Oct 9 04:01 chroot_sdb
drwxrwx---. 2 named named 6 Jun 1 11:26 data
drwxrwx---. 2 named named 6 Jun 1 11:26 dynamic
drwxrwx---. 2 root named 6 Mar 31 2020 dyndb-ldap
-rw-r-----. 1 root named 2253 Apr 5 2018 named.ca
-rw-r-----. 1 root named 152 Dec 15 2009 named.empty
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
drwxrwx---. 2 named named 6 Jun 1 11:26 slaves
[root@localhost named]# cp named.localhost test.com.zone
[root@localhost named]# cp named.localhost test.com.revzone
o "@ IN SOA test.com. root.test.com. ( " 의 구성 정보
@ | named.conf.local 파일의 test.com 도메인으로 교체된다. |
IN | 레코드의 유형표시 (INternet 레코드) |
SOA | Start Of Authority 레코드의 약자. (신뢰할 수 있는 도메인) |
test.com | DNS 레코드 이름서버 |
root.test.com | 네임서버 관리자의 이메일 주소 (@의 기호는 .으로 대체된다 - root@test.com) |
[root@localhost named]# vim test.com.zone
[root@localhost named]# cat test.com.zone
$TTL 1D
@ IN SOA test.com. root.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
;NmaeServer Infomation
@ IN NS ns1.test.com.
ns1 IN A 192.168.88.100
;Additional A Records
@ IN A 192.168.88.100
[root@localhost named]# vim test.com.revzone
[root@localhost named]# cat test.com.revzone
$TTL 1D
@ IN SOA test.com root.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
;NameServer Information
IN NS ns1.test.com.
ns1 IN A 192.168.88.100
;Reverse IP Information
100.88.168.192.in-addr.arpa. IN PTR test.com.
4. ZONE 파일의 소유권 변경
영역 파일 생성후 파일에 대한 소유권을 "named"로 변경한다.
[root@localhost named]# pwd
/var/named
[root@localhost named]# ls
chroot data dyndb-ldap named.empty named.loopback test.com.revzone
chroot_sdb dynamic named.ca named.localhost slaves test.com.zone
[root@localhost named]# chown root.named test.com.*
[root@localhost named]# ls -al
...
...
-rw-r-----. 1 root named 271 Oct 9 05:58 test.com.revzone
-rw-r-----. 1 root named 244 Oct 9 05:52 test.com.zone
5. 구성에 오류가 있는지 확인
5.1 전역 매개변수, 구성 파일을 확인한다.
[root@localhost named]# named-checkconf /etc/named.conf
[root@localhost named]# named-checkconf /etc/named.rfc1912.zone
5.2 ZONE, 영역 파일을 확인한다.
[root@localhost named]# named-checkzone test.com /var/named/test.com.zone
zone test.com/IN: loaded serial 0
OK
[root@localhost named]# named-checkzone test.com /var/named/test.com.revzone
/var/named/test.com.revzone:14: ignoring out-of-zone data (100.88.168.192.in-addr.arpa)
zone test.com/IN: loaded serial 0
OK
도메인 질의 테스트
[root@localhost named]# nslookup 192.168.88.100
100.88.168.192.in-addr.arpa name = test.com.
[root@localhost named]# nslookup test.com
Server: 192.168.88.100
Address: 192.168.88.100#53
Name: test.com
Address: 192.168.88.100
References
1. LOW END BOX - "How To Create DNS Server On CentOS 7"
lowendbox.com/blog/create-dns-server-centos-7/
How To Create a DNS Server On CentOS 7
The DNS or Domain Name System is the distributed database that allows zone records, such as IP addresses, to be associated with domain names. When a computer, such as your laptop or phone, needs to communicate with a remote computer, such as a web server,
lowendbox.com
2. JungNux - "DNS란 무엇인가 재귀적, 반복적 쿼리"
DNS란 무엇인가 재귀적,반복적 쿼리
안녕하세요 오늘은 DNS(Domain Name System)에 대해 알아보겠습니다. DNS서버 구축을 하기 위해 먼저 개념을 알고가는 것이 좋다고 생각해서 먼저 글을 작성해봅니다 시작해보겠습니다. DNS 란? 네트워��
hihighlinux.tistory.com
3. 서버구축이야기 - "리눅스 네임서버 구축하기 - 주(Primary) DNS 서버 구축하기"
리눅스 네임서버 구축하기 - 주(Primary) DNS 서버 구축하기
주(Primary) DNS 서버 구축해보기 이번시간에는 네임서버의 가장 대표적인 주(Primary) DNS 서버를 구축해보겠습니다. 관련글 : 도메인과 네임서버 알아보기 - http://server-talk.tistory.com/168 도메인이란?..
server-talk.tistory.com
'Linux > Web Server' 카테고리의 다른 글
Sendmail, dovecot, roundcube 메일 서비스 (0) | 2020.12.10 |
---|---|
CentOS 7 자체 서명 SSL 인증서 생성 및 적용 - tomcat9.0 (0) | 2020.09.16 |
CentOS 7 자체 서명 SSL 인증서 생성 및 적용 - apache 2.4.6 (0) | 2020.09.16 |