现在我在 /etc/resolv.conf 中定义了多个名称服务器,但它们都用于所有查找。
我想要做的是指定哪个域服务器用于哪个顶级域,例如。
nameserver .com 1.2.3.4
nameserver .local.site 2.3.4.5
nameserver * 3.4.5.6
有没有办法在 Linux 上做到这一点?
答案1
对于一组域,标准做法是拥有一个主域和多个从域执行区域传输的从域。换句话说,我不会那样做。
实际上,你可以在 DNS 守护程序的配置文件中执行该配置 - 查找区域委派。
resolv.conf 是针对客户端的,应该告知客户端通过任何名称服务器查询特定域时应参考哪个名称服务器。您绝对不应该尝试将有关域委托的知识配置到客户端配置中。
具有私有和公共 DNS 解析的 DNS 配置示例
options {
directory "/var/named";
forward only; // ISP doesn't permit bypass
forwarders { 1.2.3.4; 5.6.7.8; }; // ISP's DNS servers
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "example.com" IN {
type master;
file "example.com";
allow-update { none; };
};
zone "0.0.10.in-addr.arpa" IN {
type master;
file "10.0.0";
allow-update { none; };
};
zone "129.168.192.in-addr.arpa" IN {
type master;
file "192.168.129";
allow-update { none; };
};
在这种情况下,文件“example.com”包含外部世界看不到的计算机的名称和地址。公共互联网看到的是一组完全不同的 example.com DNS 服务器(由域名托管商/注册商的 ISP 提供),这些服务器具有完全不同的记录。您必须在内部区域文件中复制外部记录,但通常这些记录很少(可能只是 www.example.com 的 A 记录)。
对于所有相同的区域,其他内部 DNS 服务器将是该主服务器的简单辅助服务器。
该forwarders
指令执行您寻求的“重定向”。所有内部计算机都具有仅指向内部 DNS 服务器的 resolv.conf。这些服务器提供有关内部和外部独立世界的信息。内部计算机不需要了解有关 DNS 命名空间的内部/外部划分的任何信息。