我知道这是一个普遍的问题,但我尝试了很多解决方案,但都没有成功。
我想要做的是创建一个自定义名称服务器,就像ns1.example.com/ns2.example.com
我尝试过 bind9 一样,但我总是得到“名称服务器对 example.com 没有权威性”
我进行了多次配置,但同样的错误我甚至尝试过 CWP7。
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};
zone "159.223.120.in-addr.arpa" {
type master;
file "/etc/bind/db.159";
};
db.example.com
$TTL 604800
@ IN SOA localhost. root.localhost. (
300 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
@ IN A xxx.xxx.xxx.xxx
@ IN AAAA ::1
ns1 IN A xxx.xxx.xxx.xxx
ns2 IN A xxx.xxx.xxx.xxx
是否有链接或其他有用的东西?
答案1
您的 SOA 记录有误。这就是 BIND 拒绝它的原因。
其数据应为:SOA nameserver email serial refresh retry expire negative
nameserver
必须是该区域的权威名称服务器之一,即ns1.example.com
或ns2.example.com
,可以接受动态更新的名称服务器。如果使用 DNS AXFR/IXFR 分发区域数据(例如 BIND 主/从),则在该字段中指定主服务器。如果您在从服务器上配置更新转发,则在那里指定哪一个并不重要。如果通过其他机制执行复制(如果是 Microsoft DNS 服务器,则为 AD DS 数据库复制;如果是 PowerDNS 本机区域,则为后端复制,等等),或者如果该区域未使用动态更新,则选择可能完全是任意的。
email
是管理联系人的电子邮件地址,其中@
替换为.
,例如[email protected]
变为dnsadmin.example.com
。
其他的是数字,你的就够了。括号是将单个记录拆分为几行的方式,只是一个语法元素;如果没有它们,你也可以将所有记录字段写在一行中。
区域文件中出现的有效 SOA 记录可能如下所示:
@ IN SOA ns1.example.com. dnsadmin.example.com. (
300 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
example.com. IN NS ns1.example.com.
ns1.example.com. IN A xxx.xxx.xxx.xxx
(我还包括了区域内的名称服务器定义,因此如果名称服务器名称属于区域本身,则上述示例实际上是一个完整正确的最小区域文件。)
此外,我认为你并不真的想留下记录
example.com. IN AAAA ::1
这是“ipv6 localhost”地址。为什么您要指定正确的工作公共 IPv4 地址和 localhost IPv6?如果 IPv6 可用,则系统优先使用 IPv6 的双栈用户将无法使用您的网站。如果您没有 IPv6,只需删除此记录。如果有,请配置正确的 IPv6 地址,而不是::1
。