ubuntu22.04 搭建DNS服务器

 目录

1、DNS介绍. 

什么DNS 

域名服务的解析原理和过程. 

域名空间. 

2、实验环境. 

VMware Workstation安装Ubuntu系统. 

Xshell8连接Ubuntu系统. 

3、Ubuntu搭建DNS服务器 - bind9 

3.1配置前提. 

3.2安装bind9 

3.3 修改配置文件 named.conf.local 

3.4配置正向解析文件. 

3.5 配置反向解析文件. 

3.6 配置. 

3.7 启动并验证. 

3.9在Windows11中使用DNS服务. 

  1. DNS介绍

什么DNS

DNS(Domain Name System)是互联网中用于将域名解析为 IP 地址的系统。简单来说,就是将人类可读的域名(例如:example.com)转换为计算机可识别的 IP 地址(例如:192.0.2.1)。DNS 是互联网基础设施的一部分,它使得用户可以通过易记的域名来访问互联网上的各种服务,而不必记住复杂的 IP 地址。DNS 使用分层的树状结构进行域名解析,其中顶级域名(TLD)如.com、.org等由全球管理机构负责管理,而次级域名则由注册商或组织管理。DNS 的工作原理涉及到域名解析请求的传递和响应的返回,通常通过域名服务器来完成这些任务。

域名服务的解析原理和过程

cn域名解析的工作原理和过程如下:

    1.用户提出域名解析请求,并将该请求发送给本地的域名服务器。

    2.当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该记录项,则本地的域名服务器就直接把查询的结果返回。

    3.如果本地的缓存中没有该记录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域,如cn)的主域名服务器的地址。

    4.本地服务器再向上一步骤中所返回的域名服务器发送请求,然后收到该请求的域名服务器查询其缓存,返回与此请求所对应的记录或相关的下级的域名服务器的地址,本地域名服务器将返回的结果保存到缓存。

    5.重复上一步,直到找到正确的记录。

    6.本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

域名空间

域名空间是指表示DNS这个分布式数据库的逆向树型层次结构,完整域名由从树叶节点到根节点的一条路径的所有节点以分隔符“.”按顺序连接而成,如http://www.tony.com.cn/,其中“.”代表根域(当“.”出现在域名的最右边时,实际上还表示其右边有代表根的空标签“”;也可以用最右边的“.”来表示根),“cn”为顶级域,“com”为二级域,“tony”为三级域,“www”为主机名。

2、实验环境

VMware Workstation 17 pro

Xshell8

VMware Workstation安装Ubuntu系统

Xshell8连接Ubuntu系统

输入账户和密码

  1. Ubuntu搭建DNS服务器 - bind9

bind简介

BIND (Berkeley Internet Name Domain)是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,包括

* 域名服务器 (named)

* DNS解析库函数

* DNS服务器运行调试所用的工具

是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护的,

按照ISC的调查报告,BIND是世界上使用最多最广泛的域名服务系统。不论你的邮件服务器,WEB服务器或者其他的services如何的安全可靠,DNS的故障会给你带来用户根本无法访问这些服务。

BIND,也是我们常说的named,由于多数网络应用程序使用其功能,所以在很多BIND的弱点及时被发现。主要分为三个版本:

V4

1998年多数UNIX捆绑的是BIND4,已经被多数厂商抛弃了,除了OpenBSD还在使用。OpenBSD核心人为BIND8过于复杂和不安全,所以继续使用BIND4。这样一来BIND8/9的很多优点都不包括在v4中。

v8

就是如今使用最多最广的版本,其详细内容可以参阅 BIND 8+ 域名服务器安全增强

v9

最新版本的BIND,全部重新写过,免费(但是由商业公司资助),也添加了许多新的功能(但是安全上也可能有更多的问题)。BIND9在2000年十月份推出,现在稳定版本是9.3.2。

3.1配置前提

关闭防火墙,linux服务默认开启防火墙,bind使用的端口为53,协议为TCP/UDP

一定要开启53端口或者关闭防火墙才能使其他设备能访问到DNS服务器

命令:

ufw enable    //启用

ufw disable   //关闭

sudo ufw status    //查看防火墙状态

sudo ufw status   //查看服务是否已启动                       

sudo ufw allow +服务/端口号/特定协议 //允许......服务/端口号/特定协议

sudo ufw deny  +服务/端口号/特定协议 //拒绝......服务/端口号/特定协议

配置好一个页面做DNS验证,这里使用本地nas系统

配置好静态ip,这里配置为192.168.173.*,配置过程如下:

cd /etc/netplan

vim 01-network-manager-all.yaml #这是Ubuntu的网卡配置文件

# Let NetworkManager manage all devices on this system

network:

  ethernets:

    ens33:

      addresses: [192.168.173.*/24]          # 设置静态IP地址和掩码

      routes:                                 # 设置网关地址

       - to: default

         via: 192.168.173.2

      dhcp4: false                            # 禁用dhcp

      nameservers:

        addresses: [114.114.114.114, 8.8.8.8] # 设置主、备DNS

  version: 2

  renderer: NetworkManager

:wq保存退出

配置完成后要执行命令

sudo netplan apply

使配置生效。

输入ipconfig查看配置的ip是否生效

3.2安装bind9

下载bind9

apt install bind9

# 安装后的配置文件如下:/etc/bind

3.3 修改配置文件 named.conf.local

cd /etc/bind/

vim named.conf.local

zone "ckx.cn" {

        type master;

        file "/etc/bind/db.ckx.cn";

};

# 配置正向解析

# 正向解析是指将域名解析为 IP 地址的过程。在第一个配置块中,定义了名为 "ckx

.cn" 的域名区域,并在 "/etc/bind/db.ckx.cn" 文件中存储了相应的域名和 IP 地址映射信息。当域名服务器接收到一个查询请求时,它会查询这个配置文件,并将查询结果返回给客户端。

zone "173.168.192.in-addr.arpa" {

        type master;

        file "/etc/bind/192.zone";

};

# 配置反向解析

# 反向解析则是将 IP 地址解析为域名的过程。在第二个配置块中,定义了名为 "173.168.192.in-addr.arpa" 的域名区域,并在 "/etc/bind/db.192.example.com" 文件中存储了相应的 IP 地址和反向域名映射信息。当域名服务器接收到一个反向查询请求时,它会查询这个配置文件,并将查询结果返回给客户端。

:wq 保存好配置,退出编辑器

3.4配置正向解析文件

vim /etc/bind/db.ckx.cn


$TTL 604800

$ORIGIN ckx.cn.

@ IN SOA ckx.cn. root.ckx.cn. (

2006080401 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 ) ; Negative Cache TTL

;

@ IN NS ns1

@ IN A 192.168.173.129

ns1 IN A 192.168.173.129

www IN A 192.168.173.129

nas IN A 192.168.173.128

参数解释:

这是一个简单的 DNS 区域配置文件,用于配置一个名为" ckx.cn"的域名区域。以下是对配置文件中各条目的解释:

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

2. $ORIGIN ckx.cn.:指定域名空间的根区域为 “ckx.cn”。

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

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

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

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

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

8. @ IN NS ns1:定义了一个名为 “ns1” 的域名服务器,负责解析 “ckx.cn” 域名下的所有域名。

9. @ IN A 192.168.173.129:指定域名 “ckx.cn” 的 IP 地址为 192.168.173.129。

10. www IN A 192.168.173.129:将 “www” 域名解析为 IP 地址 192.168.173.129。

3.5 配置反向解析文件

vim /etc/bind/192.zone

$TTL 604800

@       IN       SOA     ckx.com. root.ckx.com. (

        20211201;Serial

        604800  ;Refresh

        86400   ;Retry

        2419200 ;Expire

        604800) ;Negative Cache TTL

;

@       IN      NS    ns1.ckx.com.

129     IN      PTR    ns1.ckx.com.

129     IN      PTR     www.ckx.com.

128     IN      PTR     nas.ckx.com.

注意:域名后面一定要加一个“.”

几个参数的解释:

  1. @ IN NS ns1.ckx.com. :定义域名解析服务器的名称,一定要对
  2. $TTL 604800 缓存时间
  3. 129 IN PTR ns1.ckx.com. 将 IP 地址 129 解析为域名 “ns1.ckx.com”。

3.6 配置

vim /etc/bind/named.conf.options
      在文件中加入DNS解析服务器
forwarders 
{

      8.8.8.8;

};
注:

forwarders节点配置的是转发器,所有非本域的和在缓存中无法找到的域名查询都将转发到设置的DNS转发器上,由这台DNS来完成解析工作并做缓存。转发器设置两个常用的DNS服务器即可

在此文件最后加入以下配置

     auth-nxdomain no;   

     listen-on port 53 {192.168.173.129;}; 

     allow-transfer {any; };

     allow-query{ any; };

:wq保存退出

3.7 启动并验证

systemctl restart bind9  
# 启动
# 修改配置文件重新启动后,可能不会立即生效,可执行下述命令刷新之后重新验证
systemctl reload bind9
 
修改系统的DNS配置
vim/etc/resolv.conf

nameserver 192.168.173.*
 
测试:
使用如下命令进行测试:
nslookup nas.ckx.cn
dig www.ckx.cn
以及ping命令

本机测试

可以发现域名可以使用(但仅限配置了本地DNS服务的设备)

3.9在Windows11中使用DNS服务

在网路配置中配置DNS服务器的IP地址

使用浏览器访问 nas.ckx.cn

发现可以解析到nas服务的页面

4、维护以及注意事项

查看服务状态、打开/关闭服务等命令使用

#启动bind9有两个:

/etc/init.d/bind9 restart

/usr/sbin/named

systemctl start bind9

#查看bind9启动状态,如果没有正常启动,它会显示错误在哪里,比如配置信息哪里错了

systemctl status bind9

#配置开机自启动或关闭自启动

systemctl enable bind9

systemctl disable bind9

#查看bind服务器状态

sudo rndc status

#重启网络服务

sudo service network-manager restart

sudo systemctl restart networking.service

#查看ubuntu自带的resolve状态

systemd-resolve --status

#重启ubuntu自带resolve

systemctl restart systemd-resolved

  • 52
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值