### DNS Cache 구성 하기
테스트 OS : CentOS 7
# Bind 설치 하기
yum install caching-nameserver
# named.conf 설정하기
vi /etc/named.conf
options {
....
listen-on port 53 { any; }; --> 외부에서도 접속해야 하니 any로 설정
// listen-on-v6 port 53 { none; }; --> ipv6 사용하지 않을거라 주석 처리
allow-query { any; }; --> DNS 질의를 위해서 any 혹은 대역으로 설정
dnssec-validation no;
...};
zone "." IN {
type hint; -> cache로 사용 할거기에 type을 hint로 설정
file "named.ca";
};
여기 까지만 설정하고 named 데몬 기동
# named 데몬 기동 및 테스트
# named 기동
systemctl start named
systemctl enable named
# DNS 질의 TEST
dig @127.0.0.1 naver.com
아래와 같은 결과가 나오면 정상
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.15 <<>> @127.0.0.1 naver.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58373
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;naver.com. IN A
;; ANSWER SECTION:
naver.com. 300 IN A 223.130.200.107
naver.com. 300 IN A 223.130.200.104
naver.com. 300 IN A 223.130.195.95
naver.com. 300 IN A 223.130.195.200
;; AUTHORITY SECTION:
naver.com. 172800 IN NS ns2.naver.com.
naver.com. 172800 IN NS ns1.naver.com.
;; ADDITIONAL SECTION:
ns2.naver.com. 172800 IN A 125.209.249.6
ns1.naver.com. 172800 IN A 125.209.248.6
;; Query time: 417 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: 금 11월 10 13:05:56 KST 2023
;; MSG SIZE rcvd: 170
## resolve.conf 수정
vi /etc/resolve.conf
nameserver 127.0.0.1
## dns root 도메인 관리
. root 도메인은 유동적으로 변하기에 월1회는 업데이트 해주는게 좋음
wget ftp://ftp.rs.internic.net/domain/db.cache -O /var/named/named.ca && rndc reload
-- script
#!/bin/bash
TEMP_DIR=/app/script/tmp
TARGET_DIR=/var/named
BACKUP_DIR=/app/script/backup
DATE=`date +%Y%m%d-%H%M`
#wget ftp://ftp.rs.internic.net/domain/db.cache -O /var/named/named.ca && rndc reload
/usr/bin/wget ftp://ftp.rs.internic.net/domain/db.cache -O ${TEMP_DIR}/named.ca
/usr/bin/chown -R named.named ${TEMP_DIR}/named.ca
/usr/bin/cp ${TARGET_DIR}/named.ca ${BACKUP_DIR}/named.ca_${DATE}
/usr/bin/cp ${TEMP_DIR}/named.ca ${TARGET_DIR}/named.ca
/usr/sbin/rndc reload
-- cron (매월 10일 11시에 업데이트)
0 11 10 * * /app/script/dns_update.sh > /app/script/log/dns.log
## DNS 로깅 및 통계
options {
....
zone-statistics yes; --> 추가
...
};
# 로깅 옵션 추가
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
category notify { zone_transfer_log; };
category xfer-in { zone_transfer_log; };
category xfer-out { zone_transfer_log; };
channel zone_transfer_log {
file "/var/log/named/transfer.log" versions 10 size 50m;
print-time yes;
print-category yes;
print-severity yes;
severity info;
};
channel query_log {
file "/var/log/named/queries.log" versions 10 size 50m;
severity dynamic;
print-severity yes;
print-time yes;
print-category yes;
};
category queries {
query_log;
};
};
## statistics 설정 (any로 오픈)
statistics-channels {
inet 0.0.0.0 port 8080 ;
};
OR
## 특정 호스트만 접근 허용
statistics-channels {
inet 127.0.0.1 port 8053 allow { 127.0.0.1; };
};
## Prometheus 모니터링 참고
https://github.com/prometheus-community/bind_exporter/releases
'OS > CentOS' 카테고리의 다른 글
| ## Goaccess 설치 (0) | 2023.10.20 |
|---|---|
| SSL 체크 스크립트 (0) | 2023.05.11 |
| dnsmasq 설치 후 질의 통계 확인 하기 (0) | 2023.01.16 |
| dnsmasq를 사용하여 DNS 서버 설정하기 (DNS cache) (0) | 2023.01.13 |
| openssl 버전업 (CentOS 7.x에서 openssl 버전업) (0) | 2022.02.22 |