我看到诸如
Feb 13 21:45:48 srv named[2355]: address not available resolving 'secure.gravatar.com/A/IN': 2a04:fa87:ffff::c6b5:7405#53
Feb 13 21:42:29 srv named[2355]: address not available resolving 'la1.akamaiedge.net/AAAA/IN': 2001:500:a8::e#53
/var/log/syslog
尽管仅在bind
IPv4 模式下运行
srv # cat /etc/default/bind9
# run resolvconf?
RESOLVCONF=no
# startup options for the server
OPTIONS="-u bind -4"
为什么会这样?
如果系统正在使用 systemd,则编辑
/etc/default/bind9
将无效。改为编辑
/lib/systemd/system/bind9.service
文件并将-4
选项添加到ExecStart
变量。我正在使用 Ubuntu 16 并且必须这样做。ExecStart=/usr/sbin/named -f -4 -u bind
还要仔细检查重新启动后
named
是否正在运行-4
选项。实际上有一个关于这种配置混淆的错误https://bugs.launchpad.net/ubuntu/+source/bind9/+bug/1565060
该
-4
选项仅更改告诉绑定侦听和响应 IPv4 数据包。它不会禁用AAAA
记录的使用。如果那是您真正想要的,那么您可以调整绑定配置以包含以下内容。您必须禁用 dnssec 验证,因为您正在删除有效记录。
作为添加
-4
到named
命令行的替代方法(确实有效,但可能不方便,具体取决于named
启动方式),也可以将以下内容添加到配置中,对于不尝试通过 IPv6 进行连接具有类似的效果:这会将具有 IPv6 地址的服务器标记为伪造的,从而阻止对这些地址的查询。
可能不言而喻,但这两个选项都应该只在没有全局 IPv6 连接的环境中使用,在这种环境中,
named
所有时间都在记录这些类型的错误。如果您只是偶尔遇到与特定服务器的连接问题,那没有理由自行禁用整个协议的使用。
对于 Redhat Linux 及其衍生产品,应将选项添加到
/etc/sysconfig/named
.要禁用对 IPv6 的侦听并仅使用 IPv4,请使用以下行: