Linux搭建DNS服务器

目录

一、Ubuntu系统

1.安装 BIND 软件包

 2.配置主配置文件

3.创建正向区域文件

4.创建区域数据文件

5.检查配置语法并重启服务 

二、Centos系统 


一、Ubuntu系统

1.安装 BIND 软件包

sudo apt update
sudo apt install bind9 bind9utils bind9-doc -y

 2.配置主配置文件

编辑/etc/bind/named.conf.options,添加上游 DNS 服务器

options {
    directory "/var/cache/bind";
    
    // 添加百度和阿里 DNS作为上游服务器
    forwarders {
        223.5.5.5;
        180.76.76.76;
    };
    
    // 允许查询的客户端
    allow-query { any; };
    
    recursion yes;
};

3.创建正向区域文件

编辑/etc/bind/named.conf.local,添加区域配置: 

zone "yang.com" {
    type master;
    file "/etc/bind/zones/yang.com";
};

4.创建区域数据文件

sudo mkdir -p /etc/bind/zones
sudo cp /etc/bind/db.local /etc/bind/zones/yang.com

编辑yang.com文件

$TTL    604800
@       IN      SOA     ns1.yang.com. admin.yang.com. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.yang.com.
@       IN      A       192.168.10.161
ns1     IN      A       192.168.10.161
esxi1   IN      A       192.168.10.220
esxi2   IN      A       192.168.10.200

 区域文件基本结构
1.$TTL 指令 - 设置默认的 TTL 值 (Time-To-Live)

        $TTL定义了区域中所有资源记录的默认 TTL 值(以秒为单位)
        604800秒等于 7 天,表示缓存服务器可以保留此记录的最长时间


2.SOA 记录 - 起始授权机构记录,定义区域的基本信息

        @是区域名yang.com的简写
        IN表示 Internet 类记录
        SOA表示起始授权机构记录
        ns1.yang.com.是主 DNS 服务器的 FQDN(注意结尾的点)
        admin.yang.com.是区域管理员的邮箱地址(点表示 @符号)
        序列号 (Serial):区域数据版本号,更新区域时需递增
        刷新时间 (Refresh):从属 DNS 服务器多久查询一次主服务器更新
        重试时间 (Retry):刷新失败后多久重试
        过期时间 (Expire):如果主服务器不可达,从属服务器保留数据的时间
        负缓存 TTL (Negative Cache TTL):未找到记录的缓存时间


3.NS 记录 - 名称服务器记录,指定负责该区域的 DNS 服务器

        指定负责该区域的权威 DNS 服务器
        ns1.yang.com.必须在区域内有对应的 A 记录


4.A/AAAA 记录 - 将域名映射到 IPv4/IPv6 地址

        @表示区域根域名yang.com
        ns1扩展为ns1.yang.com
        esxi1扩展为esxi1.yang.com
        esxi2扩展为esxi2.yang.com
        每个 A 记录将域名映射到对应的 IPv4 地址

其他常用记录类型
CNAME 记录(别名记录)
ftp     IN      CNAME   www.example.com.
将ftp.yang.com指向www.yang.com的同一 IP 地址

MX 记录(邮件交换记录)
@       IN      MX      10 mail.example.com.
指定接收example.com邮件的服务器
数字10表示优先级,值越小优先级越高

泛域名解析记录
*       IN      A       192.168.1.200     ; 让所有未单独配置的子域名都指向此IP

区域文件编辑注意事项
(1)FQDN 结尾的点:所有完全限定域名必须以点 (.) 结尾
(2)序列号管理:每次修改区域文件后,必须递增 SOA 记录中的序列号
(3)注释使用:分号 (;) 后的内容为注释,可以用来解释配置
(4)语法检查:修改后使用named-checkzone命令检查语法
(5)TTL 调整:生产环境中建议从较短的 TTL 开始,确认无误后再增加

5.检查配置语法并重启服务 

sudo named-checkconf
sudo named-checkzone yang.com /etc/bind/zones/yang.com
sudo systemctl restart bind9
sudo systemctl enable bind9

二、Centos系统 

#!/bin/bash

#域名
DOMAIN=yang.org

#第一条A记录,后续如果需要再继续添加,编辑区域数据文件/var/named/$DOMAIN.zone
HOST=www
HOST_IP=10.0.0.100


CPUS=`lscpu |awk '/^CPU\(s\)/{print $2}'`
. /etc/os-release

color () {
    RES_COL=60
    MOVE_TO_COL="echo -en \\033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \\033[1;32m"
    SETCOLOR_FAILURE="echo -en \\033[1;31m"
    SETCOLOR_WARNING="echo -en \\033[1;33m"
    SETCOLOR_NORMAL="echo -en \E[0m"
    echo -n "$1" && $MOVE_TO_COL
    echo -n "["
    if [ $2 = "success" -o $2 = "0" ] ;then
        ${SETCOLOR_SUCCESS}
        echo -n $"  OK  "    
    elif [ $2 = "failure" -o $2 = "1"  ] ;then 
        ${SETCOLOR_FAILURE}
        echo -n $"FAILED"
    else
        ${SETCOLOR_WARNING}
        echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo 
}


install_dns () {
    if [ $ID = 'centos' -o $ID = 'rocky' ];then
	    yum install -y  bind bind-utils
	elif [ $ID = 'ubuntu' ];then
        color "不支持Ubuntu操作系统,退出!" 1
        exit
	    #apt update
	    #apt install -y  bind9 bind9-utils
	else
	    color "不支持此操作系统,退出!" 1
	    exit
	fi
    
}

config_dns () {
    sed -i -e '/listen-on/s/127.0.0.1/any/' -e '/allow-query/s/localhost/any/' /etc/named.conf
    cat >> 	/etc/named.rfc1912.zones <<EOF
zone "$DOMAIN" IN {
    type master;
    file  "$DOMAIN.zone";
};
EOF
   cat > /var/named/$DOMAIN.zone <<EOF
\$TTL 1D
@	IN SOA	master admin (
					1	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
	        NS	 master
master      A    `hostname -I`         
$HOST     	A    $HOST_IP
EOF
   chmod 640 /var/named/$DOMAIN.zone
   chgrp named /var/named/$DOMAIN.zone
}

start_service () {
    systemctl enable --now named
	systemctl is-active named.service
	if [ $? -eq 0 ] ;then 
        color "DNS 服务安装成功!" 0  
    else 
        color "DNS 服务安装失败!" 1
        exit 1
    fi   
}

install_dns
config_dns
start_service
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值