当前位置: 首页 > news >正文

如何在linux中部署dns服务 主备dns (详细全过程)

环境centos 7.9          

主DNS:192.168.60.131

备DNS:192.168.60.134  

我以 chenxingyu0.com  指向 192.168.60.200为例 

首先是主dns  

#!/bin/bash

# 检查是否为 root 用户
if [ "$(id -u)" != "0" ]; then
    echo "请使用 root 用户运行此脚本。"
    exit 1
fi

# 安装 bind 软件包
yum install -y bind bind-utils

# 备份 named.conf 文件
cp /etc/named.conf /etc/named.conf.bak

# 配置主 DNS 的 named.conf
cat << EOF > /etc/named.conf
options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { ::1; };
    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";
    secroots-file   "/var/named/data/named.secroots";
    recursing-file  "/var/named/data/named.recursing";
    allow-query     { any; };
    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;

    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";
};

zone "chenxingyu0.com" IN {
    type master;
    file "chenxingyu0.com.zone";
    allow-update { none; };
    allow-transfer { 192.168.60.134; };
    also-notify { 192.168.60.134; };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
EOF

# 创建并配置 zone 文件
cat << EOF > /var/named/chenxingyu0.com.zone
\$TTL 86400
@       IN      SOA     ns1.chenxingyu0.com. admin.chenxingyu0.com. (
                        2025032502      ; Serial,可根据实际情况递增
                        3600            ; Refresh
                        1800            ; Retry
                        604800          ; Expire
                        86400           ; Minimum TTL
                        )
@       IN      NS      ns1.chenxingyu0.com.
ns1     IN      A       192.168.60.200
chenxingyu0.com. IN     A       192.168.60.200
EOF

# 设置文件权限
chown named:named /var/named/chenxingyu0.com.zone
chmod 640 /var/named/chenxingyu0.com.zone

# 配置防火墙
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload

# 配置 SELinux
setsebool -P named_write_master_zones 1
setsebool -P named_read_master_zones 1

# 启动并设置开机自启
systemctl start named
systemctl enable named

# 检查服务状态
systemctl status named

echo "主 DNS 服务已部署,解析记录 192.168.60.200 -> chenxingyu0.com 已添加。"    

 现在是备dns 

#!/bin/bash

# 检查是否为 root 用户
if [ "$(id -u)" != "0" ]; then
    echo "请使用 root 用户运行此脚本。"
    exit 1
fi

# 安装 bind 软件包
yum install -y bind bind-utils

# 备份 named.conf 文件
cp /etc/named.conf /etc/named.conf.bak

# 配置备 DNS 的 named.conf
cat << EOF > /etc/named.conf
options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { ::1; };
    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";
    secroots-file   "/var/named/data/named.secroots";
    recursing-file  "/var/named/data/named.recursing";
    allow-query     { any; };
    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;

    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";
};

zone "chenxingyu0.com" IN {
    type slave;
    file "slaves/chenxingyu0.com.zone";
    masters { 192.168.60.131; };
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
EOF

# 创建 slaves 目录
mkdir -p /var/named/slaves
chown named:named /var/named/slaves

# 配置防火墙
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload

# 配置 SELinux
setsebool -P named_write_master_zones 1
setsebool -P named_read_master_zones 1

# 启动并设置开机自启
systemctl start named
systemctl enable named

# 检查服务状态
systemctl status named

echo "备 DNS 服务已部署,会从主 DNS 同步解析记录。"    

最后的验证

执行命令   nslookup  xxx.com  192.168.xx.xx

相关文章:

  • vue中使用threejs的加载纹理没有效果
  • 安卓-关于setOnTouchListener和setOnClickListener冲突的问题
  • 2025_0327_生活记录
  • vue配置.eslintrc、.prettierrc详解
  • 如何让 AI 搜索为您的企业可见性战略助力飞升!
  • 外贸独立站相关知识扫盲
  • 网路传输层UDP/TCP
  • 【YOLOE: Real-Time Seeing Anything】predict_visual_prompt.py视觉推理代码分析(检测版本)
  • 【漏洞修复】为了修复ARM64 Android10系统的第三方库漏洞,将ARM64 Android16的系统库直接拷贝到Android10系统如何?
  • 【HTML】验证与调试工具
  • webpack配置详解+项目实战
  • Mathtype无法插入到Word中
  • 详解Spark executor
  • (C语言)习题练习 (指针与二维数组)的长度计算
  • 基于yolov11的铁路轨道铁轨缺陷检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • RTMP推流服务器nginx在linux上的编译部署
  • RUBY报告系统
  • python将整个txt文件写入excel的一个单元格?
  • VMware Ubuntu 网络配置全攻略:从断网到畅通无阻
  • centos7 升级MariaDB 到 10.5 或更高版本
  • 炫酷的html5网站/网络营销sem培训
  • 长春百度网站快速排名/凡科建站快车
  • 如何评价一个网站做的好不好/seo优化是指
  • 网站建设 文章/线下推广方式
  • 廊坊做网站电话/热门推广软件
  • 如何检查网站是否做cdn加速/媒体软文发稿