0


搭建DNS服务器(Ubuntu)

必备功能:至少包含1个master和1个slave
劫持私有zone,添加子域名解析记录
增加至少2个view
支持公网域名解析
验证
能够修改私有zone子域名解析记录,master同步slave
测试私有zone子域名和公网域名可解析
引用:https://cn.linux-console.net/?p=3443

1.1 先决条件(机器准备)

准备了第三台机器,一台用作master(192.168.202.128),一台用作slave(192.168.202.129),还有一台用作客户端client(192.168.202.130)。

1.2 设置FQDN(完全限定域名)

FQDN提供了服务器在全局互联网中的唯一名称。这确保了当其他设备或服务需要访问这台DNS服务器时,可以通过一个明确且唯一的地址找到它。
在这里插入图片描述
1.2.1 在每个服务器上设置FQDN

在ns1服务器上执行命令:

sudo hostnamectl set-hostname ns1.hwdomain.io

在ns2服务器上执行命令:

sudo hostnamectl set-hostname ns2.hwdomain.io

1.2.2 在服务器上添加配置
使用以下命令编辑文件

/etc/hosts

sudo nano /etc/hosts

在每台服务器上添加以下配置:

192.168.202.128 ns1.hwdomain.io ns1
192.168.202.129 ns2.hwdomain.io ns2

1.2.3 验证每台服务器上的FQDN
使用命令:

sudo hostname -f

在这里插入图片描述在这里插入图片描述
在ns1服务器上,获得的FQDN为

ns1.hwdomain.io

在ns2服务器上,获得的FQDN为

ns2.hwdomain.io

1.3 安装BIND包(ns1和ns2都安装)

1.3.1 安装
运行apt命令更新和刷新Ubuntu存储库:

sudo apt update

安装bind9:

sudo apt install bind9 bind9utils bind9-doc dnsutils

1.3.2 编辑配置
使用以下命令编辑配置 /etc/default/named:

sudo nano /etc/default/named

“OPTIONS = ”行允许BIND服务运行时设置特定选项,使用IPv4运行绑定:

OPTIONS="-u bind -4"

在这里插入图片描述
1.3.3 重新启动绑定服务named
重新启动:

sudo systemctl restart named

检查BIND服务的状态:

sudo systemctl status named

在这里插入图片描述

1.4 设置BIND主机(Master)

将ns1服务器设置为BIND DNS 服务器的主服务器。
1.4.1 编辑配置文件/etc/bind/named.conf.options
使用命令:

sudo nano /etc/bind/named.conf.options

在使用"options{…};"行之前,将创建一个名为"受信任"的ACL(访问控制列表),其中包括现环境中所有受信任的 IP 地址和网络。此外,添加本地服务器 IP 地址“ns1”和辅助 DNS 服务器“ns2”的 IP 地址。

acl "trusted"{
        192.168.202.128;# ns1 - or you can use localhost for ns1
        192.168.202.129;# ns2
        192.168.202.0/24;# trusted networks};

对"options{…};"部分:

  • 通过注释选项“listen-on-v6”禁用了对 IPv6 的支持
  • 启用并允许来自“受信任”ACL 的递归
  • 运行 BIND 服务在特定的ns1的 IP 地址(192.168.202.128)
  • 正在禁用默认区域传输并将 BIND DNS 服务器的特定转发器定义为 Google 公共 DNS 8.8.8.8 和 Cloudflare的1.1.1.1 options {#开始一个选项块,其中包含了全局配置选项,这些选项将影响整个BIND服务器的行为
        directory "/var/cache/bind";#设置BIND服务器的默认工作目录,用于存储运行时文件,如缓存文件和日志文件//listen-on-v6 { any;};# BIND不会监听IPv6的DNS查询

        recursion yes;# 启用了递归查询
        allow-recursion { trusted;};# 只允许来自“受信任”的地址进行递归查询
        listen-on { 192.168.202.128;};# ns1 IP address
        allow-transfer { none;};# 禁止所有区域传输

        forwarders {#配置两个公共DNS服务器
                8.8.8.8;
                1.1.1.1;};};

1.4.2 检查和验证配置文件/etc/bind/named.conf.options
使用以下命令来检查:

sudo named-checkconf /etc/bind/named.conf.options

在这里插入图片描述
没有输出信息,证明以上配置时正确的。

1.5 设置区域

1.5.1编辑配置文件 /etc/bind/named.local
使用命令:

sudo nano /etc/bind/named.conf.local
  • 设置域名正向解析区域:解析hwdomain.io的域名到IP地址的配置
zone "hwdomain.io"{#指定DNS区域的域名是hwdomain.io。type master;#设置了该区域的类型为master,意味着这个BIND服务器是此区域的权威主服务器,负责维护该区域的所有DNS记录。
    file "/etc/bind/zones/db.hwdomain.io";# 指定了包含该区域DNS记录的文件路径
    allow-transfer { 192.168.202.129;};# 允许从IP地址192.168.202.129进行区域传输,这是辅助DNS服务器的地址,它需要从主服务器上复制区域数据};
  • 设置反向解析区域:解析IP地址到对应的域名的配置
zone "202.168.192.in-addr.arpa"{#反向解析区域,DNS区域的域名为202.168.192.in-addr.arpatype master;#设置了该区域的类型为master,表示这个BIND服务器是此反向解析区域的权威主服务器。
    file "/etc/bind/zones/db.192.168.202";# 指定了包含该反向解析区域DNS记录的文件路径
    allow-transfer { 192.168.202.129;};# 允许从IP地址192.168.202.129进行区域传输,与上面的正向解析区域配置相同。这通常是为了设置一个辅助DNS服务器,以便于备份和负载均衡。};

1.5.2 创建新目录
运行命令创建一个新目录/etc/bind/zones:

sudo mkdir -p /etc/bind/zones/

,该目录将用于存储区域配置文件。
1.5.3 转发区域配置
使用命令复制默认转发区域配置/etc/bind/zones/db.hwdomain.io:

sudo cp /etc/bind/db.local /etc/bind/zones/db.hwdomain.io

使用命令编辑文件:

sudo nano /etc/bind/zones/db.hwdomain.io
;; BIND data file for local loopback interface
;#这个文件是为本地回环接口(通常是127.0.0.1)配置的BIND数据文件$TTL    604800  #设置了默认的TTL(生存时间),即DNS记录被客户端缓存的时间(以秒为单位)
@       IN      SOA     localhost. root.localhost.(#SOA记录
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 ); Negative Cache TTL
;; NS records for name servers  #NS记录,指定了负责处理该区域查询的服务器
    IN      NS      ns1.hwdomain.io.
    IN      NS      ns2.hwdomain.io.; A records for name servers  #定义了两个A记录,将DNS服务器的FQDN映射到对应的IP地址
ns1.hwdomain.io.          IN      A       192.168.202.128
ns2.hwdomain.io.          IN      A       192.168.202.129

; Mail handler or MX record for the domain hwdomain.io#定义了一个MX(邮件交换)记录,指定了处理该域电子邮件的服务器地址
hwdomain.io.    IN     MX   10   mail.hwdomain.io.; A records for domain names#两行定义了A记录,将域名映射到对应的IP地址
hwdomain.io.            IN      A      192.168.202.100
mail.hwdomain.io.       IN      A      192.168.202.120

1.5.4 反向区域配置
使用命令将默认反向区域配置文件复制到 /etc/bind/zones/db.192.168.202:

sudo cp/etc/bind/db.127 /etc/bind/zones/db.192.168.202

使用命令编辑文件:

sudo nano /etc/bind/zones/db.192.168.202
;; BIND reverse data file for local loopback interface
;$TTL    604800
@       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io.(
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 ); Negative Cache TTL
;; name servers - NS records  #NS记录,指定了负责处理该区域查询的服务器
      IN      NS      ns1.hwdomain.io.
      IN      NS      ns2.hwdomain.io.; PTR Records  #PTR记录,将IP地址映射到对应的FQDN
128   IN      PTR     ns1.hwdomain.io.; 192.168.202.128
129   IN      PTR     ns1.hwdomain.io.; 192.168.202.129
100   IN      PTR     ns1.hwdomain.io.; 192.168.202.100
120   IN      PTR     mail.hwdomain.io.; 192.168.202.120

1.5.5 添加view

  • 编辑配置文件 /etc/bind/named.local:sudo nano /etc/bind/named.conf.local 将zone区域全部放在view视图中。
view "internal"{
       match-clients { 192.168.202.128;192.168.202.129;192.168.202.130;};
       zone "hwdomain.io"{type master;
             file "/etc/bind/zones/db.hwdomain.io";
             allow-transfer{192.168.202.129;};};
     zone "202.168.192.in-addr.arpa"{type master;
         file "/etc/bind/zones/db.192.168.202";# subnet 192.168.202.0/24;
         allow-transfer { 192.168.202.129;};# ns2 private IP address - secondary DNS};};

view "external"{
    match-clients { any;};
    zone "hwdomain.io"{type master;
          file "/etc/bind/zones/db.hwdomain.io.external";
          allow-transfer{192.168.202.129;};};
    zone "202.168.192.in-addr.arpa"{type master;
         file "/etc/bind/zones/db.192.168.202";
         allow-transfer { 192.168.202.129;};};};
  • 编辑配置文件/etc/bind/zones/db.hwdomain.io.external
```powershell
;; BIND data file for local loopback interface
;$TTL    604800
@       IN      SOA     localhost. root.localhost.(
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 ); Negative Cache TTL

; NS records for name servers
    IN      NS      ns1.hwdomain.io.
    IN      NS      ns2.hwdomain.io.; A records for name servers
ns1.hwdomain.io.          IN      A       192.168.202.128
ns2.hwdomain.io.          IN      A       192.168.202.129

; Mail handler or MX record for the domain hwdomain.io
hwdomain.io.    IN     MX   10   mail.hwdomain.io.; A records for domain names
hwdomain.io.  IN A 192.168.202.10
mail.hwdomain.io.  IN A 192.168.202.20
  • 编辑文件/etc/bind/zones/db.192.168.202.external
;; BIND reverse data file for local loopback interface
;$TTL    604800
@       IN      SOA     localhost. root.localhost.(
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 ); Negative Cache TTL
; name servers - NS records
IN      NS      ns1.hwdomain.io.
IN      NS      ns2.hwdomain.io.; PTR Records
128   IN      PTR     ns1.hwdomain.io.; 192.168.202.128
129   IN      PTR     ns2.hwdomain.io.; 192.168.202.129
10  IN      PTR     hwdomain.io.; 192.168.202.10
20  IN      PTR     mail.hwdomain.io.; 192.168.202.20
  • 编辑文件/etc/bind/named.conf.default-zones: 正在使用视图,BIND的默认区域配置可能不再需要,注释掉named.conf.default-zones文件中的默认配置。

1.5.6 检查配置

  • 使用以下命令来检查BIND配置:sudo named-checkconf在这里插入图片描述 没有收到任何错误消息
  • 使用命令检查正向区域配置文件:sudo named-checkzone hwdomain.io /etc/bind/zones/db.hwdomain.io在这里插入图片描述
  • 使用命令检查反向区域配置文件:sudo named-checkzone 202.168.192.in-addr.arpa /etc/bind/zones/db.192.168.202在这里插入图片描述
  • 使用命令重新启动BIND服务:sudo systemctl restart named在这里插入图片描述

1.6 设置BIND从站

1.6.1 编辑配置文件/etc/bind/named.conf.options
使用命令编辑配置文件:/etc/bind/named.conf.options
创建与主服务器上相同的 ACL(访问控制列表):

acl "trusted"{
        192.168.202.128;# ns1
        192.168.202.129;# ns2 - or you can use localhost for ns2
        192.168.202.0/24;# trusted networks};

更改"options{…}"配置:
options {#开始一个选项块,其中包含了全局配置选项,这些选项将影响整个BIND服务器的行为

        directory "/var/cache/bind";#设置BIND服务器的默认工作目录,用于存储运行时文件,如缓存文件和日志文件//listen-on-v6 { any;};# BIND不会监听IPv6的DNS查询

        recursion yes;# 启用了递归查询
        allow-recursion { trusted;};# 只允许来自“受信任”的地址进行递归查询
        listen-on { 192.168.202.129;};# ns2 IP address
        allow-transfer { none;};# 禁止所有区域传输

        forwarders {#配置两个公共DNS服务器
                8.8.8.8;
                1.1.1.1;};};

1.6.2 编辑配置文件/etc/bind/named.conf.local
使用命令编辑配置文件/etc/bind/named.conf.local:

sudo nano /etc/bind/named.conf.local

,将ns2服务器设置为辅助DNS服务器

zone "hwdomain.io"{#开始了一个区域定义块,指定了DNS区域的域名是hwdomain.iotype slave;#设置了该区域的类型为slave,意味着这个BIND服务器是从服务器,它将从主DNS服务器(master DNS)同步区域数据
     file "/etc/bind/zones/db.hwdomain.io";#指定了从服务器将存储同步的区域数据文件的路径
     masters { 192.168.202.128;};# 定义了主DNS服务器的IP地址,从服务器将从这个地址同步区域数据};

zone "202.168.192.in-addr.arpa"{#开始了一个新的区域定义块,指定了DNS区域的域名是202.168.192.in-addr.arpa。这是一个反向解析区域,用于将IP地址解析为域名。type slave;
     file "/etc/bind/zones/db.192.168.202";#指定了从服务器将存储同步的反向解析区域数据文件的路径
     masters { 192.168.202.128;};# 主DNS服务器的IP地址,从服务器将从这个地址同步反向解析区域数据};

1.6.3 检查配置

  • 检查和验证BIND配置:sudo named-checkconf在这里插入图片描述
  • 在ns2服务器上重新启动 BIND 服务named以应用新的更改:sudo systemctl restart named
  • 检查和验证ns2服务器上的BIND服务named:sudo systemctl status named在这里插入图片描述

1.7 从客户端计算机验证DNS服务器

使用以下命令删除默认链接文件/etc/resolv.conf:

sudo unlink /etc/resolv.conf
  • 使用nano编辑器创建一个新文件: sudo nano /etc/resolv.conf
  • 在文件中添加如下配置:
nameserver 192.168.202.128(master)
nameserver 192.168.202.129(slave)
nameserver 8.8.8.8(Google DNS解析器)
search hwdomain.io(域名)
  • 下载bind9:sudo apt install dnsutils bind9-utils
  • 运行dig命令解析域名"hwdomain.io",可以看到看到被解析为服务器IP地址:192.168.202.100在这里插入图片描述
  • 运行dig命令解析子域名"mail.hwdomain.io",可以看到看到被解析为服务器IP地址:192.168.202.120在这里插入图片描述
  • 使用dig命令解析公网域名www.baidu.com![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e954373cdaa84fdc9893d3c5431bcfcc.png)
  • 使用nslookup命令验证域名的反向区域配置在这里插入图片描述
  • 在master端修改私有zone子域名解析记录在这里插入图片描述在这里插入图片描述
  • 重启后再停止master的服务:sudo systemctl restart named``````sudo systemctl stop named
  • 在客户端dig mail.hwdomain.io:在这里插入图片描述
  • view检查:使用192.168.202.130去dig hwdomain.io得到192.168.202.100在这里插入图片描述 使用192.168.202.131去dig hwdomain.io得到192.168.202.10在这里插入图片描述
标签: ubuntu 运维 linux

本文转载自: https://blog.csdn.net/m0_64761777/article/details/140618022
版权归原作者 椰汁甜糯米糍 所有, 如有侵权,请联系我们删除。

“搭建DNS服务器(Ubuntu)”的评论:

还没有评论