0


Ubuntu桌面系统搭建内网DNS解析服务保姆级教程

一、搭建说明

DNS服务器地址:129.168.1.10 主机名:admin

域名地址: https://mes.ceshiserver.com 129.168.2.20

PC端地址:129.168.3.30

二、Ubuntu上搭建DNS解析服务

1、更新系统软件包列表

sudoapt update

2、安装BIND 9软件包

sudoaptinstall bind9 bind9utils bind9-doc

BIND 9 的配置文件在安装之后配置文件名字:named.conf ,文件存储的位置为:/etc/bind,其中文件named.conf引用了三个文件: named.conf.options、named.conf.local、named.conf.default-zone

3、主配置文件设置全局选项–named.conf.options

sudovim /etc/bind/named.conf.options

按i可编辑,按:wq退出编辑保存。

options 的参数设置会影响整个 BIND 9 DNS环境的配置,具体各部分常用到的配置参数如下:

1)listen-on: 用于配置监听的端口以及IPv4地址,默认的监听端口为:53;

2)listen-on-v6:用于监听 IPv6 地址以及端口;

3)directory: 用于指定读取DNS数据文件的文件夹,默认的文件夹的路径为:/var/cache/bind;

4)dump-file:选项用来设置域名缓存数据库文件的位置,可以自己定义。默认的存储文件为:named_dump.db;

5)statistics-file:选项用来设置状态统计文件的位置,可以自己定义;

6)memstatistics-file :选项用来设置服务器输出的内存使用统计信息。默认保存在 /var/named/data 目录下,文件名为 named.memstats;

7)allow-query:选项用来设置允许DNS查询的客户端地址,默认值为localhost, 可以设置为某个网段、任意地址、具体的某台主机三种情况。例如,要修改为任意地址,就在括号内的加入 any,也可以引用之前创建的 acl 内的所有地址;

8)recursion:用于设置递归查询,一般客户机和服务器之间属于递归查询,即当客户机向DNS服务器发出查询请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机。此选项有yes和no两个值。这个选项用于设置 Failover 非常有用;

9)dnssec-enable: 选项用来设置是否启用DNSSEC支持,DNSSEC可以用来验证DNS数据的有效性,该选项有yes和no两个值,默认值为yes;

10)dnssec-validation:选项用来设置是否启用DNSSEC确认,默认值为yes,可以选择 auto;

11)bindkeys-file : 用来设置内置信任的密钥文件,其默认值为 /etc/named/iscdlv.key;

12)managed-keys-directory: 选项用于指定目录中的文件存储位置,跟踪管理 DNSSEC 密钥, 这部分的内容在后边会有介绍;

13)forwarders:DNS转发器。用于设定该DNS解析服务器无法进行当前域名解析的情况下,进行转发解析的DNS地址,其中 8.8.8.8 和 8.8.4.4 是谷歌的免费DNS服务器的网络地址;233.5.5.5 和 233.6.6.6 是阿里云的免费DNS地址。当设置了 forwarder 的转发器之后,所有的非本域的和在缓存中无法查找到的域名查询都转发都设置的DNS转发器,由DNS转发器 完成转发操作。因此这台转发器的缓存中就记录了丰富的域名信息。因此如果遇到非本域的查询,转发器的缓存就可以做到查询,从而减少了向外部的查询流量;

14)forward: 选择默认的IP地址即可;

15)rrset-order:在 BIND 9 提供的负载均衡策略建立在一个名称(域名 - Name)使用多个资源记录 ( Records ) 的情况下,其实现的轮询机制并不是传统的负载均衡服务器实现的轮询机制 - 即追踪和记录每一次应答的资源顺序;

BIND 9 实现了一个类似 List 的数据结构,将所有的资源记录填入到 一个顺序表中,这个填入的次序随机,或者根据设定的参数随机;
格式:[class class_name] [type type_name] [name “domain_name”] order ordering
如果参数没有被赋值,那么默认的赋值为: class: ANY type: ANY Name: *
参数:
—fixed : 根据 zone 文件定义资源记录的顺序按照顺序逐个进行解析;
—random: 根据 zone 文件资源记录随机返回解析记录;
—cyclic: 创建一个循环,循环输出资源记录;
—none: 完全随机的资源返回形式;

options {
    directory "/var/cache/bind";

    // If there is a firewall between you and nameservers you want
    // to talk to, you may need to fix the firewall to allow multiple
    // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

    // If your ISP provided one or more IP addresses for stable 
    // nameservers, you probably want to use them as forwarders.  
    // Uncomment the following block, and insert the addresses replacing 
    // the all-0's placeholder.
        recursion yes;#启用递归查询
        allow-recursion { any;};#允许来自任何源的递归查询
        listen-on { any;};#监听所有网络接口
    forwarders {223.5.5.5;#阿里云的免费DNS地址223.6.6.6;#阿里云的免费DNS地址114.114.114.114;#全国通用DNS地址};
    //========================================================================
    // If BIND logs error messages about the root key being expired,
    // you will need to update your keys.  See https://www.isc.org/bind-keys
    //========================================================================
       dnssec-validation auto;#DNSSEC确认开关为自动模式
       auth-nxdomain no;#符合RFC1035};

4、引导配置文件 - named.conf.local

sudovim /etc/bind/named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

//正向解析区域,假设你的域名是:mes.ceshiserver.com
zone "ceshiserver.com"{type master;file"/etc/bind/db.ceshiserver.com";};
//反向解析区域,代表解析129.168.2段的地址
zone "129.168.2.in-addr.arpa"{type master;file"/etc/bind/db.129.168.2";};

5、创建正向解析区域文件

sudocp db.0 db.ceshiserver.com    #复制正向解析配置sudovim /etc/bind/db.ceshiserver.com

添加如下内容

;; BIND data filefor ceshiserver.com
;$TTL604800
@       IN      SOA     ns1.ceshiserver.com. admin.ceshiserver.com. (#admin为DNS服务器主机名2023101001; Serial
                           604800; Refresh
                            86400; Retry
                          2419200; Expire
                         604800); Negative Cache TTL
;
@       IN      NS      ns1.ceshiserver.com.
ns1     IN      A       129.168.1.10
mes     IN      A       129.168.2.20

6、创建反向解析区域文件

sudocp db.127 db.129.168.2
sudovim /etc/bind/db.129.168.2

添加如下内容

;; BIND reverse data filefor129.168.2.0/24
;$TTL604800
@       IN      SOA     ns1.ceshiserver.com. admin.ceshiserver.com. (2023101001; Serial
                           604800; Refresh
                            86400; Retry
                          2419200; Expire
                         604800); Negative Cache TTL
;
@       IN      NS      ns1.ceshiserver.com.
10      IN      PTR     ns1.ceshiserver.com.
20      IN      PTR     mes.ceshiserver.com.

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

$TTL 604800:定义了区域数据的 Time To Live(TTL)为 604800 秒,即 172 小时。这意味着区域数据在缓存中的生存时间为 172 小时,过了这个时间后,缓存的数据将被清除。

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

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

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

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

A :Address地址, IPv4

AAAA:Address地址 IPv6

NS :Name Server域名服务器,用于确定哪些服务器(注意不是单个服务器)为一个局域网传递DNS信息以及确定域名由哪个服务器进行解析。一般NS配置在 BIND9 中的 db 文件中进行配置,在 SOA 配置之后。NS记录 和 SOA记录是任何一个DNS区域都不能或缺的两条记录。在 BIND 的配置中,可以在 Zone 文件中指定多个 Name Server,一般来说 Name Server 需要搭配 SOA 进行配置

SOA:Start of Authority 起始授权机构,表示此域名的权威解析服务器地址,当要查询的域名在所有递归解析服务器没有域名的解析缓存时,会回源到请求此域名的SOA 记录,也叫做权威解析记录。

MX:Mail Exchanger 邮件交换

CNAME:Canonical Name规范名

PTR:Pointer 指针,即反向DNS系统,用于查询IP地址时给出相关的域名,即查询IP地址的PTR记录给出该IP指向的域名,在 Zone 文件中被设置;

TXT:Text,网络名称系统的记录,可讲文字信息提供给网络意外的来源,其中有一个非常重要的功能就是当外部查询需要显示BIND的相关版本号时,可以指定 TXT查询,这个配置是默认的;谷歌会使用 TXT 记录来验证网站的拥有权以及确保电子邮件的安全;

SRV:Service记录,域名中用于指定服务器并提供服务的位置:主机好、端口号;一般在 Zone File 中被定义;

三、检查配置文件

1、在重启BIND服务之前,检查配置文件是否有错误。

sudo named-checkconf
sudo named-checkzone ceshiserver.com /etc/bind/db.ceshiserver.com
sudo named-checkzone 2.168.129.in-addr.arpa /etc/bind/db.129.168.2

2、设置防火墙(如果适用)

确保你的防火墙允许DNS流量(端口53)。

sudo ufw allow 53sudo ufw reload

四、 配置客户端

确保Windows客户端的DNS服务器设置为你的Ubuntu服务器的IP地址(129.168.1.10):

  1. 打开控制面板,进入“网络和共享中心”。
  2. 点击当前网络连接,选择“属性”。
  3. 选择“Internet 协议版本 4 (TCP/IPv4)”,然后点击“属性”。
  4. 选择“使用下面的DNS服务器地址”,输入你的Ubuntu服务器的IP地址(129.168.1.10)。

五、测试DNS解析

在Windows客户端上打开命令提示符(cmd)并测试DNS解析:

测试正向解析

nslookup mes.ceshiserver.com

测试反向解析

nslookup129.168.2.20

六、检查Windows上的DNS缓存

有时Windows会缓存DNS解析结果,导致无法解析最新的DNS记录。你可以清除DNS缓存:

ipconfig /flushdns

七、检查网络连接

确保Windows客户端能够访问Ubuntu服务器的IP地址:

ping129.168.1.10

八、 检查BIND日志文件

查看BIND日志文件以确认是否有任何错误信息:

sudotail -f /var/log/syslog

九、DNS客户端配置以及问题解决方法

通过上述步骤,你应该能够在Ubuntu 22.04上成功配置BIND DNS服务器,并在Windows 客户端上进行域名解析。如果问题依然存在,请详细描述你遇到的具体问题,包括错误信息和你已经进行的步骤,以便进一步诊断。

如果你在Windows客户端上将DNS服务器地址改为Ubuntu主机后无法ping通外网,可能是由于以下几个原因:

  1. DNS服务器配置错误:BIND服务器配置可能有问题,导致无法解析外部域名。
  2. 防火墙设置:防火墙可能阻止了DNS流量。
  3. 网络连接问题:可能存在网络连接问题,导致无法正常访问外部网络。

十、常用的命令

1.启动

systemctl start bind9

2.查看状态

systemctl status bind9

3.停止服务

systemctl stop bind9.service

4.重启服务

systemctl restart bind9.service

5.重新加载配置

systemctl reload bind9.servic

6.服务状态查询

systemctl status bind9.service
标签: ubuntu linux 服务器

本文转载自: https://blog.csdn.net/QAZXSCDE/article/details/143245594
版权归原作者 乌托network 所有, 如有侵权,请联系我们删除。

“Ubuntu桌面系统搭建内网DNS解析服务保姆级教程”的评论:

还没有评论