DNS原理
- 客户端发起请求:客户端向本地 DNS 服务器发送域名解析请求,这是流程的起始点。
- 本地 DNS 服务器查询根域名服务器:若本地 DNS 服务器缓存中无对应记录,它向根域名服务器发起查询,根域名服务器是 DNS 系统顶层,掌握顶级域名服务器信息。
- 根域名服务器响应:根域名服务器告知本地 DNS 服务器,负责该域名顶级域名服务器的地址。
- 本地 DNS 服务器查询顶级域名服务器:本地 DNS 服务器向顶级域名服务器发送查询请求,顶级域名服务器管理如.com、.org 等顶级域名下的域名信息。
- 顶级域名服务器响应:顶级域名服务器告知本地 DNS 服务器,负责该域名的权威域名服务器地址。
- 本地 DNS 服务器查询权威域名服务器:本地 DNS 服务器向权威域名服务器查询,权威域名服务器存储具体域名的解析记录。
- 权威域名服务器响应:权威域名服务器将域名对应的 IP 地址返回给本地 DNS 服务器。
- 本地 DNS 服务器响应客户端:本地 DNS 服务器将获取的 IP 地址返回给客户端,客户端就能通过 IP 访问对应网络资源。
此外,客户端和本地 DNS 服务器间虚线关联本地 DNS 缓存、/etc/hosts 文件 ,本地 DNS 服务器配置文件是 /etc/resolv.conf ,这些在解析中起到辅助作用。
- 主dns要完成dns解析:192.168.164.128
[root@localhost ~]# yum install bind -y
[root@localhost ~]# systemctl start named
named:它是 BIND(Berkeley Internet Name Domain)域名服务器软件的守护进程。
[root@localhost ~]# vim /etc/named.conf
named.conf 是 BIND(Berkeley Internet Name Domain)软件的主配置文件,BIND 是在互联网上广泛使用的 DN(Domain Name System)服务器软件,named.conf 文件用于控制 named 守护进程的行为
[root@localhost ~]# vim /etc/named.conf
1. options 部分
- listen-on port 53 { any; };
- 作用:指定 named 服务监听在 TCP 和 UDP 的 53 端口,并且监听所有本地 IP 地址。这意味着该 DNS 服务器可以接收来自任何网络接口的 DNS 请求。
- directory "/var/named";
- 作用:定义区域文件(记录域名相关信息的文件)的存储目录。BIND 会在这个目录下查找和存放相关的区域文件。需要确保 named 服务对该目录有读写权限。
- allow-query { any; };
- 作用:允许任何客户端发起 DNS 查询请求。
- allow-transfer { 192.168.164.129; };
- 作用:允许指定的 IP 地址(这里是 192.168.164.129 )进行区域传送。区域传送是指主 DNS 服务器将区域数据复制给从 DNS 服务器的过程。如果设置不当,可能会导致 DNS 数据泄露,所以要谨慎设置,只允许可信的从 DNS 服务器 IP 进行区域传送 。
2. 区域定义部分
- zone "zhang.com." IN {
- 作用:定义了一个名为 zhang.com. 的 DNS 区域,类型为 master(主区域) ,意味着这台服务器是该区域的主 DNS 服务器,负责维护和管理这个区域的 DNS 记录。
- file "named.zhang.com";:指定该区域对应的区域文件名为 named.zhang.com ,这个文件应存放在前面 options 中定义的 directory 目录(/var/named )下,里面应包含 zhang.com 这个区域的具体 DNS 记录,如 A 记录(域名到 IP 地址映射)、MX 记录(邮件交换记录)等 。目前缺少具体的区域文件内容,需要创建并填充相关记录。
- zone "164.168.192.in-addr.arpa" IN {
- 作用:这是一个反向解析区域定义,in-addr.arpa 是用于 IPv4 反向地址解析的特殊域名。类型同样为 master 。反向解析是通过 IP 地址查询对应的域名,对于网络管理和安全审计等有重要作用。
- file "named.192.168.164.zone";:指定该反向解析区域对应的区域文件 。
[root@localhost~]#cp -a /var/named/named.localhost /var/named/named.zhang.com
[root@localhost~]#cp -a /var/named/named.localhost /var/named/named.192.168.138.zone
vim /var/named/named.zhang.com
vim /var/named/named.192.168.164.zone
[root@localhost ~]# systemctl restart named
Job for named.service failed because the control process exited with error code.
See "systemctl status named.service" and "journalctl -xeu named.service" for details.
[root@localhost ~]# systemctl stop firewalld
从:192.168.164.129
[root@localhost ~]# yum install bind -y
[root@localhost ~]# systemctl start named
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
directory "/var/named";
allow-query { any; };
}
zone "zhang.com." IN {
type slave;
masters { 192.168.164.128; };
file “slaves/named.zhang.com”;};
zone "164.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.164.128; };
file “slaves/named.192.168.164.zone”;
};
[root@localhost ~]# systemctl restart named
[root@localhost ~]# systemctl stop firewalld
测试:
C:\Users\Legend>nslookup xixi.zhang.com 192.168.164.128
C:\Users\Legend>nslookup xixi.zhang.com 192.168.164.129
[root@localhost ~]# host xixi.zhang.com 192.168.164.128
[root@localhost ~]# host xixi.zhang.com 192.168.164.129
---------------增量
增量同步:
1、主:
tep1:往资源文件添加一行新的解析记录,(/var/named/named.zhang.com
和/var/named/named.192.168.164.zone )
tep2:序列号+1
tep3:[root@localhost ~]# systemctl restart named
2、从
手动增量同步
[root@localhost ~]# rndc refresh zhang.com
[root@localhost ~]# rndc refresh 164.168.192.in-addr.arpa
测试:
C:\Users\Legend>nslookup xixi.zhang.com 192.168.164.128
C:\Users\Legend>nslookup xixi.zhang.com 192.168.164.129
[root@localhost ~]# host xixi.zhang.com 192.168.164.128
[root@localhost ~]# host xixi.zhang.com 192.168.164.129