当前位置:首页 » 《随便一记》 » 正文

搭建DNS服务器(Ubuntu)

16 人参与  2024年09月19日 12:40  分类 : 《随便一记》  评论

点击全文阅读


必备功能:至少包含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/hostssudo nano /etc/hosts
在每台服务器上添加以下配置:

192.168.202.128 ns1.hwdomain.io ns1192.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.arpa    type 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.128ns2.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.100mail.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地址映射到对应的FQDN128   IN      PTR     ns1.hwdomain.io.    ; 192.168.202.128129   IN      PTR     ns1.hwdomain.io.    ; 192.168.202.129100   IN      PTR     ns1.hwdomain.io.    ; 192.168.202.100120   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 serversns1.hwdomain.io.          IN      A       192.168.202.128ns2.hwdomain.io.          IN      A       192.168.202.129; Mail handler or MX record for the domain hwdomain.iohwdomain.io.    IN     MX   10   mail.hwdomain.io.; A records for domain nameshwdomain.io.  IN A 192.168.202.10mail.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 recordsIN      NS      ns1.hwdomain.io.IN      NS      ns2.hwdomain.io.; PTR Records128   IN      PTR     ns1.hwdomain.io.    ; 192.168.202.128129   IN      PTR     ns2.hwdomain.io.    ; 192.168.202.12910  IN      PTR     hwdomain.io.        ; 192.168.202.1020  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.io     type 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
在这里插入图片描述

使用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
在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/161670.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1