目录
-
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系统
输入账户和密码
- 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.
注意:域名后面一定要加一个“.”
几个参数的解释:
- @ IN NS ns1.ckx.com. :定义域名解析服务器的名称,一定要对
- $TTL 604800 缓存时间
- 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