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、更新系统软件包列表

  1. sudoapt update

2、安装BIND 9软件包

  1. 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

  1. 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: 完全随机的资源返回形式;

  1. options {
  2. directory "/var/cache/bind";
  3. // If there is a firewall between you and nameservers you want
  4. // to talk to, you may need to fix the firewall to allow multiple
  5. // ports to talk. See http://www.kb.cert.org/vuls/id/800113
  6. // If your ISP provided one or more IP addresses for stable
  7. // nameservers, you probably want to use them as forwarders.
  8. // Uncomment the following block, and insert the addresses replacing
  9. // the all-0's placeholder.
  10. recursion yes;#启用递归查询
  11. allow-recursion { any;};#允许来自任何源的递归查询
  12. listen-on { any;};#监听所有网络接口
  13. forwarders {223.5.5.5;#阿里云的免费DNS地址223.6.6.6;#阿里云的免费DNS地址114.114.114.114;#全国通用DNS地址};
  14. //========================================================================
  15. // If BIND logs error messages about the root key being expired,
  16. // you will need to update your keys. See https://www.isc.org/bind-keys
  17. //========================================================================
  18. dnssec-validation auto;#DNSSEC确认开关为自动模式
  19. auth-nxdomain no;#符合RFC1035};

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

  1. sudovim /etc/bind/named.conf.local
  1. //
  2. // Do any local configuration here
  3. //
  4. // Consider adding the 1918 zones here, if they are not used in your
  5. // organization
  6. //include "/etc/bind/zones.rfc1918";
  7. //正向解析区域,假设你的域名是:mes.ceshiserver.com
  8. zone "ceshiserver.com"{type master;file"/etc/bind/db.ceshiserver.com";};
  9. //反向解析区域,代表解析129.168.2段的地址
  10. zone "129.168.2.in-addr.arpa"{type master;file"/etc/bind/db.129.168.2";};

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

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

添加如下内容

  1. ;; BIND data filefor ceshiserver.com
  2. ;$TTL604800
  3. @ IN SOA ns1.ceshiserver.com. admin.ceshiserver.com. (#adminDNS服务器主机名2023101001; Serial
  4. 604800; Refresh
  5. 86400; Retry
  6. 2419200; Expire
  7. 604800); Negative Cache TTL
  8. ;
  9. @ IN NS ns1.ceshiserver.com.
  10. ns1 IN A 129.168.1.10
  11. mes IN A 129.168.2.20

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

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

添加如下内容

  1. ;; BIND reverse data filefor129.168.2.0/24
  2. ;$TTL604800
  3. @ IN SOA ns1.ceshiserver.com. admin.ceshiserver.com. (2023101001; Serial
  4. 604800; Refresh
  5. 86400; Retry
  6. 2419200; Expire
  7. 604800); Negative Cache TTL
  8. ;
  9. @ IN NS ns1.ceshiserver.com.
  10. 10 IN PTR ns1.ceshiserver.com.
  11. 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服务之前,检查配置文件是否有错误。

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

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

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

  1. 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解析:

测试正向解析

  1. nslookup mes.ceshiserver.com

测试反向解析

  1. nslookup129.168.2.20

六、检查Windows上的DNS缓存

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

  1. ipconfig /flushdns

七、检查网络连接

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

  1. ping129.168.1.10

八、 检查BIND日志文件

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

  1. sudotail -f /var/log/syslog

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

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

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

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

十、常用的命令

1.启动

  1. systemctl start bind9

2.查看状态

  1. systemctl status bind9

3.停止服务

  1. systemctl stop bind9.service

4.重启服务

  1. systemctl restart bind9.service

5.重新加载配置

  1. systemctl reload bind9.servic

6.服务状态查询

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

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

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

还没有评论