我设置了一个新的 ubuntu 20.04 服务器并安装了 BIND 9.16.1-Ubuntu。然后我从运行 BIND 9.10.3-P4-Ubuntu 的旧 ubuntu 16.04.7 复制了绑定配置。
当我尝试在新服务器上启动绑定时出现此错误。
/etc/bind/named.conf.options:15: '::1/64': address/prefix length mismatch '64'
这是我的 /etc/bind/named.conf.options 文件。
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no;
dump-file "/var/cache/bind/named_dump.db";
statistics-file "/var/cache/bind/named.stats";
listen-on port 53 { 0.0.0.0/0; };
listen-on-v6 port 53 { any; };
allow-query { 0.0.0.0/0; ::/0; };
version "DNS";
allow-recursion {
127.0.0.0/8; ::1/64;
10.10.0.0/24; 1000:1000:1000:1000::/56;
};
allow-transfer {
127.0.0.1; ::1;
};
disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa";
notify yes;
masterfile-format text;
};
这个前缀有什么问题?
bind 9.16 中发生了哪些变化,导致同一个文件可以与 bind 9.10 完美兼容?
答案1
在选项中的许多地方,您可以管理允许哪些设备或哪些网络与 DNS 服务器进行交易。
指定单个 IP 地址时,您需要使用二进制全 1 掩码,对于 IPv4(CIDR /32)长度为 32 位,对于 IPv6(CIDR /128)长度为 128 位,或者省略掩码。
如果您要指定网络,则不应过度指定。
::1
是 IP 地址,而掩码/64
则表示网络,因此掩码已超出指定范围。
如果您希望使用::1
IP 地址,则应/128
像“allow-transfer”部分中那样省略掩码。
1000:1000:1000:1000::/56
子网不正确,因为它属于 IETF 保留的范围
全局单播地址在2000::/3
范围内,
唯一本地单播fc00::/7
、
链路范围单播fe80::/10
、
多播ff00::/8
。
其他地址保留。
如果您在网络中不使用 IPv6,我建议将它们从配置中删除。