分类: 1、国家地区域名: (cn(中国)、hk(香港)、sg (新加坡)等。 2、通用项级域名: com (商业机构)、org (非营利组织)、edu (教育机构)等。 3、新通用顶级域名: red (红色、热情)、top (顶级、高端)等。 4、com.cn属于“二级域名”,是cn项级域的子域。
1
baidu:级域(注册域) ,可由·个人或组织申请注册。
1
www:三级域(子域),服务器网站名代表。(www.baidu.com)
- 什么是DNS?
域名系统(Domain Name System,缩写: DNS)是互联网的一项服务。域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。可以理解为DNS就是翻译官。
cat >> /etc/named.rfc1912.zones <<"EOF" zone "aaa.com" IN { type master; file "aaa.com.zone"; }; zone "48.168.192.in-addr.arpa" IN { type master; file "aaa.loopback"; }; EOF
3、编辑正向解析数据文件 vim /var/named/aaa.com.zone
1 2 3 4 5 6 7 8 9 10 11 12
cat > /var/named/aaa.com.zone <<"EOF" $TTL 1D @ IN SOA aaa.com. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.aaa.com. dns A 192.168.48.129 www A 192.168.48.128 EOF
zone "aaa.com" IN { type master; file "aaa.com.zone"; allow-update { 192.168.48.102; }; //从服务器的IP }; zone "48.168.192.in-addr.arpa" IN { type master; file "aaa.loopback"; allow-update { 192.168.48.102; }; //从服务器的IP };
3、编辑正向解析数据文件 vim /var/named/aaa.com.zone
1 2 3 4 5 6 7 8 9 10 11 12
cat > /var/named/aaa.com.zone <<"EOF" $TTL 1D @ IN SOA aaa.com. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns.aaa.com. dns A 192.168.48.129 www A 192.168.48.128 EOF
zone "aaa.com" IN { type slave; file "slaves/aaa.com.zone"; masters { 192.168.48.101; }; //主服务器的IP }; zone "48.168.192.in-addr.arpa" IN { type slave; file "slaves/aaa.loopback"; masters { 192.168.48.101; }; //主服务器的IP };
如果主从同步之后区域数据文件会同步到/var/named/slaves这个目录下,现在还是空的
1 2 3
[root@slave ~]# ll /var/named/slaves total 0 [root@slave ~]#
# 检查是否已存在相同的解析记录 if grep -q "^$SHORT_NAME[[:space:]]*A[[:space:]]*$IP""$ZONE_FILE"; then echo"记录 $DOMAIN -> $IP 已存在,无需添加" exit 0 fi
# **递增 serial 号** increment_serial() { # 提取当前 serial 值 current_serial=$(awk '/serial/{print $1}'"$1") if [[ -z "$current_serial" ]]; then # 如果没有找到 serial(空),初始化为 1 current_serial=1 fi
# 递增 serial new_serial=$((current_serial + 1))
# 替换 serial 行,保留前导空格和注释 sed -i "s/\([[:space:]]*\)\([0-9]\+\)\([[:space:]]*; serial\)/\1$new_serial\3/""$1" }
# 添加正向解析区域配置(如果不存在) if ! grep -q "zone \"$BASE_DOMAIN\" IN""$ZONE_CONFIG"; then cat >> "$ZONE_CONFIG" <<EOF zone "$BASE_DOMAIN" IN { type master; file "$ZONE_FILE"; notify yes; also-notify { $SLAVE_IP; }; allow-update { $SLAVE_IP; }; }; EOF fi
# 添加反向解析区域配置(如果不存在) if ! grep -q "zone \"$REV_IP.in-addr.arpa\" IN""$ZONE_CONFIG"; then cat >> "$ZONE_CONFIG" <<EOF zone "$REV_IP.in-addr.arpa" IN { type master; file "$REV_ZONE_FILE"; notify yes; also-notify { $SLAVE_IP; }; allow-update { $SLAVE_IP; }; }; EOF fi
# **初始化 Zone 文件(正向解析)** if [ ! -s "$ZONE_FILE" ]; then cat > "$ZONE_FILE" <<EOF \$TTL 1D @ IN SOA $BASE_DOMAIN rname.invalid. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS $BASE_DOMAIN $BASE_DOMAIN A $MASTER_IP EOF increment_serial "$ZONE_FILE"# 初始化时递增 serial fi
# **追加 A 记录(使用短名)** if ! grep -q "^$SHORT_NAME[[:space:]]*A[[:space:]]*$IP""$ZONE_FILE"; then echo"$SHORT_NAME A $IP" >> "$ZONE_FILE" increment_serial "$ZONE_FILE"# 追加记录后递增 serial fi
# **初始化 Zone 文件(反向解析)** if [ ! -s "$REV_ZONE_FILE" ]; then cat > "$REV_ZONE_FILE" <<EOF \$TTL 1D @ IN SOA $BASE_DOMAIN rname.invalid. ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS $BASE_DOMAIN $BASE_DOMAIN A $MASTER_IP EOF increment_serial "$REV_ZONE_FILE"# 初始化时递增 serial fi
# **追加 PTR 记录** if ! grep -q "^$REV_HOST[[:space:]]*PTR[[:space:]]*$SHORT_NAME.$BASE_DOMAIN.""$REV_ZONE_FILE"; then echo"$REV_HOST PTR $SHORT_NAME.$BASE_DOMAIN." >> "$REV_ZONE_FILE" increment_serial "$REV_ZONE_FILE"# 追加记录后递增 serial fi
# 在从服务器上追加主从同步配置 ssh -T root@$SLAVE_IP <<EOF # 检查从服务器配置文件是否已存在主从同步区域 if ! grep -q "zone \"$BASE_DOMAIN\" IN" "$ZONE_CONFIG"; then cat >> "$ZONE_CONFIG" <<EOT zone "$BASE_DOMAIN" IN { type slave; file "slaves/$BASE_DOMAIN.zone"; masters { $MASTER_IP; }; # 主服务器的IP }; EOT fi # 检查反向解析的从服务器配置 if ! grep -q "zone \"$REV_IP.in-addr.arpa\" IN" "$ZONE_CONFIG"; then cat >> "$ZONE_CONFIG" <<EOT zone "$REV_IP.in-addr.arpa" IN { type slave; file "slaves/$REV_IP.loopback"; masters { $MASTER_IP; }; # 主服务器的IP }; EOT fi EOF
# 重新加载主服务器的 Bind 配置 systemctl restart named echo"✅ DNS 记录已添加并重新加载 Bind 服务"