#!/bin/bash
# 定义变量
DOMAIN="example.com"
NS1="ns1.$DOMAIN"
IP="192.168.1.100"
MAIL_IP="192.168.1.101"
SERIAL=$(date +%Y%m%d%H)
# 更新系统
yum update -y
# 安装 Bind
yum install bind bind-chroot -y
# 配置主配置文件
cat > /etc/named.conf << EOF
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; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.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";
EOF
# 创建正向区域文件
cat > /var/named/${DOMAIN}.zone << EOF
\$TTL 86400
@ IN SOA $NS1. admin.$DOMAIN. (
$SERIAL ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS $NS1.
ns1 IN A $IP
www IN A $IP
mail IN A $MAIL_IP
EOF
# 创建反向区域文件
IP_REV=$(echo $IP | awk -F. '{print $3 "." $2 "." $1}')
cat > /var/named/${IP_REV}.zone << EOF
\$TTL 86400
@ IN SOA $NS1. admin.$DOMAIN. (
$SERIAL ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS $NS1.
$(echo $IP | awk -F. '{print $4}') IN PTR $NS1.
$(echo $IP | awk -F. '{print $4}') IN PTR www.$DOMAIN.
$(echo $MAIL_IP | awk -F. '{print $4}') IN PTR mail.$DOMAIN.
EOF
# 配置区域
cat > /etc/named.rfc1912.zones << EOF
zone "$DOMAIN" IN {
type master;
file "${DOMAIN}.zone";
allow-update { none; };
};
zone "${IP_REV}.in-addr.arpa" IN {
type master;
file "${IP_REV}.zone";
allow-update { none; };
};
EOF
# 修改文件权限
chown named:named /var/named/${DOMAIN}.zone
chown named:named /var/named/${IP_REV}.zone
# 启动并设置开机自启
systemctl start named
systemctl enable named
# 防火墙设置
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
echo "主域名服务器配置完成。"