一、搭建说明
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):
- 打开控制面板,进入“网络和共享中心”。
- 点击当前网络连接,选择“属性”。
- 选择“Internet 协议版本 4 (TCP/IPv4)”,然后点击“属性”。
- 选择“使用下面的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通外网,可能是由于以下几个原因:
- DNS服务器配置错误:BIND服务器配置可能有问题,导致无法解析外部域名。
- 防火墙设置:防火墙可能阻止了DNS流量。
- 网络连接问题:可能存在网络连接问题,导致无法正常访问外部网络。
十、常用的命令
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
版权归原作者 乌托network 所有, 如有侵权,请联系我们删除。