6.7 DNS #
6.7.1 简介 #
DNS(Domain Name System)是一个用于将域名转换为与之关联的IP地址的分布式命名系统。它充当了互联网上域名与IP地址之间的映射服务。
-
正向查询(Forward Lookup):正向查询是根据给定的域名获取相应的IP地址。当你在浏览器中输入一个网址(例如
www.example.com
),DNS 系统会执行正向查询以查找与该域名关联的 IP 地址,从而将你的请求转发到正确的服务器。 -
反向查询(Reverse Lookup):反向查询是根据给定的 IP 地址获取相应的域名。它是正向查询的逆过程。通过反向查询,你可以查找给定 IP 地址所对应的域名。这对于网络管理员来说是有用的,可以通过 IP 地址确定主机的域名。
-
根域名(Root Domain):根域名是 DNS 层次结构中的顶级域名,表示为一个点(.)。它是 DNS 命名空间的最高级别,所有其他域名都是从根域名派生出来的。根域名由一组 13 个根服务器(Root Servers)来管理,这些服务器分布在全球各个地点。
-
www:www 是一个常见的域名前缀,表示 “World Wide Web”。通常,网站会使用类似
www.example.com
的域名来表示其 Web 服务。这是出于历史原因,当互联网刚刚兴起时,许多网站选择以 www 作为其主要 Web 服务器的标识。 -
FQDN(Fully Qualified Domain Name):FQDN 是一个完全限定域名,包括所有级别的域名,从根域名一直到最低级别的域名。例如,
www.example.com
是一个 FQDN,它包含三个级别的域名:com(顶级域名)、example(二级域名)和www(三级域名)。
6.7.2 BIND #
BIND(Berkeley Internet Name Domain)是一个开源的 DNS 软件实现,它是最常用和广泛部署的 DNS 服务器软件之一。BIND 软件提供了 DNS 协议的实现,允许将域名解析请求映射到相应的 IP 地址。
DNS(Domain Name System)是一个分布式的命名系统,用于将域名转换为与之关联的 IP 地址。它充当了互联网上域名与 IP 地址之间的映射服务。BIND 作为 DNS 服务器软件,实现了 DNS 协议的功能,用于接收来自客户端的域名解析请求,并将其转发到相应的域名服务器以获取相应的 IP 地址。
BIND 提供了多种功能,包括但不限于:
-
域名解析:BIND 作为 DNS 服务器软件,负责接收客户端的域名解析请求,并将其转发到适当的域名服务器,最终返回相应的 IP 地址给客户端。
-
域名授权和转发:BIND 可以配置为授权特定的域名,即负责该域名的解析请求。它还可以配置为转发请求到其他域名服务器,以获取非本地域名的解析结果。
-
域名记录管理:BIND 允许管理员管理和配置域名服务器上的各种资源记录,包括 A 记录(将域名映射到 IPv4 地址)、AAAA 记录(将域名映射到 IPv6 地址)、CNAME 记录(指定域名的别名)等。
-
安全性和身份验证:BIND 支持设置安全策略和防止 DNS 缓存投毒等安全攻击。它还支持身份验证和加密通信,以确保 DNS 通信的机密性和完整性。
# 安装 bind
yum install bind bind-utils -y
# 启动
systemctl start|stop|restart|status named.service
# 修改了配置文件检查错误命令
named-checkconf
主配置文件在 /etc/named.conf。可以修改配置文件中的 listen-on port 53 为 any,表示监听的 ip 为 any,任何人都可以对 DNS 服务器进行查询。把 allow-query 也改为 any。
6.7.3 根域 #
/etc/named.conf 中有配置:
zone "." IN {
type hint;
file "named.ca";
};
可以用来实现根域,named.ca 文件在 /var/named 文件夹中。
主域名服务 #
比如新增一个 test.com 的主域名,修改 /etc/named.conf 文件,新增 test.com zone:
zone "test.com" IN {
type master;
file "test.com.zone";
};
新建一个 /var/named/test.com.zone 文件,可以通过 cp -p 实现,这样可以保证文件权限:
cp -p named.ca test.com.zone
编辑 test.com.zone 文件,写入如下内容:
$TTL 1D
@ IN SOA @ ns1.test.com. (
2023071100 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ; minimum
)
@ IN NS ns1
ns1 IN A 192.168.116.54
www IN A 192.168.162.54
mail IN CNAME mailexchange
mailexchange IN A 192.168.106.54
重启 named 服务:
systemctl restart|reload named.service
可以使用 nslookup 测试 DNS 是否正常:
server 指定 DNS 服务器为 192.168.16.54。
从域名服务器 #
zone "test.com" IN{
type slave;
file "slaves/test.com.zone";
masters{10.211.55.3;}
};
从服务器的区域文件在启动后会从主服务器上自动同步过来。
6.7.4 FAQ #
- Temporary failure in name resolution
ping www.baidu.com
ping: www.baidu.com: Temporary failure in name resolution
可以尝试通过重启 DNS 服务解决:
sudo systemctl restart systemd-resolved.service