YUMSERV
Published 2019. 6. 1. 13:35
DNS 설치 및 설정 LINUX/DNS
반응형

1. DNS란

 

DNS는 도메인을 관리하기 위한 시스템으로, 각 계층별로 네임서버를 두고 분산해서 정보를 관리합니다.
도메인 이름과 IP주소를 서로 변환하는 역할을 합니다. TCP, UDP 53번 포트를 사용합니다.
Forward Zone(도메인 이름 → IP) 과 Reverse Zone(IP → 도메인 이름)을 가집니다.
Forward Zone에서는 도메인을 구성하는 호스트에 대한 정보를, Reverse Zone에는 DNS서버 자기 자신에 대한 정보를 기록합니다.

대표적으로 알려진 DNS 주소는 다음과 같습니다.
KT : 1차 ( 168.126.63.1 ) 2차 ( 168.126.63.2 )
SK : 1차 ( 210.220.163.82 ) 2차 ( 219.250.36.130 )
LG : 1차 ( 164.124.101.2 ) 2차 ( 203.248.252.2 )
Google : 1차 ( 8.8.8.8) 2차 ( 8.8.4.4 )

 

2. DNS 서버 구축

 

※ 테스트 환경 : CentOS 7.5

 

1) 패키지 설치

 

# yum -y install bind*

 

2) 설정파일 변경

 

빨간색 글씨부분은 수정해줍니다.

# vi /etc/named.conf
options {
listen-on port 53 { any; }; 
listen-on-v6 port 53 { ::1; };
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”;
allow-query { any; }; 
/*
– If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
– If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
– If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion no;


내용을 설명해 드리겠습니다.

options {
listen-on port 53 { any; }; 
// 네임서버의 포트 번호와 접근할 수 있는 IP를 설정하는 부분으로 any로 설정해놓았을 때 모든 IP가 접근 가능하다는 뜻입니다. 
listen-on-v6 port 53 { ::1; };
directory “/var/named”;
 
// DNS의 zone 파일 위치를 지정하는 곳입니다.
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”;
// 메모리 관련 통계 파일이 생성되는 절대경로와 파일이름을 지정합니다.
allow-query { any; }; 
// 네임서버 query를 허용할 IP를 설정합니다. any 로 설정해놓아야 모든 IP에 접근이 가능합니다
recursion no;
// 외부에서 현재의 네임서버를 지정해서 사용할 수 있게 하는지 유무를 설정하는 부분입니다.
// 이부분을 YES로 설정해도 되지만, 보안적으로 53번 포트로 무작위 질의를 하는 경우가 있습니다.
// 이를 방지하기 위해 NO 설정을 해놓으면 무작위 질의를 할 수 없게 합니다.



여기서 ns.test.com이라는 네임서버 이름과, ittech.com이라는 도메인을 하나 등록해보겠습니다.
/etc/named.rfc1912.zones 파일은 존 파일을 설정하는 파일입니다.


# vi /etc/named.rfc1912.zones
zone “test.com” IN {
type master;/home
file “test.com.zone”;
allow-update { none; };
}
zone “ittech.com” IN {
type master;
file “ittech.com.zone”;
allow-update { none; };
}


존파일은 /var/named에 존재합니다.


# cp -arp /var/named/named.localhost /var/named/test.com.zone
# cp -arp /var/named/named.localhost /var/named/ittech.com.zone


# vi test.com.zone
$TTL 10M
@ IN SOA ns.test.com. root.test.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.test.com.
IN MX 10 mail.test.com.
IN TXT “v=spf1 ipv4:192.168.0.100 ~all”
IN A 192.168.0.100
ns IN A 192.168.0.100
www IN A 192.168.0.100
mail IN A 192.168.0.100


# vi ittech.com.zone
$TTL 10M
@ IN SOA ittech.com. root.ittech.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.test.com.
IN MX 10 mail.ittech.com.
IN TXT “v=spf1 ipv4:192.168..0.100 ~all”
IN A 192.168.0.100
www IN A 192.168.0.100
mail IN A 192.168.0.100

$TTL : Time to Live의 약자로 예를 들어 test.com을 질의했을 때, 질의해 간 다른 네임서버가 해당 IP주소를 캐시에 저장하는 기간입니다.(3H – 3시간, 1D – 1일, 10M – 10분 8600 – 24시간 600 – 10분)
@ : /etc/named.rfc1912.zones파일에 정의된 test.com을 의미합니다. @ 에 도메인을 직접 적어주려면 반드시 마지막에 루트도메인(.)을 입력해주어야 합니다.
IN : 클리스 이름으로 internet을 의미합니다.
SOA 레코드 : Start Of Authority 의 약자로 권한의 시작을 뜻하며, 괄호 안의 숫자는 시간을 의미하는데 차례로 serial(버전정보), refresh(상위 네임 서버에 문제 발생 시 재접속 간격), expire(상위 네임서버에 접속 못할 경우 이전의 정보를 파기하는 간격), minimum(이 시간 이후에 정보가 삭제 됨)을 말합니다.
NS 레코드 : Name server의 약자로 설정된 도메인의 네임서버 역할을 하는 컴퓨터를 말합니다.
MX 레코드 : Mail Exchanger의 약자로 메일 서버 컴퓨터를 설정합니다. 10은 메일주소의 우선순위를 위한 숫자를 말합니다.
A 레코드 : 호스트 이름에 상응하는 IP 주소를 지정합니다.
CNAME 레코드 : 호스트 이름에 대한 별칭을 부여할 때 사용합니다.
PTR 레코드 : IP 주소에 대한 호스트 명입니다. IN TXT “v=spf1 ipv4:192.168.0.100 ~all” 위 메일발송 IP를 위조하여 보내온 메일은 수신자의 메일서버의 정책에 따라 판단하라는 뜻입니다. SPF는 메일발신 서버 인증 중 하나로서 소유하신 도메인의 SPF레코드를 확인하거나, SPF레코드를 작성을 도와주는 곳입니다.

 

3) 방화벽 설정

 

# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state –state NEW -m udp –dport 53 -j ACCEPT
# service iptables restart
# iptables -nL | grep 53
ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53
ACCEPT udp — 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:53

 

4) 서비스 시작 및 확인

 

# service named start
# netstat -nltp | grep 53
tcp 0 0 172.16.0.226:53 0.0.0.0:* LISTEN 23375/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 23375/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 23375/named
tcp6 0 0 ::1:53 :::* LISTEN 23375/named
tcp6 0 0 ::1:953 :::* LISTEN 23375/named


반응형

'LINUX > DNS' 카테고리의 다른 글

GSLB란  (0) 2022.12.05
PDNS 업그레이드  (0) 2019.06.03
PDNS 설치 및 설정  (0) 2019.05.29
BIND 1차 2차 동기화  (0) 2019.05.29
profile

YUMSERV

@lena04301

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!