6.7 DNS

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 提供了多种功能,包括但不限于:

  1. 域名解析:BIND 作为 DNS 服务器软件,负责接收客户端的域名解析请求,并将其转发到适当的域名服务器,最终返回相应的 IP 地址给客户端。

  2. 域名授权和转发:BIND 可以配置为授权特定的域名,即负责该域名的解析请求。它还可以配置为转发请求到其他域名服务器,以获取非本地域名的解析结果。

  3. 域名记录管理:BIND 允许管理员管理和配置域名服务器上的各种资源记录,包括 A 记录(将域名映射到 IPv4 地址)、AAAA 记录(将域名映射到 IPv6 地址)、CNAME 记录(指定域名的别名)等。

  4. 安全性和身份验证: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 #

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