使用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
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"; // 区域文件路径
};
};
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地址
};
};
$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访问解析结果
$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访问解析结果
[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
[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
[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
[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
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的配置,使用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服务:
sudo systemctl reload named
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缓存。
可能是由于以下原因导致的:
DNS配置问题:检查DNS服务器配置,确保正确设置了主DNS和备用DNS。确保主DNS配置为 1.1.1.1,并且备用DNS配置为正确的IP地址。
DNS缓存问题:如果之前已经进行过解析请求,可能存在本地或网络层面的DNS缓存。尝试清除本地计算机上的DNS缓存,并等待一段时间以使网络中的缓存刷新。
DNS服务器问题:如果使用的是第三方DNS服务提供商(如Cloudflare),请确保其服务正常运行并没有发生任何故障或维护。