我在 Digital Ocean droplet 上运行带有 CWP 的 CentOS7。该服务器目前托管两个域,我于 4 月 26 日添加了第三个域。我按照常规步骤进行了操作,例如:
- 将域名指向我的服务器 ns 记录,
ns1.example.com
然后ns2.example.com
- 在 cwp 上添加了新域名新账户菜单安全套接字选项已启用
几个小时后,域名运行正常,我上传了我的网站并开始运行。之后,我尝试启用 SSL,但我注意到该域名没有安装 SSL。我继续尝试从用户帐户再次为该域名安装 SSL。它抛出一个错误DNS of your domain doesn't point to this server or you have htaccess restrictions
我决定从 WHM 尝试一下,结果还是同样的错误。我在 Google 上搜索并在 CentOS Web Panel Forum 上找到了几篇文章,并尝试了几种解决方案,包括:
- 更改主机名(再次保存,不做任何修改)
- 编辑 nameserverIPs (再次保存,不做任何修改)
- 以特定方式删除帐户,然后再次添加
我尝试了所有方法,但都不起作用。然后我决定手动比较有问题的域和工作域的 DNS 配置文件。我注意到问题域上的一些记录以域开头,而不是@
符号。我将所有行与工作域配置进行匹配,但仍然没有成功。
在搜索时我发现,也许 DNS 服务器出了问题,我运行service named status
命令来检查其状态,发现了几个错误network unreachable resolving
,完整的输出如下所示:
[root@server log]# service named status
Redirecting to /bin/systemctl status named.service
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-04-28 16:56:51 PKT; 46min ago
Process: 9965 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 9912 ExecReload=/bin/sh -c /usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Process: 10792 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
Process: 10790 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
Main PID: 10794 (named)
CGroup: /system.slice/named.service
└─10794 /usr/sbin/named -u named -c /etc/named.conf
Apr 28 16:56:51 serv.xyz.com named[10794]: network unreachable resolving './NS/IN': 2001:dc3::35#53
Apr 28 16:56:51 serv.xyz.com named[10794]: network unreachable resolving './DNSKEY/IN': 2001:500:2f::f#53
Apr 28 16:56:51 serv.xyz.com named[10794]: network unreachable resolving './NS/IN': 2001:500:2f::f#53
Apr 28 16:56:51 serv.xyz.com named[10794]: network unreachable resolving './DNSKEY/IN': 2001:500:200::b#53
Apr 28 16:56:51 serv.xyz.com named[10794]: network unreachable resolving './NS/IN': 2001:500:200::b#53
Apr 28 16:56:51 serv.xyz.com named[10794]: network unreachable resolving './DNSKEY/IN': 2001:500:a8::e#53
Apr 28 16:56:51 serv.xyz.com named[10794]: network unreachable resolving './NS/IN': 2001:500:a8::e#53
Apr 28 16:56:51 serv.xyz.com named[10794]: managed-keys-zone: Key 20326 for zone . acceptance timer complete: k...usted
Apr 28 16:56:51 serv.xyz.com named[10794]: resolver priming query complete
Apr 28 17:24:15 serv.xyz.com named[10794]: client @0x7f9dac0c6f10 193.29.15.169#52139 (5hz.org): query (cache) ...enied
Hint: Some lines were ellipsized, use -l to show in full.
[root@server log]#
现在,我搜索了 dns 解决方案,发现禁用 IPv6 是解决方案。我尝试通过添加 来禁用它OPTIONS="-4"
,甚至尝试注释 IPv6 行,但仍然没有成功。
我想知道,如果 DNS 服务器出了问题,那么其他两个网站怎么还能正常工作?我执行了 ns 查找,它显示了正确的 dns 信息。但是,当我对有问题的域执行 ns 查找时,它显示了ns
记录,但没有链接到它的 IP。
我进行了查找叶子域名这是错误:None of your nameserver names contain glue or A records. This error is fatal. Your domain is not resolveable
。尽管有错误,但我仍然可以访问我的域。
编辑:这是我的 DNS 配置文件的内容
; Generated by CWP
; Zone file for DOMAIN_IN_QUESTION.com
$TTL 14400
@ 86400 IN SOA ns1.SERVER_DOMAIN.com. webmaster.DOMAIN_IN_QUESTION.com. (
2020042832 ; serial, todays date+todays
3600 ; refresh, seconds
7200 ; retry, seconds
1209600 ; expire, seconds
86400 ) ; minimum, seconds
@ 86400 IN NS ns1.SERVER_DOMAIN.com.
@ 86400 IN NS ns2.SERVER_DOMAIN.com.
@ IN A XXX.XXX.XXX.XXX
localhost.DOMAIN_IN_QUESTION.com. IN A 127.0.0.1
@ IN MX 0 DOMAIN_IN_QUESTION.com.
mail 14400 IN CNAME DOMAIN_IN_QUESTION.com.
smtp 14400 IN CNAME DOMAIN_IN_QUESTION.com.
pop 14400 IN CNAME DOMAIN_IN_QUESTION.com.
pop3 14400 IN CNAME DOMAIN_IN_QUESTION.com.
imap 14400 IN CNAME DOMAIN_IN_QUESTION.com.
webmail 14400 IN A XXX.XXX.XXX.XXX
cpanel 14400 IN A XXX.XXX.XXX.XXX
cwp 14400 IN A XXX.XXX.XXX.XXX
www 14400 IN CNAME DOMAIN_IN_QUESTION.com.
ftp 14400 IN CNAME DOMAIN_IN_QUESTION.com.
_dmarc 14400 IN TXT "v=DMARC1; p=none"
@ 14400 IN TXT "v=spf1 +a +mx +ip4:XXX.XXX.XXX.XXX ~all"
default._domainkey 14400 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCi4acT6Vt0/7FVab8FzfLqJ8LU4rciFbo2t4yFmVoX1Uxi4QQsEJqTBZBfnWerkw6zzdY6+WYd4nn/sZSVCXDWC4/bmGylAkewthvOkAK1xsa8mXeOHrhX3CtqlVu3Ti+U4NpmmfgHehqq0NUKF9ma6NaJNMK3zFojToEdqNGQfwIDAQAB"
笔记:我在配置文件中做了这些替换:
IP 替换为
XXX.XXX.XXX.XXX
服务器地址替换为
SERVER_DOMAIN
受影响的域名已替换为
DOMAIN_IN_QUESTION
我一点头绪都没有,有人能帮我吗?已经过去两天多了,我非常沮丧。:(
答案1
如果有NS
记录,但没有对应的A
记录,则可能是缺少 Glue 记录来自父区域。错误信息None of your nameserver names contain glue or A records. This error is fatal. Your domain is not resolveable
与此一致。
如果此域名是example.com
,并且名称服务器是其子域名ns1.example.com
和,则仅有区域本身的记录ns2.example.com
是不够的,因为这会导致无限循环:A
- 您好
.com
,名称服务器有什么用途example.com
? - 它们是
ns1.example.com
和ns2.example.com
。 - 好的。他们的 IP 地址是多少?
- 我不知道。你应该向 的名称服务器询问
example.com
。 - 好的。名称服务器是用来做什么的
example.com
?
因此,com
需要直接拥有和提供这些信息,作为 Glue 记录。您无法在自己的 DNS 服务器上设置这些记录,但在注册员。
这些network unreachable resolving './NS/IN': 2001:dc3::35#53
错误可能与您当前的问题无关。这些是来自您的 DNS 服务器的 DNS 请求,与其递归功能,即当它尝试解析它自己不知道的域名时,权威地。
请记住递归和权威性DNS 服务器应该分开,例如由 IANA权威名称服务器的技术要求:
没有开放递归名称服务
权威名称服务器不得提供递归名称服务。通过在权威机构管辖范围之外发送设置了“RD”位的查询来测试此要求。
如果您的 DNS 服务器确实需要具有递归功能,您当然也应该修复这些错误。您还应该在 BIND 中使用 来限制允许递归使用服务器的网络范围allow-recursion { 198.51.100.0/24; };
。
答案2
您是否在注册商处注册了 ns1.SERVER_DOMAIN.com 和 ns2.SERVER_DOMAIN.com 作为名称服务器。仅更改域名的名称服务器无法将 DNS 查询重定向到您的服务器。首先,您应该注册两个名称服务器。然后,您应该将您的 ns 记录更改为您注册的名称服务器。
验证配置:
- 执行 whois 查询以获取 ns:
whois SERVER_DOMAIN.com |grep -i "name server:"
- 执行 ns 记录查询:
dig -t ns SERVER_DOMAIN.com
第一个查询应该有 ns1.SERVER_DOMAIN.com 和 ns2.SERVER_DOMAIN.com 在第二个查询中,答案部分应该包含一个答案。
然后查询将转发到您的服务器。要验证它,请在您的服务器上的端口 53 处打开 tcpdump。然后从另一个位置(不是从您的服务器)执行 soa dns 查询,例如dig -t soa SERVER_DOMAIN.com
。答案部分应包含区域文件中的行。如果没有,请查看您的 tcpdump 输出,如果没有输出,则防火墙阻止了 dns 端口,如果有输出,则 dns 配置有错误。使用以下命令进行配置测试:
named-checkconf /etc/named.conf named-checkzone SERVER_DOMAIN.com /var/named/[ZONEFILE]
可能至少有一个会失败。修复错误。然后重新执行 soa dns 查询。
然后调试,DOMAIN_IN_QUESTION.com。
首先检查与 SERVER_DOMAIN.com 相同的 TLD 记录。步骤相同:
- 执行 whois 查询以获取 ns:
whois DOMAIN_IN_QUESTION.com |grep -i "name server:"
- 执行 ns 记录查询:
dig -t ns DOMAIN_IN_QUESTION.com
所有这些步骤都应该返回“(ns1|ns2).SERVER_DOMAIN.com。如果不是,则注册商的配置有问题。请联系他们。
检查配置和区域配置
named-checkconf /etc/named.conf named-checkzone DOMAIN_IN_QUESTION.com /var/named/[ZONEFILE]
如果有错误则修复。
执行 soa 记录查询。此查询应由您的 dns 服务器回答。打开 tcpdump 并检查 dns 流量数据包。
SOA 答案应该与区域配置文件中的 SOA 行匹配。