

@ IN SOA ns1.example.com. admin.example.com. (
2025042801 ; serial
3600 ; refresh (1시간)
1800 ; retry (30분)
604800 ; expire (7일)
86400 ) ; minimum TTL (1일)
serial: 변경 시마다 증가 (슬레이브는 이걸 기준으로 동기화 여부 판단)
refresh: 슬레이브가 마스터에게 변경 확인 주기
retry: 실패했을 경우 재시도 주기
expire: 마스터와의 연결이 끊긴 후 슬레이브가 데이터를 폐기할 시간
minimum TTL: 캐시 수명
NS(Name Server): 권한 있는 네임서버
A: IPv4 주소
AAAA: IPv6 주소
MX: 메일 서버
CNAME: 별칭
PTR: 역방향 주소 매핑
TXT: 인증 및 설명 정보 (ex. SPF, DKIM)
/var/named/도메인명.zone$TTL 3H
@ 3600 IN SOA ns.icann.org. noc.dns.icann.org. (
2020080302 ; Serial
7200 ; Refresh
3600 ; Retry
1209600 ; Expire
3600 ) ; Minimum TTL
ns.icann.org.: Primary 네임서버
noc.dns.icann.org.: 관리자 이메일 → noc@dns.icann.org
2020080302: 시리얼 번호 (slave 서버가 최신 Zone 정보를 갖고 있는지 판단 기준)
7200 (2시간): Refresh – 슬레이브가 마스터에 변경사항 확인 주기
3600 (1시간): Retry – 마스터 응답 실패 시 재시도 시간
1209600 (14일): Expire – 슬레이브가 마스터로부터 응답 못 받을 경우 zone 폐기 시간
3600 (1시간): Minimum TTL – 레코드를 캐시하는 기본 시간
blog.naver.com 의 SOA 레코드
$ dig blog.naver.com SOA
결과
;; AUTHORITY SECTION:
nheos.com. 180 IN SOA gns1.nheos.com. hostmaster.nheos.com. 2021081901 10800 3600 604800 180
gns1.nheos.com.: Primary DNS
hostmaster.nheos.com.: 관리자 이메일 → hostmaster@nheos.com
10800: Refresh → 3시간
3600: Retry → 1시간
604800: Expire → 7일
180: TTL → 180초 (캐시 유지 시간)
naver.com 의 SOA 레코드
$ dig naver.com SOA
결과
;; ANSWER SECTION:
naver.com. 300 IN SOA ns1.naver.com. webmaster.naver.com. 2021082001 21600 1800 1209600 180
ns1.naver.com.: Primary DNS
webmaster.naver.com.: 관리자 이메일 → webmaster@naver.com
21600: Refresh → 6시간
1800: Retry → 30분
1209600: Expire → 14일
180: TTL → 180초
A :IPv4 주소를 도메인에 매핑 (예: example.com → 123.45.67.89)
AAAA: IPv6 주소를 도메인에 매핑 (예: example.com → 2001:0db8::1)
CNAME: 도메인의 별칭 설정 (예: www.example.com → example.com)
MX: 메일 서버 주소 지정 (@example.com 이메일을 어떤 서버로 전달할지 정의)
PTR: IP → 도메인 역방향 질의용 (메일 수신 측에서 발신 서버의 신뢰 검증용)
TXT: 도메인 관련 정보 텍스트로 저장 (예: SPF, DKIM, DMARC 정책 등)
NS: 도메인을 관리하는 네임서버 지정 (example.com → ns1.example.com)
URL: 도메인을 특정 URL로 리디렉션 (HTTP 리디렉션 방식)
Framed URL: URL 리디렉션 + 주소창에 원래 도메인 그대로 유지 (프레임 내 로딩)
yum -y install bind bind-utils
192.168.56.100)/etc/resolv.conf 또는 nmcli로 설정hostnamectl set-hostname dns-server.cccr.org/etc/named.conf/var/named/도메인.zonesystemctl start named
systemctl enable named
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
nslookup www.naver.com: 도메인 이름 → IP 주소 확인
nslookup 후 > 10.0.2.100: IP 주소 → 도메인 확인
host www.naver.com: 도메인 정보 요약 출력
host -t A www.naver.com: A 레코드 정보 조회
host -t PTR 10.0.2.100: PTR 레코드 조회 (역방향 DNS)
dig www.naver.com: 상세 DNS 질의 결과 출력
dig -x 10.0.2.100: 역방향 질의
dnf -y install bind bind-utils
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
ip addr add 10.0.2.10/24 dev ethX
hostnamectl set-hostname dns.test.example.com
vi /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { none; };
directory "/var/named";
allow-query { any; };
};
zone "test.example.com" IN {
type master;
file "test.example.com.zone";
};
cd /var/named
cp named.empty test.example.com.zone
vi test.example.com.zone
$TTL 3H
@ IN SOA test.example.com. root.test.example.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.test.example.com.
A 10.0.2.2
dns A 10.0.2.10
www A 10.0.2.20
ftp A 10.0.2.30
mail A 10.0.2.40
blog A 10.0.2.50
chmod 660 test.example.com.zone
chown :named test.example.com.zone
vi /etc/named.conf
zone "2.0.10.in-addr.arpa" IN {
type master;
file "10.0.2.0.zone";
};
cp test.example.com.zone 10.0.2.0.zone
vi 10.0.2.0.zone
$TTL 3H
@ IN SOA test.example.com. root.test.example.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.test.example.com.
A 10.0.2.2
10 PTR dns.test.example.com.
20 PTR www.test.example.com.
30 PTR ftp.test.example.com.
40 PTR mail.test.example.com.
50 PTR blog.test.example.com.
chmod 660 10.0.2.0.zone
chown :named 10.0.2.0.zone
systemctl enable named --now
vi /etc/named.conf
zone "test.example.com" IN {
type master;
file "test.example.com.zone";
allow-transfer { 10.0.2.101; };
};
zone "2.0.10.in-addr.arpa" IN {
type master;
file "10.0.2.0.zone";
allow-transfer { 10.0.2.101; };
};
vi /var/named/test.example.com.zone
NS dns.test.example.com.
NS slave.test.example.com.
...
slave A 10.0.2.101
vi /var/named/10.0.2.0.zone
NS dns.test.example.com.
NS slave.test.example.com.
...
101 PTR slave.test.example.com.
dnf -y install bind bind-utils
nmcli con mod ethX ipv4.addresses 10.0.2.101/24
nmcli con mod ethX ipv4.method manual
nmcli con mod ethX ipv4.gateway ""
nmcli con mod ethX ipv4.dns 10.0.2.10
nmcli con up ethX
hostnamectl set-hostname slave.test.example.com
vi /etc/named.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; };
};
zone "test.example.com" IN {
type slave;
masters { 10.0.2.10; };
file "slaves/test.example.com.zone";
notify no;
};
zone "2.0.10.in-addr.arpa" IN {
type slave;
masters { 10.0.2.10; };
file "slaves/10.0.2.0.zone";
notify no;
};
systemctl enable named --now
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
ls /var/named/slaves/
test.example.com.zone, 10.0.2.0.zone 파일이 자동으로 생성됨nmcli con mod static +ipv4.dns 10.0.2.101
host dns.test.example.com 10.0.2.101
