我正在尝试学习 BIND9。我已建立了一个家庭实验室,其中主台式机运行绑定服务器、笔记本电脑和在桥接连接上运行 apache 的 virtualbox ubuntu server 16.04 vm。
- 我可以使用 IP 地址从每台机器 ping 所有机器。
- 我可以从每台机器 ssh 到所有机器。
- 我甚至无法通过 ping 来解析桌面上的名称服务器,也无法解析任何机器上的任何机器。
- 为了简化故障排除,任何机器上都没有安装防火墙。
- 我的所有机器与广域网的连接均正常运行。
- 另外,我没有运行 DNS 缓存服务器
- 两者都不命名检查区或者命名检查配置报告配置中的错误
编辑:当我使用主机并将桌面强制为 DNS 服务器(主机 nlab.local 192.168.1.2)时,桌面和虚拟机上的一切都按预期运行。当我使用主机而不指定 DNS 服务器时,此操作会失败。
1/2 解决方案:我编辑了解析器的头文件(/etc/resolvconf/resolvconf.d/head)并运行sudo resolvconf-u这样我的本地主机就会先于其他主机解析。但是,这是一个潜在的问题,因为这将导致所有其他主机必须将其解析器指向服务器才能使其工作,并且可能会减慢它们的速度或破坏后续解析。毕竟,解析器从未出现过故障,以至于无法到达我的本地主机。它只是 ping 超时,而其他工具(dig、host)甚至懒得尝试。所以,这有点像半解决方案,这就是为什么我还没有将其标记为已解决。此外,interfaces 文件中的 dns 设置不会强制解析,这很奇怪。我想知道,如果机器只是转到 resolv.conf 查找名称服务器,为什么静态设置中会存在这样的一行。
在桌面上绑定配置文件:
命名配置文件
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
logging {
channel query.log {
file "/var/log/query.log"; severity debug 3;
};
category queries { query.log; };
};
命名的.conf.本地
zone "nlab.local" {
type master;
file "/etc/bind/db.nlab.local";
};
zone "1.168.192.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.192";
};
命名的.conf.选项
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
allow-query { any; };
};
数据库.nlab.本地
;
; BIND data file for nlab.local
;
$TTL 604800
@ IN SOA ns.nlab.local. ike.nlab.local. (
11 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.nlab.local.
@ IN A 192.168.1.2
@ IN AAAA ::1
ns IN A 192.168.1.2
ns1 IN A 192.168.1.12
nc1 IN A 192.168.1.9
nightfall IN CNAME ns
freefall IN CNAME nc1
分贝.192
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.nlab.local. root.nlab.local. (
5 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
2 IN PTR ns.nlab.local.
; also list other computers
12 IN PTR ns1.nlab.local.
9 IN PTR nc1.nlab.local.
我的桌面 IP 是静态的,通过网络管理器配置,因为手动修改 /etc/network/interfaces 会阻止我的 networking.service 启动。也许这是一个线索,但我不知道如何解读它。但是,我能够在虚拟机中的接口文件上设置静态 ip,该虚拟机最初运行绑定服务器(现已禁用),虽然我能够解析该机器上的地址,但它仍然没有向具有相同配置的其他机器广播。
IP:192.168.1.2
网关:192.168.1.1
DNS:127.0.0.1,8.8.8.8,8.8.4.4
诊断:在桌面上
netstat -naptu | grep 53
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 9324/dnsmasq
tcp 0 0 192.168.1.2:53 0.0.0.0:* LISTEN 1540/named
tcp 0 0 172.17.0.1:53 0.0.0.0:* LISTEN 1540/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1540/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1531/sshd
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1540/named
tcp 0 0 192.168.1.2:51444 34.211.99.53:443 TIME_WAIT -
tcp 0 0 192.168.1.2:44613 192.52.178.30:53 TIME_WAIT -
tcp 32 0 192.168.1.2:54530 162.125.5.3:443 CLOSE_WAIT 2976/dropbox
tcp 0 0 192.168.1.2:41171 192.12.94.30:53 TIME_WAIT -
tcp 1 0 192.168.1.2:53664 54.236.121.227:443 CLOSE_WAIT 2976/dropbox
tcp6 0 0 :::22 :::* LISTEN 1531/sshd
udp 0 0 127.0.0.1:60178 127.0.0.1:53 ESTABLISHED 2372/Plex DLNA Serv
udp 0 0 0.0.0.0:5353 0.0.0.0:* 1285/avahi-daemon:
udp 0 0 127.0.0.1:46562 127.0.0.1:53 ESTABLISHED 2372/Plex DLNA Serv
udp 0 0 127.0.0.1:38551 127.0.0.1:53 ESTABLISHED 3715/plugin_host
udp 0 0 127.0.1.1:53 0.0.0.0:* 9324/dnsmasq
udp 0 0 192.168.1.2:53 0.0.0.0:* 1540/named
udp 0 0 172.17.0.1:53 0.0.0.0:* 1540/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 1540/named
udp6 0 0 :::5353 :::* 1285/avahi-daemon:
主持人我想是可行的:
$ host nlab.local
nlab.local has address 192.168.1.2
$ host ns1.nlab.local
ns1.nlab.local has address 192.168.1.12
强制服务器
$ host nlab.local 192.168.1.2
Using domain server:
Name: 192.168.1.2
Address: 192.168.1.2#53
Aliases:
nlab.local has address 192.168.1.2
nlab.local has IPv6 address ::1
和平失败:
$ ping nlab.local
ping: unknown host nlab.local
$ ping ns1.nlab.local
ping: unknown host ns1.nlab.local
这平故障需要几秒钟才能解决。
挖给出了这样的回应:
$ dig nlab.local
; <<>> DiG 9.10.3-P4-Ubuntu <<>> nlab.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61277
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;nlab.local. IN A
;; ANSWER SECTION:
nlab.local. 604800 IN A 192.168.1.2
;; AUTHORITY SECTION:
nlab.local. 604800 IN NS ns.nlab.local.
;; ADDITIONAL SECTION:
ns.nlab.local. 604800 IN A 192.168.1.2
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 03 12:50:55 EDT 2018
;; MSG SIZE rcvd: 88
从Ubuntu 服务器虚拟机:
$ dig nlab.local
; <<>> DiG 9.10.3-P4-Ubuntu <<>> nlab.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 24440
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;nlab.local. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 03 12:59:11 EDT 2018
;; MSG SIZE rcvd: 28
这是虚拟机的 /etc/network/interfaces 文件:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp0s3
iface enp0s3 inet static
address 192.168.1.12
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.2 8.8.8.8 75.75.75.75
日志记录正在运行,服务器正在接收来自桌面应用程序的查询。我没有看到来自虚拟机的任何查询。
在此先感谢您的帮助。