Ubuntu22.04搭建DNS服务


Ubuntu22.04搭建DNS服务

准备工作

# 切换root用户,以下所有操作使用root用户执行
su - 

# 关闭防火墙,linux服务默认开启防火墙,bind使用的端口为53,协议为TCP/UDP
# 查看ufw防火墙是否已启动  
ufw status    
# 关闭ufw
ufw disable   

# 配置好静态ip
vim /etc/netplan/00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens33:
      addresses:
      - 192.168.8.30/24
      nameservers:
        addresses:
        - 8.8.8.8
        search: []
      routes:
      - to: default
        via: 192.168.8.2
  version: 2


# 重启网卡
netplan apply

# 配置好apt源
cp -a /etc/apt/sources.list /etc/apt/sources.list.bak

# 将原始apt源修改为华为源
sed -i "s@http://.*archive.ubuntu.com@http://mirrors.huaweicloud.com@g" /etc/apt/sources.list
sed -i "s@http://.*security.ubuntu.com@http://mirrors.huaweicloud.com@g" /etc/apt/sources.list

apt update

安装bind9

apt -y install bind9

修改配置文件

# 安装后的配置文件目录:/etc/bind
cd /etc/bind/

# 修改主配置文件
vim named.conf.local

# 配置正向解析
zone "zuolaoshi.cn" {
        type master;
        file "/etc/bind/db.zuolaoshi.cn";
};


# 配置反向解析
zone "8.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/192.zone";
};
## 配置正向解析
cp db.local  db.zuolaoshi.cn

vim db.zuolaoshi.cn

;
; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA  zuolaoshi.cn. root.zuolaoshi.cn. (
             20240802   ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@       IN      NS  ns1
@       IN      A        192.168.8.30
ns1     IN     A       192.168.8.30
www     IN     A       192.168.8.30
  1. $TTL 604800:定义了区域数据的 Time To Live(TTL)为 604800 秒,即 172 小时。这意味着区域数据在缓存中的生存时间为 172 小时,过了这个时间后,缓存的数据将被清除。

  2. $ORIGIN ckx.cn.:指定域名空间的根区域为 “zuolaoshi.cn”。

  3. @ IN SOA zuolaoshi.cn. root.zuolaoshi.cn. ( 2006080401 ; Serial ) ; Serial:定义了区域配置的序列号(Serial),表示每次对该文件进行修改时,序列号应递增。这里设置的序列号为 2006080401。

  4. 604800 ; Refresh:刷新间隔时间为 604800 秒,即 172 小时。这意味着区域数据在每次更新后,刷新时间为 172 小时。

  5. 86400 ; Retry:定义了区域数据的重试时间为 86400 秒,即 24 小时。当区域数据更新失败时,重试时间为 24 小时。

  6. 2419200 ; Expire:定义了区域数据的过期时间为 2419200 秒,即 688 小时。过期时间表示区域数据在缓存中的最长生存时间。

  7. 604800 ) ; Negative Cache TTL:负缓存时间(Negative Cache TTL)为 604800 秒,即 172 小时。这意味着在查询失败时,负缓存时间用于防止错误的信息在缓存中传播。

  8. @ IN NS ns1:定义了一个名为 “ns1” 的域名服务器,负责解析 “zuolaoshi.cn” 域名下的所有域名。

  9. @ IN A 192.168.8.30:指定域名 “zuolaoshi.cn” 的 IP 地址为 192.168.8.30。

  10. www IN A 192.168.8.30:将 “www” 域名解析为 IP 地址 192.168.8.30。

## 反向解析
cp db.127 192.zone
vim 192.zone

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@   IN  SOA zuolaoshi.cn. root.zuolaoshi.cn. (
             20240802   ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@        IN       NS    ns1.zuolaoshi.cn.
30       IN      PTR    ns1.zuolaoshi.cn.
30       IN      PTR    www.zuolaoshi.cn.

注意:域名后面一定要加一个“.”

几个参数的解释:

  1. @ IN NS ns1.zuolaoshi.cn. :定义域名解析服务器的名称,一定要对
  2. $TTL 604800 缓存时间
  3. 30 IN PTR ns1.zuolaoshi.cn. 将 IP 地址 30 解析为域名ns1.zuolaoshi.cn.
# 在文件中加入DNS解析服务器
vim /etc/bind/named.conf.options
# 解开//注释,设置转发DNS服务
forwarders
{
   8.8.8.8;
};

dnssec-validation auto;
listen-on-v6 { any; };
# 下方添加权限设置
auth-nxdomain no;
listen-on port 53 { 192.168.8.30; };
allow-transfer { any; };
allow-query { any; };
# 重启验证
systemctl restart bind9
systemctl reload bind9
# 设置bind9开机启动
systemctl enable bind9
# 安装apache2用于验证
apt install apache2
echo "zuolaoshi 666" > /var/www/html/index.html
systemctl restart apache2

修改客户端系统的DNS配置

image-20240802183653762

验证效果

使用如下命令进行测试:
nslookup www.zuolaoshi.cn
dig www.zuolaoshi.cn

image-20240802183934503

image-20240802184015512

使用浏览器测试

image-20240802183550137