DNSコンテンツサーバのゾーンファイルの同期設定を行いました.なお,DNSはnsdを利用しています.
DNSコンテンツサーバの運用
DNSコンテンツサーバの運用は以下のとおり行います.
- DNSサーバは一号機と二号機の二台構成とします.
- どちらもプライマリサーバ構成とします.
- ゾーンファイルを修正する場合は,一号機側のファイルを書き換えるものとします.二号機側への変更は破棄されます.
- 二号機側のゾーンファイルは一号機のものをコピーして利用します.
- 二号機でゾーンファイルのコピーを行っている間nsdサービスを停止します.
- ゾーンファイルのバックアップおよびコピーはそれぞれ一日一回行います.
同期方式
候補は,nsdの機能,rsync,scpなどを考えましたが,DNSサーバ二台が共通で利用しているNFSサーバありますので,バックアップもかねてそこを介してファイルの同期を行います.
一号機側の設定
nsdのzoneファイルのバックアップシェルです.当サイトでは/usr/local/libexec/backup-nsd-zones.shというファイル名で作成しました.
#!/usr/bin/env bash
LANG=C ; export LANG
DATE=`date +%Y%m%d%H%M`
#HOSTNAME=`/usr/bin/hostname -s`
#
#if [ "xxxxx" != ${HOSTNAME} ]; then
# echo exec this script on xxxxx.
# exit
#fi
BK_DIR=/backup/nsd/zones
cd ${BK_DIR}
mkdir -p .bk
rm -rf .bk/${DATE}.tar
tar cf .bk/${DATE}.tar *.zone
bzip2 .bk/*.tar
rm -rf *.zone
cp -p /etc/nsd/zones/*.zone ${BK_DIR}
systemdのserviceファイルです.
[Unit]
Description=backup nsd zones every day
[Service]
Type=oneshot
ExecStart=/usr/bin/sh -c '/usr/local/libexec/backup-nsd-zones.sh'
systemdのtimerファイルです.
[Unit]
Description=backup nsd zones every day
[Timer]
OnCalendar=*-*-* 23:30:00
Unit=backup-nsd-zones.service
[Install]
WantedBy=timers.target
timerを有効にします.
# systemctl daemon-reload
# systemctl enable backup-nsd-zones.timer
Created symlink /etc/systemd/system/timers.target.wants/backup-nsd-zones.timer → /etc/systemd/system/backup-nsd-zones.timer.
# systemctl start backup-nsd-zones.timer
# systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
(途中略)
Sun 2022-04-03 23:30:00 JST 9h left n/a n/a backup-nsd-zones.timer backup-nsd-zones.service
(途中略)
8 timers listed.
Pass --all to see loaded but inactive timers, too.
#
二号機側の設定
一号機のzoneファイルのバックアップをコピーするシェルです.当サイトでは/usr/local/libexec/setup-nsd-zones.shというファイル名で作成しました.
#!/usr/bin/env bash
LANG=C ; export LANG
DATE=`date +%Y%m%d%H%M`
#HOSTNAME=`/usr/bin/hostname -s`
#
#if [ "yyyyy" != ${HOSTNAME} ]; then
# echo exec this script on yyyyy.
# exit
#fi
BK_DIR=/backup/nsd/zones
ZONES_DIR=/etc/nsd/zones
systemctl stop nsd
cd ${ZONES_DIR}
rm -rf *.zone
cp -p ${BK_DIR}/*.zone ${ZONES_DIR}
systemctl start nsd
systemdのserviceファイルです.
[Unit]
Description=setup nsd zones every day
[Service]
Type=oneshot
ExecStart=/usr/bin/sh -c '/usr/local/libexec/setup-nsd-zones.sh'
systemdのtimerファイルです.
[Unit]
Description=setup nsd zones every day
[Timer]
OnCalendar=*-*-* 00:30:00
Unit=setup-nsd-zones.service
[Install]
WantedBy=timers.target
timerを有効にします.
# systemctl daemon-reload
# systemctl enable setup-nsd-zones.timer
Created symlink /etc/systemd/system/timers.target.wants/setup-nsd-zones.timer → /etc/systemd/system/setup-nsd-zones.timer.
# systemctl start setup-nsd-zones.timer
# systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
(途中略)
Mon 2022-04-04 00:30:00 JST 9h left n/a n/a setup-nsd-zones.timer setup-nsd-zones.service
(途中略)
10 timers listed.
Pass --all to see loaded but inactive timers, too.
#
コメント