sudo yum -y install bind
# sudo vi /etc/named.conf
...전략
// 다음 줄을 찾아 any로 변경한다.
// listen-on port 53 { 127.0.0.1; };
listen-on port 53 { any; };
// listen-on-v6 port 53 { ::1; };
listen-on-v6 port 53 { any; };
...중략...
// 다음 줄들을 추가한다.
// 지금 설정하는 DNS 서버에 없는 주소의 쿼리가 들어올 경우 쿼리를 포워딩할 서버들이다.
forwarders {
192.168.219.254;
8.8.8.8;
168.126.63.1;
};
후략...
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
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; };
forwarders {
192.168.219.254;
8.8.8.8;
168.126.63.1;
};
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";
// sudo vi named.rfc1912.zones
// 파일의 끝에 추가할 zone 파일을 추가한다.
zone "$DOMAIN_NAME.DOMAIN" IN{
type master;
// 파일의 확장자는 중요하지 않다.
// 경로를 포함하지 않을 경우 /var/named/ 디렉토리의 파일을 바라본다.
// file "$DOMAIN_NAME_LIST_FILE.zone";
file "/$FILE/$PATH/$DOMAIN_NAME_LIST_FILE.zone";
allow-update {none;};
};
// D클래스 주소부터 입력한다.
zone "$C_CLASS_IP.$B_CLASS_IP.$A_CLASS_IP..in-addr.arpa" IN {
type master;
file "$DOMAIN_NAME_LIST_FILE.rev.zone";
allow-update { none; };
};
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
zone "haedongg.net" IN{
type master;
file "haedongg.net.zone";
allow-update {none;};
allow-transfer {none;};
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "haedongg.net.rev.zone";
allow-update { none; };
};
zone "haedongg.co.kr" IN{
type master;
file "haedongg.co.kr.zone";
allow-update {none;};
allow-transfer {none;};
};
zone "0.17.172.in-addr.arpa" IN {
type master;
file "haedongg.co.kr.rev.zone";
allow-update { none; };
};
도메인 명을 쿼리 했을 때 IP를 결과로 응답 해주기 위한 리스트는 zone,
IP로 쿼리 했을 떼 도메인으로 응답해주기 위한 파일은 Reverse Zone 파일이다.
확장자는 중요하지 않다.
DNS의 레코드 종류는 다음과 같다
A | 도메인 이름을 IPv4 주소로 매핑 |
AAAA | 도메인 이름을 IPv6 주소로 매핑 |
CNAME | 도메인 이름 별칭 매핑 (e.g., $AAA.$도메인.$주소 -> wiki.haedongg.net) |
MX | 메일 서버 주소 |
TXT | 도메인 관련 텍스트 정보,SPF, DKIM등 |
NS | 도메인 이름을 관리하는 권한이 있는 네임 서버 |
PTR | IP 주소를 도메인 이름으로 매핑 |
SRV | 특정 서비스와 관련된 호스트 및 포트 지정 |
SOA | Start of Authority Record, 도메인에 대한 권한과 정보. zone 파일의 시작부분에 위치 |
CAA | 도메인에 대해 SSL 인증서를 발급할 수 있는 인증 기관(CA) 지정 |
$TTL 1M
@ IN SOA @ ns.haedongg.net. (
0
1M
2M
1D
3M )
IN NS ns.haedongg.net.
NS IN A 192.168.0.254
121.166.194.196
IN A 121.166.194.196
WWW IN A 121.166.194.196
www IN A 121.166.194.196
wiki IN A 121.166.194.196
r-wiki IN CNAME redmine.haedongg.net
home IN A 192.168.0.7
pc IN A 192.168.0.77
후략...
TTL 1D
@ IN SOA @ ns.haedongg.net. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.0.254
7 PTR home.haedongg.net.
77 PTR pc.haedongg.net.
후략..
# sudo systemctl enable named
# sudo systemctl start named
sudo systemctl enable named --now