我最初将此发布到 stack-overflow 是因为我认为他们可以给我一些见解,但结果我被否决了,他们不明白我从标题中说了什么。我正在尝试让 bind9 将我的域名解析为 IPv4 地址,但 bind9 无法检测到我设置的名为/etc/bind/db.Domain.zone甚至是默认的本地文件 本地数据库
我真的很困惑如何解决这个问题,大约一个月前我向 bind9 支持发送了帮助请求,但我从未收到回复。所有者将我发送到社区论坛,但我从未被接受。我已经安装了bind9 bind9utils bind9-doc bind9-host我还设置了我的 hosts 文件,如下所示,以便 O 可以链接我的主机名也对它
echo -e "192.168.1.101 cheese.com chewy" >> /etc/hosts
hostnamectl set-hostname chewy
然后我就能跑了ping -c cheese.com在我启用 ICMP 请求后,在同一主机上收到响应,但是我无法 ping Evil.com从网络中的另一台计算机或网络外的计算机,我的下一步是配置命名的.conf.选项根据我的喜好归档
acl TrustedPPL { 192.168.1.0/24; 192.168.1.101; };
acl NoAccess { 192.168.1.111; };
options {
directory "/var/cache/bind";
allow-query { TrustedPPL; };
blackhole { NoAccess; };
recursion yes;
allow-recursion { localnets; 192.168.1.0/24; };
listen-on port 53 { 192.168.1.101; 127.0.0.1; };
forwarders { 192.168.1.1; 8.8.8.8; 8.8.4.4; };
dnssec-validation auto;
dnssec-lookaside auto;
dnssec-enable yes;
auth-nxdomain no;
tcp-listen-queue 25;
transfers-in 25;
transfers-out 25;
tcp-clients 200;
};
此时我已重新启动 bind9,因此我会收到任何错误的通知,没有错误,因此我继续创建区域名称和区域文件,我还将包括区域文件内容
echo -e 'zone "cheese.com" IN { type master; file "/etc/bind/db.Domain.zone"; };' > /etc/bind/named.conf.local
区域文件/etc/bind/db.Domain.zone
$TTL 3h
@ IN SOA cheese.com. root. (
15 ; Serial
3h ; Refresh
1h ; Retry
1w ; Expire
1h ) ; Negative Cache TTL
@ IN NS cheese.com.
@ IN A 192.168.1.101
然后我用dig cheese.com我收到的响应显示 IPv4 是 192.168.1.101,然后我确认了nslookup并且结果也是准确的。
所以我决定测试一下分辨率部分,然后我改变了@ IN A 192.168.1.101 至 192.168.1.111然后我更改了序列号并重新启动了 bind9,没有任何错误,我做了一个dig cheese.com然后它又返回了 192.168.1.101。所以此时我很好奇文件 db.Domain.zone 是否被检测到,所以我将文件 db.Domain.zone 和 db.local 一起完全删除,dig 和 nslookup 显示 bind9 甚至没有检测到它自己的解析文件,因为它仍然返回 192.168.1.101 和 127.0.0.1 有什么想法吗?
这是我的/etc/nsswitch.conf文件
passwd: compat systemd
group: compat systemd
shadow: compat
gshadow: files
hosts: dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
我也尝试过用原版/etc/bind/named.conf.options文件,并且没有任何变化。
也没有 dnsmasq 或 nscd 缓存守护进程
默认的 localhost 文件 /etc/bind/db.local 在被删除之前也从 127.0.0.1 更改为 127.0.1.1,以查看这是否只是我的配置,dig 仍然返回 127.0.0.1,有人可以确认这是一个 bind9 问题还是这是我的设置问题
答案1
您正在尝试在本地主机上设置公共域。因此,无法从其他位置解析。如果您只需要 LAN,请配置绑定,并让所有 LAN PC(或路由器)使用该绑定作为 DNS 服务器。
在其他情况下,如果您尝试设置公共域,请在 Google 上搜索域名停放。可以将域名停放在您自己的服务器上,但它必须有公共 IP,这是最糟糕的主意。
编辑(根据评论):我认为它运行良好,环回接口对许多地址都有响应:
leonid JabbaDesktop ~ $ ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 27078 bytes 2265065 (2.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 27078 bytes 2265065 (2.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
leonid JabbaDesktop ~ $ ping -c 1 127.0.123.1
PING 127.0.123.1 (127.0.123.1) 56(84) bytes of data.
64 bytes from 127.0.123.1: icmp_seq=1 ttl=64 time=0.060 ms
leonid JabbaDesktop ~ $ ping -c 1 127.0.123.2
PING 127.0.123.2 (127.0.123.2) 56(84) bytes of data.
64 bytes from 127.0.123.2: icmp_seq=1 ttl=64 time=0.060 ms