DNS的主从配置与分离解析

1. 环境

使用bind部署dns的主从和域名的分离解析。
主dns:192.168.4.50
从dns:192.168.4.51
分离解析要求:192.168.4.52 解析结果为1.1.1.1,其他IP解析为2.2.2.2

2. 我的配置

(1) 主dns的named.conf文件

options {
    directory "/var/named";   // 存储区域文件的目录
    allow-query { any; };     // 允许所有客户端查询
    allow-transfer { 192.168.4.51; };   // 允许从服务器IP地址
};

// 主服务器视图
view "vip" {
    match-clients { 192.168.4.52; };  // 仅适用于IP地址为192.168.4.52的客户端
    zone "tedu.cn" IN {
        type master;  // 主服务器配置为主服务器
        file "tedu.cn.vip";  // 区域文件路径
    };
};

view "other" {
    match-clients { any; };   // 适用于所有其他客户端
    zone "tedu.cn" IN {
        type master;  // 主服务器配置为主服务器
        file "tedu.cn.other";  // 区域文件路径
    };
};

(2)从dns的named.conf文件

options {
    directory "/var/named";  // 存储区域文件的目录
    allow-query { any; };    // 允许所有客户端查询
    allow-notify { 192.168.4.50; };  // 允许主服务器IP地址发送通知
};

view "vip" {
    match-clients { 192.168.4.52; };  // 仅适用于IP地址为192.168.4.52的客户端
    zone "tedu.cn" IN {
        type slave;  // 从服务器配置为从服务器
        file "slaves/tedu.cn.vip";  // 从服务器的区域文件路径
        masters { 192.168.4.50; };  // 主服务器IP地址
    };
};

view "other" {
    match-clients { any; };  // 适用于所有其他客户端
    zone "tedu.cn" IN {
        type slave;  // 从服务器配置为从服务器
        file "slaves/tedu.cn.other";  // 从服务器的区域文件路径
        masters { 192.168.4.50; };  // 主服务器IP地址
    };
};

(3) 区域文件:tedu.cn.vip

$TTL 1D
@       IN SOA  @ rname.invalid. (
                  2023071905      ; serial
                  1M      ; refresh
                  1H      ; retry
                  1W      ; expire
                  3H )    ; minimum
@       IN NS   master.tedu.cn.
@       IN NS   slave.tedu.cn.
master  IN A    192.168.4.50
slave   IN A    192.168.4.51
www     IN A    1.1.1.1     ; 192.168.4.52访问解析结果

(4)区域文件:tedu.cn.other

$TTL 1D
@       IN SOA  @ rname.invalid. (
                  2023071905      ; serial
                  1M      ; refresh
                  1H      ; retry
                  1W      ; expire
                  3H )    ; minimum
@       IN NS   master.tedu.cn.
@       IN NS   slave.tedu.cn.
master  IN A    192.168.4.50
slave   IN A    192.168.4.51
www     IN A    2.2.2.2     ; 其他IP访问解析结果

3. 解析结果

(1)在192.168.4.50上解析http://www.tedu.cn/

[root@localhost ~]# nslookup www.tedu.cn 192.168.4.50
Server:         192.168.4.50
Address:        192.168.4.50#53

Name:   www.tedu.cn
Address: 2.2.2.2

[root@localhost ~]# nslookup www.tedu.cn 192.168.4.51
Server:         192.168.4.51
Address:        192.168.4.51#53

Name:   www.tedu.cn
Address: 2.2.2.2

(2)在192.168.4.51上解析http://www.tedu.cn/

[root@localhost slaves]# nslookup www.tedu.cn 192.168.4.50
Server:         192.168.4.50
Address:        192.168.4.50#53

Name:   www.tedu.cn
Address: 2.2.2.2

[root@localhost slaves]# nslookup www.tedu.cn 192.168.4.51
Server:         192.168.4.51
Address:        192.168.4.51#53

Name:   www.tedu.cn
Address: 2.2.2.2

(3)在192.168.4.52上解析http://www.tedu.cn/

[root@localhost ~]# nslookup www.tedu.cn 192.168.4.50
Server:         192.168.4.50
Address:        192.168.4.50#53

Name:   www.tedu.cn
Address: 1.1.1.1

[root@localhost ~]# nslookup www.tedu.cn 192.168.4.51
Server:         192.168.4.51
Address:        192.168.4.51#53

Name:   www.tedu.cn
Address: 2.2.2.2

(4) 查看从DNS服务器从主服务器获取到的地址库文件


[root@localhost slaves]# named-compilezone -f raw -F text -o /tmp/tedu.cn.vip.txt tedu.cn /var/named/slaves/tedu.cn.vip
zone tedu.cn/IN: loaded serial 2023071909
dump zone to /tmp/tedu.cn.vip.txt...done
OK
[root@localhost slaves]# named-compilezone -f raw -F text -o /tmp/tedu.cn.other.txt tedu.cn /var/named/slaves/tedu.cn.other
zone tedu.cn/IN: loaded serial 2023071909
dump zone to /tmp/tedu.cn.other.txt...done
OK
[root@localhost slaves]# cat /tmp/tedu.cn.vip.txt 
tedu.cn.                                      86400 IN SOA      tedu.cn. rname.invalid. 2023071909 60 3600 604800 10800
tedu.cn.                                      86400 IN NS       master.tedu.cn.
tedu.cn.                                      86400 IN NS       slave.tedu.cn.
master.tedu.cn.                               86400 IN A        192.168.4.50
slave.tedu.cn.                                86400 IN A        192.168.4.51
www.tedu.cn.                                  86400 IN A        2.2.2.2
[root@localhost slaves]# cat /tmp/tedu.cn.other.txt 
tedu.cn.                                      86400 IN SOA      tedu.cn. rname.invalid. 2023071909 60 3600 604800 10800
tedu.cn.                                      86400 IN NS       master.tedu.cn.
tedu.cn.                                      86400 IN NS       slave.tedu.cn.
master.tedu.cn.                               86400 IN A        192.168.4.50
slave.tedu.cn.                                86400 IN A        192.168.4.51
www.tedu.cn.                                  86400 IN A        2.2.2.2

4.问题:

192.168.4.52 向 从DNS请求解析 http://www.tedu.cn/ 的结果为什么是2.2.2.2,不应该是1.1.1.1吗?
查看从DNS的 地址库文件发现 tedu.cn.vip 和 tedu.cn.other 获取到 http://www.tedu.cn/ 的解析都为 2.2.2.2。正常情况下,tedu.cn.vip 的地址库应该是和主dns保持一致,为 1.1.1.1 。 为什么会出现这样的情况,我应该如何改正?

参考 https://blog.csdn.net/qq_59562051/article/details/120005747

DNS反向解析、主从服务器解析、分离解析
可以参考这个例子


DNS主从服务器与分离解析服务器配置详解_windows dns服务器分离解析_建议删号重来的博客-CSDN博客 目录前言:一、构建主从域名服务器1、前期准备2、配置从域名服务器⑴、首先、修改从域名服务器主配置文件⑵、其次、修改从域名服务器区域配置文件⑶、接着、启动named服务查看3、配置主域名服务器⑴、首先、配置主配置文件⑵、其次、修改区域配置文件⑶、接着、配置主服务器数据文件⑷、重启服务器、检测主服务器4、现在、重新启动从服务器5、模拟主服务器故障,客户机验证是否还能正常解析。二、构建DNS分离解析域名服务器1、前期准备2、首先、给网关服务器_windows dns服务器分离解析 https://blog.csdn.net/qq_59562051/article/details/120005747

通过对主DNS和从DNS的配置,使用ACL限定特定IP地址进行分离解析,主DNS根据客户端IP匹配相应视图,从DNS同步主DNS数据,实现主从和域名的分离解析

检查一下DNS服务器配置参数

清理缓存后,试试

根据你提供的配置,192.168.4.52应该得到的结果是1.1.1.1,但是它得到的结果是2.2.2.2。可能有以下几个原因:

1.你是否重启了DNS服务使其读取最新配置文件?
2.是否有其他地方对DNS进行了修改或者缓存了不正确的解析结果?
3.是否存在其他的named.conf文件或者区域文件,它们可能会与你提供的配置文件相冲突。

建议检查以上几个方面,如果还是不能解决问题,可以查看DNS服务的日志,查找出错的原因。

根据提供的配置和结果,问题可能出在从DNS服务器(192.168.4.51)上的视图设置方面。问题主要出在在从DNS服务器的named.conf文件中“view”部分的配置。

让我们逐步分析问题:

目标是让IP地址为192.168.4.52的客户端解析“www.tedu.cn”为1.1.1.1,而其他客户端解析为2.2.2.2。

在配置中,主DNS服务器和从DNS服务器都有两个视图:“vip”和“other”。

在“vip”视图中,您将match-clients设置为192.168.4.52,这意味着它只适用于IP地址为192.168.4.52的客户端。

但是,在“other”视图中,您将match-clients设置为“any”,这意味着它适用于所有其他客户端,包括192.168.4.52。

要解决问题并实现预期的结果,您应该修改从DNS服务器(192.168.4.51)上的“other”视图,将IP地址192.168.4.52排除在外。

以下是修改配置的方法:

(1)编辑从DNS服务器(192.168.4.51)上的named.conf文件:


view "other" {
    match-clients { !192.168.4.52; };  // 排除192.168.4.52
    zone "tedu.cn" IN {
        type slave;  // 从服务器配置
        file "slaves/tedu.cn.other";  // 从服务器的区域文件路径
        masters { 192.168.4.50; };  // 主服务器IP地址
    };
};

(2)重新加载或重启从DNS服务器上的DNS服务:

对于CentOS 7及以上版本:

sudo systemctl reload named


对于CentOS 6:

sudo service named reload

经过这些更改,192.168.4.52应该将“www.tedu.cn”解析为1.1.1.1,而其他客户端应该将其解析为2.2.2.2。确保在从DNS服务器(192.168.4.51)上使用“nslookup”命令验证解析是否正确。

DNS解析结果的具体IP地址是由DNS服务器返回的,如果DNS服务器返回的IP地址是2.2.2.2,那么这就是解析结果。
可能DNS服务器的配置出现了问题,导致返回了错误的IP地址,检查服务器的配置是否正确。
如果DNS缓存中已经存在TEDU.CN的解析结果,那么这次请求就可能直接返回了缓存中的结果,而不是再次向DNS服务器发送请求。可以尝试清理浏览器缓存或者使用命令行工具清理本地的DNS缓存。

可能是由于以下原因导致的:

  1. DNS配置问题:检查DNS服务器配置,确保正确设置了主DNS和备用DNS。确保主DNS配置为 1.1.1.1,并且备用DNS配置为正确的IP地址。

  2. DNS缓存问题:如果之前已经进行过解析请求,可能存在本地或网络层面的DNS缓存。尝试清除本地计算机上的DNS缓存,并等待一段时间以使网络中的缓存刷新。

  3. DNS服务器问题:如果使用的是第三方DNS服务提供商(如Cloudflare),请确保其服务正常运行并没有发生任何故障或维护。